CN116361224A - 一种多cpu同步系统状态的方法及工控机 - Google Patents
一种多cpu同步系统状态的方法及工控机 Download PDFInfo
- Publication number
- CN116361224A CN116361224A CN202310356478.7A CN202310356478A CN116361224A CN 116361224 A CN116361224 A CN 116361224A CN 202310356478 A CN202310356478 A CN 202310356478A CN 116361224 A CN116361224 A CN 116361224A
- Authority
- CN
- China
- Prior art keywords
- cpus
- cpu
- fpga
- serial port
- receiving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000004891 communication Methods 0.000 claims description 11
- 238000007639 printing Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000007799 cork Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供了一种多CPU同步系统状态的方法及工控机,其中方法包括:各个CPU之间通过串口进行通信,指定CPU在加载FPGA逻辑后发送信号给其他CPU,其他CPU返回接收成功信号。各个CPU之间通过串口进行通信实现在FPGA加载完成后的同步,协议简单、占用资源少,不需要额外的转换设备。在同步过程中,指定CPU和其他CPU两次握手,增加了数据传递的可靠性。
Description
技术领域
本发明涉及多CPU同步技术,尤其涉及一种多CPU同步系统状态的方法及工控机。
背景技术
随着现代各种技术的发展,新应用的不断出现,工控机也在不断的进行升级,其特点也越来越多,越来越丰富,出现了单台工控机同时搭载多个CPU的机型,来满足客户在一些特定环境下的使用。
随着计算机行业的高速发展,为满足客户的各种需求,CPU和外设的搭配也更多样化,其中CPU+FPGA的设计方案被越来越多的客户所喜爱。
FPGA(Field-Programmable Gate Array)即现场可编程门阵列,是一种可编程的逻辑器件,以并行运算为主,以硬件描述语言来实现,通常用于在硬件级别上实现特定的功能。FPGA工程师们可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里,可以按照设计者而改变。与专用电路相比,FPGA具有更高的灵活性,因此,FPGA被广泛应用于数字信号处理、高速通信和嵌入式系统等领域。
然而,发明人发现,当有多个CPU时,第一个CUP进入系统后会通过SPI总线加载FPGA逻辑,用时大约30s左右,而其他CPU会在第一个CPU加载FPGA逻辑时,直接进入系统各自运行开机启动的应用程序,但这时FPGA还未加载完成,FPGA就不能实现转发功能,会导致应用程序运行时FPGA不能及时转发,应用程序就报错,且不能恢复。
现有技术中,CPU通常通过CPU socket与主板连接,CPU socket是指中央处理器(CPU)插座,它是安装在主板上的一个接口。CPU socket通常包括数百个小针脚,这些针脚是CPU和主板之间的物理连接点,它们允许电信号在两个设备之间传递。不同的CPU需要不同类型的CPU socket,必须选择与主板兼容的CPU socket,同时主板也需要额外的硬件去连接这些CPU socket到RAM和一些其它的资源。这其中涉及的协议复杂,如果CPU之间需要彼此通信同步,需要占用较多内存和CPU性能资源,会造成很大的系统开销。
发明内容
本发明的目的在于提供一种多CPU同步系统状态的方法,各个CPU之间通过串口通信,实现多个CPU进入系统后执行状态的同步,并且协议简单、资源占用少。
本发明的另一目的在于提供一种基于上述方法的多CPU工控机。
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
根据本发明的一方面,提供了一种多CPU同步系统状态的方法,包括以下步骤:
步骤1、获取系统启动参数中的boardid值,并根据不同的boardid值设置不同的GPIO和CPU名称;
步骤2、如果当前CPU是指定CPU,则配置串口参数,加载FPGA逻辑,并通过串口循环发送FPGA加载完成信号到其他CPU,同时等待接收到它们发送的接收成功信号,如果收到其他CPU发送的接收成功信号,则退出循环;
步骤3、如果当前CPU不是指定CPU,则配置串口参数,然后循环检查接收到的字符串是否包含FPGA加载完成信号,如果包含,则打印相应的提示信息,然后通过串口循环发送接收成功信号到串口,最后结束进程;如果未接收到FPGA加载完成信号超过预设等待时间,则打印相应的提示信息并结束进程。
在一实施例中,所述步骤3中的预设等待时间为50s~60s。
在一实施例中,所述步骤3中循环发送接收成功信号到串口具体为:每隔100ms发送一次接收成功信号,共发送10次。
在一实施例中,所述boardid值通过在处理器监控程序中检测CPU上2个固定GPIO口的电平值来计算得出。
根据本发明的第二方面,提供了一种与其他CPU同步系统状态的方法,由指定CPU执行,包括以下步骤:
a.加载FPGA;
b.通过串口与其他CPU通信,发送FPGA加载完成信号;
c.接收其他CPU发送的接收成功信号;
d.根据接收成功信号判断其他CPU是否已经接收到FPGA加载完成信号;
e.如果其他CPU已经全部接收到FPGA加载完成信号,则完成同步。
根据本发明的第三方面,提供了一种多CPU工控机,包括多个CPU和一个FPGA,各个CPU之间通过串口连接,其中一个CPU为指定CPU;
指定CPU通过SPI总线与FPGA通信,其他非指定CPU通过RGMII接口与FPGA通信;
各个CPU之间通过以下方法实现加载FPGA之后的系统状态同步:
步骤1、获取系统启动参数中的boardid值,并根据不同的boardid值设置不同的GPIO和CPU名称;
步骤2、如果当前CPU是指定CPU,则配置串口参数,加载FPGA逻辑,并通过串口循环发送FPGA加载完成信号到其他CPU,同时等待接收到它们发送的接收成功信号,如果收到其他CPU发送的接收成功信号,则退出循环;
步骤3、如果当前CPU不是指定CPU,则配置串口参数,然后循环检查接收到的字符串是否包含FPGA加载完成信号,如果包含,则打印相应的提示信息,然后通过串口循环发送接收成功信号到串口,最后结束进程;如果未接收到FPGA加载完成信号超过预设等待时间,则打印相应的提示信息并结束进程。
在一实施例中,所述串口为USART串口,类型为UART。
本发明实施例的有益效果是:各个CPU之间通过串口进行通信实现在FPGA加载完成后的同步协议简单、占用资源少,不需要额外的转换设备。在同步过程中,由指定CPU在加载FPGA逻辑后发送信号给其他CPU,其他CPU返回接收成功信号,通过两次握手增加了数据传递的可靠性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1是本申请方法实施例的步骤示意图;
图2是本申请工控机实施例的多个CPU与FPGA的连接关系示意图。
具体实施方式
以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。
在本实施例中,提供一种三个CPU同步系统状态的方法,需要说明的是,CPU数量不限(但至少有两个)。同时,CPU的型号不限,例如可以为英特尔的LGA 1200CPU、AMD Ryzen5000系列CPU等等。在本实施例中采用中国龙芯中科生产的龙芯2k1000(下文中简称为ls2k)CPU,其中ls2kCPU2为指定CPU。
具体而言,该方法包括以下步骤:
1.1,首先通过cat/proc/cmdline命令获取boardid。
1.2,根据不同的boardid参数,分别设置DONE_GPIO和CPU_NAME变量。
1.3,定义kill_tty_process()函数,用于终止指定串口/dev/ttyS3上的进程。
1.4,对于boardid等于2的CPU,通过串口/dev/ttyS3向ls2kCPU1循环发送FPGA加载完成的信号“fpgaload_success”,并通过串口/dev/ttyS6向ls2k CPU3循环发送相同的信号。
1.5,对于boardid等于0和3的ls2k CPU1和ls2k CPU3,如果接收到了FPGA加载完成的信号“fpgaload_success”,则输出提示信息,并通过/dev/ttyS3发送“cpu_receive_success”信号,每隔100ms反馈一次,共持续十次。
1.6,如果/tmp/receive_uart.log文件中未出现fpgaload_success信号,则等待50秒,如果仍未出现信号,则输出超时提示信息并终止进程。
1.7,同时ls2k CPU2在/tmp/cpu1_rev_uart.log和/tmp/cpu3_rev_uart.log文件中监听“cpu_receive_success”信号的出现。
1.8,如果/tmp/cpu1_rev_uart.log和/tmp/cpu3_rev_uart.log文件中都出现了“cpu_receive_success”信号,则输出提示信息并退出循环。
其中,boardid的值是通过在PMON(处理器监控程序)中检测CPU上2个固定GPIO口的电平值来计算得出的。GPIO是通用输入/输出引脚,可以将它们配置为输入或输出以进行通信。在这种情况下,GPIO口的电平值被用来识别所连接的板子类型,以便后续的处理操作能够正确执行。
各个CPU的boardid值与gpio电平值的关系如下:
CPU | boardid值 | gpio0电平 | gpio1电平 |
ls2k CPU1 | 0 | 0 | 0 |
ls2k CPU2 | 2 | 0 | 1 |
ls2k CPU3 | 3 | 1 | 1 |
本方法使用USART串口来实现CPU中间的通信,串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口。在串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。在本方案中,串口使用波特率115200,数据位8位,无校验位,有停止位。
本方法可通过软件脚本的形式实现。以下提供一个具体的脚本实例,由于涉及各个CPU协同,通过表格形式结合图1阐述各个步骤:
图2展示了一种具有3个CPU的工控机的控制模块连接示意图,如图2所示,包括多个CPU和一个FPGA,各个CPU之间通过串口串联,其中ls2kCPU2为指定CPU;指定CPU通过SPI总线与FPGA通信,其他非指定CPU通过RGMII接口与FPGA通信。其中,uart_rx表示串口接收线;uart_tx表示串口发送线;RGMII表示ls2k CPU1和ls2k CPU3上的网络接口;SPI表示ls2k CPU上的SPI总线;FPGA表示现场可编程门阵列;phy表示将网络的数字信号转换为模拟信号输出。
综上所述,本方案使用串口进行通信实现各个CPU间系统状态的同步,。相较于其他通信方式,串口通信占用的内存和CPU性能资源较少,同时因为CPU中的串口数量很多,一般不用担心不够用的情况。此外,串口协议是最常用的协议之一,软件开发者熟练掌握。在CPU间直接使用串口直连的情况下,不需要额外的转换设备,所需的硬件设计成本更低。在数据传递的过程中,接收方CPU会回复十个包来响应接收,实现了CPU间串口通信的两次握手,极大增加了传递数据的可靠性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
以上所述仅为本申请的较佳实例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (7)
1.一种多CPU同步系统状态的方法,其特征在于,包括以下步骤:
步骤1、获取系统启动参数中的boardid值,并根据不同的boardid值设置不同的GPIO和CPU名称;
步骤2、如果当前CPU是指定CPU,则配置串口参数,加载FPGA逻辑,并通过串口循环发送FPGA加载完成信号到其他CPU,同时等待接收到它们发送的接收成功信号,如果收到其他CPU发送的接收成功信号,则退出循环;
步骤3、如果当前CPU不是指定CPU,则配置串口参数,然后循环检查接收到的字符串是否包含FPGA加载完成信号,如果包含,则打印相应的提示信息,然后循环发送接收成功信号到串口,最后结束进程;如果未接收到FPGA加载完成信号超过预设等待时间,则打印相应的提示信息并结束进程。
2.根据权利要求1所述的多CPU同步系统状态的方法,其特征在于,所述步骤3中的预设等待时间为50s~60s。
3.根据权利要求1所述的多CPU同步系统状态的方法,其特征在于,所述步骤3中循环发送接收成功信号到串口具体为:每隔100ms发送一次接收成功信号,共发送10次。
4.根据权利要求1所述的多CPU同步系统状态的方法,其特征在于,所述boardid值通过在处理器监控程序中检测CPU上2个固定GPIO口的电平值来计算得出。
5.一种与其他CPU同步系统状态的方法,由指定CPU执行,其特征在于,包括以下步骤:
a.加载FPGA;
b.通过串口与其他CPU通信,发送FPGA加载完成信号;
c.接收其他CPU发送的接收成功信号;
d.根据接收成功信号判断其他CPU是否已经接收到FPGA加载完成信号;
e.如果其他CPU已经全部接收到FPGA加载完成信号,则完成同步。
6.一种多CPU工控机,包括多个CPU和一个FPGA,其特征在于:
各个CPU之间通过串口连接,其中一个CPU为指定CPU;
指定CPU通过SPI总线与FPGA通信,其他非指定CPU通过RGMII接口与FPGA通信;
各个CPU之间通过以下方法实现加载FPGA之后的系统状态同步:
步骤1、获取系统启动参数中的boardid值,并根据不同的boardid值设置不同的GPIO和CPU名称;
步骤2、如果当前CPU是指定CPU,则配置串口参数,加载FPGA逻辑,并通过串口循环发送FPGA加载完成信号到其他CPU,同时等待接收到它们发送的接收成功信号,如果收到其他CPU发送的接收成功信号,则退出循环;
步骤3、如果当前CPU不是指定CPU,则配置串口参数,然后循环检查接收到的字符串是否包含FPGA加载完成信号,如果包含,则打印相应的提示信息,然后循环发送接收成功信号到串口,最后结束进程;如果未接收到FPGA加载完成信号超过预设等待时间,则打印相应的提示信息并结束进程。
7.根据权利要求6所述的多CPU工控机,其特征在于:所述串口为USART串口,类型为UART。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310356478.7A CN116361224A (zh) | 2023-04-06 | 2023-04-06 | 一种多cpu同步系统状态的方法及工控机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310356478.7A CN116361224A (zh) | 2023-04-06 | 2023-04-06 | 一种多cpu同步系统状态的方法及工控机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116361224A true CN116361224A (zh) | 2023-06-30 |
Family
ID=86907682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310356478.7A Pending CN116361224A (zh) | 2023-04-06 | 2023-04-06 | 一种多cpu同步系统状态的方法及工控机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116361224A (zh) |
-
2023
- 2023-04-06 CN CN202310356478.7A patent/CN116361224A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11175928B2 (en) | Master-slave configuration communication protocol, method for improving compatibility, and electronic device | |
WO2007118741A1 (en) | Computer hardware fault diagnosis | |
CN103714029A (zh) | 新型二线同步通信协议及应用 | |
CN110401466B (zh) | 一种基于高速信号切换芯片的数据传输方法、装置及介质 | |
CN111131542A (zh) | 电池地址管理方法及电池管理系统 | |
CN113792003A (zh) | 单总线通信单元、系统及方法 | |
CN113626365A (zh) | 一种基于spi总线的通信方法 | |
CN116361224A (zh) | 一种多cpu同步系统状态的方法及工控机 | |
CN113900985B (zh) | Io和spi复用芯片、复用辅助芯片和数据交互方法 | |
CN113282532B (zh) | 一种通信装置、通信装置的通信方法和电子设备 | |
CN110096002A (zh) | 一种基于canfd总线的自动化测试系统及测试方法 | |
CN112615739B (zh) | 一种多主机应用环境下ocp3.0网卡的适配方法及系统 | |
CN110687854B (zh) | 一种pa总线控制器以及一种pa总线控制系统 | |
CN111723032B (zh) | 一种中断管控方法及电子设备 | |
CN116684389B (zh) | 地址自动分配方法及具有其的主机、从机和通信设备 | |
CN113961489B (zh) | 数据访问的方法、装置、设备及存储介质 | |
CN116185936B (zh) | 一种spi通信数据收发异常检测控制系统及检测方法 | |
CN114584630B (zh) | 一种基于现场总线协议的通信方法及设备 | |
CN217428141U (zh) | 网卡、通信设备及网络安全系统 | |
WO2024055876A1 (zh) | 多个设备ota升级方法及装置 | |
CN107066412B (zh) | 一种通信电路及其方法 | |
CN116680224A (zh) | 不对称PCIe总线设计方法、装置、总线装置及系统 | |
CN117555825A (zh) | 信号发送方法、信号接收方法及主从芯片共址访问系统 | |
CN117834750A (zh) | 获取协议数据的装置、方法、系统、设备、介质及服务器 | |
CN103927273A (zh) | 内存热中断侦测系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |