多CPU单串口的控制方法、装置、设备及系统与流程

文档序号:17288224发布日期:2019-04-03 03:44阅读:214来源:国知局
多CPU单串口的控制方法、装置、设备及系统与流程

本申请涉及计算机技术领域,尤其涉及一种多cpu单串口的控制方法、装置、设备及系统。



背景技术:

随着电子技术的发展,硬件产品设计的复杂度越来越高,一台设备中可能会使用多个cpu来实现产品性能,串口作为常用的调试手段,在调试过程中,cpu需要通过串口线连接到串口服务器去查看cpu的打印信息,在多cpu的系统中如果每个cpu都采用一个独立的串口,将会占用很大的面板空间,并且需要通过多根串口线连接到串口服务器,处理起来也非常的繁琐。

为了解决上述问题,现有技术中提出了一些多处理器单串口的方案,比如,有些方案中采用rj45作为常用的串口连接器,在使用过程中只使用了其中的3根串口连接线,其多余的引脚可以用于连接多个cpu的串口,但是这种方案需要特制的串口连接线,且cpu的个数有非常受限。也有的方案通过可编程逻辑器件来编写串口功能模块,通过逻辑器件中的功能模块去对串口通道进行切换。但是这种方案需要新的逻辑功能模块,增加逻辑的复杂度,同时也增加了逻辑器件的开销。



技术实现要素:

有鉴于此,本申请提供了一种多cpu单串口的控制方法、装置、设备及系统。

首先,本申请提供了一种多cpu单串口的控制方法,具体地,所述方法包括:

接收从串口输入的指令;

判断所述指令是否为切换串口通道的指令;

如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

其次,本申请还提供了一种装置,所述装置包括:

接收模块,接收从串口输入的指令;

判断模块,判断所述指令是否为切换串口通道的指令;

控制模块,如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

另外,本申请还提供了一种设备,所述设备包括处理器和存储器,

所述存储器上存储有计算机指令;

所述处理器执行所述计算机指令可实现以下方法步骤:

接收从串口输入的指令;

判断所述指令是否为切换串口通道的指令;

如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

进一步地,本申请还提供了一种多cpu单串口控制系统,其特征在于,所述多cpu单串口控制系统包括主cpu、可编程逻辑器件、max232器件、串口和至少一个从cpu,所述可编程逻辑器件通过串口线将所述主cpu和所述从cpu与所述max232器件相连,所述max232器件与所述串口相连,且所述逻辑编程器件还通过总线与所述主cpu相连,所述主cpu接收到从串口输入的指令后,判断所述指令是否为切换串口通道的指令,如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

本申请可获得以下有益效果:通过将多cpu单串口控制系统的一个cpu作为主cpu,在接收到从串口输入串口通道切换指令后,控制可编程逻辑器件将串口切换至目标cpu。通过这种方法可以实现多cpu单串口的控制,不仅可以节约成本,将串口指令的分析及串口通道切换控制均由主cpu处理,可编程逻辑器件只提供对应通道,实现方便、简洁、不会增加逻辑设计的复杂度。

附图说明

图1是本申请一示例性实施例示出的一种多cpu单串口控制系统示意图;

图2是本申请一示例性实施例示出的一种多cpu单串口控制方法的流程图;

图3是本申请一示例性实施例示出的一种多cpu单串口控制系统示意图;

图4是本申请一示例性实施例示出的一种多cpu单串口控制方法的流程图;

图5是本申请一示例性实施例示出的一种多cpu单串口控制装置的逻辑框图;

图6是本申请一示例性实施例示出的一种设备的逻辑框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

随着电子技术的发展,硬件产品设计的复杂度越来越高,一台设备中可能会使用多个cpu来实现产品性能,串口作为常用的调试手段,在调试过程中,多cpu的系统中如果每个cpu都采用一个独立的串口,将会占用串口服务器的很大的面板空间,并且需要通过多根串口线连接到串口服务器,处理起来也非常的繁琐。

在现有技术中,也有些多cpu单串口的方案,比如,有些方案中采用rj45作为常用的串口连接器,在使用过程中只使用了其中的3根串口连接线,其多余的引脚可以用于连接多个cpu的串口,但是这种方案需要特制的串口连接线,且cpu的个数有非常受限。也有的方案通过可编程逻辑器件来编写串口功能模块,通过逻辑器件中的功能模块去对串口通道进行切换。但是这种方案需要新的逻辑功能模块,增加逻辑的复杂度,同时也增加了逻辑器件的开销。

为了解决上述问题,本申请提供了一种多cpu单串口控制系统,如图1所示,所述多cpu单串口控制系统包括主cpu101、可编程逻辑器件104、max232器件105、串口106和至少一个从cpu102,所述可编程逻辑器件104通过串口线将所述主cpu101和所述从cpu102与所述max232器件105相连,所述max232器件105与所述串口106相连,其中串口106为控制设备面板的端口,控制设备可通过串口向多cpu单串口控制系统输入指令,或者接收多cpu单串口控制系统输出的信息,且所述可编程逻辑编程器件104还通过总线103与所述主cpu101相连,因而所述主cpu可以通过总线与所述可编程逻辑器件进行数据传输。另外,在所述可编程逻辑器件上设置从串口输出的串口线与所述主cpu101的连接是一直导通的,因而所述主cpu可以收到从串口输入的所有指令。所述主cpu接收到从串口输入的指令后,判断所述指令是否为切换串口通道的指令,如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

另外,本申请还提供了一种多cpu单串口的控制方法,所述方法可用于多cpu单串口控制系统,所述多cpu单串口控制系统包括主cpu、可编程逻辑器件、max232器件,串口和至少一个从cpu。图1所示的多cpu单串口控制系统为所述方法的一个应用场景。主cpu是从多个cpu中选取的任一cpu并将其设置为主cpu,其中主cpu与可编程逻辑器件除了通过串口线连接外,还通过一组总线连接,主cpu与可编程逻辑器件通过总线进行数据传输。从串口输出的串口线与主cpu0的连接一直是导通的,因此主cpu可以接收到从串口输入的所有指令。本申请提供的多cpu单串口的控制方法用于主cpu,通过主cpu去控制串口通道在各个cpu中切换,具体实现方法如图2所示,包括步骤s201-s203。

s201、接收从串口输入的指令;

s202、判断所述指令是否为切换串口通道的指令;

s203、如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

当从串口输入一个指令时,由于从串口输入的指令可能是串口通道切换指令、查询cpu状态的指令、查询端口状态的指令或者是各种可维护指令,所以主cpu接收到从串口输入的指令时,需要先判断一下这个指令是否是串口通道切换指令,如果是,则分析所述指令并确定所述指令是要将串口通道切换至哪个cpu。一般在设备启动后,默认是将主cpu的串口通道设置成导通的,在根据指令确定目标cpu后,主cpu会控制可编程逻辑器件将串口通道切换至目标cpu。

可编程逻辑器件(programmablelogicdevice),是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,以实现某种特定功能。可以通过可编程逻辑器件将主cpu和从cpu与串口连接起来,并通过主cpu来控制可编程逻辑器件来实现串口通道在各个cpu之间的切换。在一个实施例中,本申请的可编程逻辑器件可以是pal器件、gal器件、cpld器件和/或fpga器件。

可编程逻辑器件中有不同的寄存器,用于存放各种指令和数据。在一个实施例中,根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu具体包括:根据所述指令修改所述可编程逻辑器件的串口通道状态寄存器的状态信息,以使所述可编程逻辑器件根据修改后的状态信息将串口通道切换至目标cpu。可编程逻辑器件中可以设置一个串口通道状态寄存器,串口通道状态寄存器存储有串口通道的状态信息,即此时哪个cpu的串口通道是导通的。可以通过串口通道状态寄存器存储的数值来表示串口通道的状态信息,比如数值为000时,主cpu的串口通道是导通的,数值为001时,从cpu1的串口通道是导通的,数值为010时,从cpu2的串口通道是导通的。一般串口通道切换的指令会告诉主cpu需要将串口通道状态寄存器的数值修改成什么数值,然后主cpu在判断收到的指令为串口通道切换的指令时,可以分析该指令,得到要修改的数值后,将可编程逻辑器件的串口通道状态寄存器的数值修改为相应的数值,然后可编程逻辑器件会查询记录有寄存器中的数值与串口通道的对应关系的一张表,根据修改后的数值将串口通道切换到相应的从cpu。比如,从串口输入的指令是要将可编程逻辑器件的串口通道状态寄存器的数值修改为010,主cpu收到指令后,会分析并执行指令,将可编程逻辑器件的串口通道状态寄存器的数值修改为010,可编程逻辑器件的串口通道状态寄存器的数值被修改为010后,可编程逻辑器件会查询记录有数值与串口通道的对应关系表,知道数值010对应的串口通道是从cpu2,所以会将串口通道切换到从cpu2。

由于串口通道切换的指令都是由主cpu执行的,因而主cpu在判断指令为串口通道切换指令后都会执行这个指令。在某些实施例中,如果主cpu在收到从串口输入的指令后,判断该指令不属于串口通道切换的指令,这时候这个指令就有可能是发给主cpu的指令,也有可能是发给从cpu的指令,所以主cpu需要先判断这个指令是否是发给自己的指令。如果是发送给主cpu的指令,则主cpu执行这个指令,比如,这个指令是要打印cpu的信息,则会输出主cpu的信息。如果判断该指令不是发送给主cpu的指令,则主cpu不会执行这个指令,以便接收到该指令的从cpu会执行该指令,比如输出对应的从cpu的信息。

由于从串口给某个cpu发送指令需要该cpu执行时,可以先将串口切换到对应的cpu,再发送需要该cpu执行的指令,当要另外一个cpu执行指令时,则将串口通道切换到另一个cpu。所以,在某个实施例中,判断这个指令是否是发给主cpu的指令可以通过读取可编程逻辑器件上的串口通道状态寄存器的状态信息来判断。主cpu根据状态信息发现此时导通的串口切换通道为主cpu的通道,则知道其他的从cpu的串口通道是不导通的状态,说明这个指令只能由自己执行。当然如果主cpu根据状态信息发现此时导通的串口切换通道为从cpu1的通道,则主cpu知道这个指令是发送从cpu1的指令,因而主cpu不会执行该指令,而由于从cpu1的串口通道是导通的,因而从cpu1也可以接收到该指令,所以从cpu1会执行该指令。例如,主cpu读取可编程逻辑器件上的串口通道状态寄存器的状态信息,发现此时数值为000时,则知道此时主cpu的串口通道是导通的,这个指令为发送给主cpu的指令,如果读取到的串口通道状态寄存器的数值为001,则知道此时从cpu1的串口通道是导通的,该指令时发送给从cpu1的指令,因而主cpu不执行该指令,从cpu1也会收到该指令并执行该指令。由于只有主cpu和串口通道导通的从cpu才会收到从串口输入的指令,而主cpu又可以判断这个指令是否是自己的指令再决定是否执行,这样就不会造成指令的冲突。

由于主cpu在启动之后才可以执行串口通道切换的指令,而在设备启动过程中,就只能监测主cpu的打印信息而无法监测其他从cpu的信息。但是,在调试过程中,我们常常需要检测某个特定的cpu启动时的打印信息,这时候我们可以通过将可编程逻辑器件上的cpu的串口强制配置引脚上拉,使某个cpu的串口通道强制导通,以监测该cpu启动时的打印信息。所以,在某个实施例中,主cpu在接收到指令时,还需要先判断此时可编程逻辑器件上的从cpu的串口强制配置引脚是否处于强制配置状态,如果是,说明该指令是串口强制配置引脚处于强制配置状态的这个从cpu需要执行的,因而主cpu不会执行该指令,而串口强制配置引脚处于强制配置状态的从cpu也会收到这个指令,并执行。

在某个实施例中,从cpu的串口强制配置引脚的状态可以从可编程逻辑器件的某个特定的寄存器中读取,同样可以在寄存器中通过数值去表示串口强制配置引脚的状态,比如0表示处于强制配置状态,1处于非强制配置状态。

为了进一步解释本申请的多cpu单串口的控制方法,以下结合图3和图4再以一个具体实施例做详细说明。

在一个多cpu单串口控制系统中,如图3所示,系统包含4个cpu,即cpu0301、cpu1302、cpu2303、cpu3304,将cpu0设置为主cpu,cpu1、cpu2、cpu3即为从cpu。其中4个cpu通过一个可编程逻辑器件fpga306与一个max232芯片307相连,max232芯片306连接着控制设备的端口,即串口307,4个cpu与fpga通过串口线连接,且cpu0与fpga还连接有一根总线305,cpu0与fpga通过总线传输数据。

如图4所示,当从串口输入一个指令时(s401),cpu0会收到这个指令,cpu0首先会读取fpga上的一个特定寄存器的数值来判断从cpu的串口强制配置引脚是否处于强制状态(s402),这个特定寄存器上存储fpga上从cpu的串口强制配置引脚的状态,如果寄存器的数值为0,则说明各cpu串口强制配置引脚处于非强制配置状态,如果为1则说明有某个从cpu的串口强制配置引脚处于强制配置状态。cpu0读取数值后,若判断此时从cpu串口强制配置引脚处于强制状态,则cpu0不执行这个状态,串口强制配置引脚处于强制配置状态的从cpu也会收到该指令,并执行(s403)。若判断此时从cpu串口强制配置引脚处于非强制状态,则cpu0会判断该指令是否为切换串口通道的指令(s404),如果是,则cpu0会根据该指令修改fpga上串口状态寄存器的数值,fpga根据数值将串口通道切换至对应从cpu(s405)。其中,串口通道状态寄存器的数值表示各cpu串口通道的状态,数值为000则表示cpu0的串口通道导通,数值为001则表示cpu1的串口通道导通,数值为010则表示cpu2的串口通道导通,数值为100则表示cpu3的串口通道导通。如果指令是要将寄存器数值修改成001,则cpu0会将寄存器数值修改成001,fpga会根据修改后的数值将串口通道切换到cpu1。如果cpu0判断该指令不是切换串口通道的指令,则cpu0则会读取串口状态寄存器上的数值,根据数值判断该指令是否为发送给cpu0的指令(s406),比如,如果数值为000,则说明此时cpu0的串口通道是导通的,则这个指令为cpu0的指令;如果数值为001,则说明此时cpu1的串口通道是导通的,则这个指令为cpu1的指令;如果数值为010,则说明此时cpu2的串口通道是导通的,则这个指令为cpu2的指令,如果数值为100,则说明此时cpu3的串口通道是导通的,则这个指令为cpu3的指令。cpu0根据读取的数值判断该指令为自己的指令后,则执行该指令(s407),如果过该指令不是自己的指令,则cpu0不执行该指令。而收到该指令的从cpu会执行该指令(s408)。

与前述多cpu单串口的控制方法的实施例相对应,本申请还提供了多cpu单串口的控制装置,请参考图5,所述装置500包括:

接收模块501,接收从串口输入的指令;

判断模块502,判断所述指令是否为切换串口通道的指令;

控制模块503,如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

在一个实施例中,根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu具体包括:

根据所述指令修改所述可编程逻辑器件的串口通道状态寄存器的状态信息,以使所述可编程逻辑器件根据修改后的状态信息将串口通道切换至目标cpu。

在一个实施例中,所述方法还包括:

如果所述指令不是切换串口通道的指令,则判断所述指令是否为发送给主cpu的指令;

如果是,则执行所述指令;

如果不是,则丢弃所述指令,以便接收到所述指令的从cpu执行所述指令。

在一个实施例中,判断所述指令是否为发送给主cpu的指令具体包括:

读取所述可编程逻辑器件的串口通道状态寄存器的状态信息;

根据所述状态信息判断所述指令是否为发送给主cpu的指令。

在一个实施例中,在判断所述指令是否为切换串口通道的指令之前,还包括:

判断所述从cpu的串口强制配置引脚是否处于强制配置状态,其中,所述串口强制配置引脚位于所述可编程逻辑器件上;

如果是,则丢弃所述指令,以便串口强制配置引脚处于强制配置状态的从cpu执行所述指令。

在一个实施例中,所述从cpu的串口强制配置引脚是否处于强制配置状态从所述可编程逻辑器件上的寄存器中读取。

在一个实施例中,所述可编程逻辑器件包括:pal器件、gal器件、cpld器件和/或fpga器件。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

从硬件层面而言,如图6所示,为本说明书的多cpu单串口控制装置所在设备的一种硬件结构图,除了图6所示的处理器601、网络接口604、内存602以及非易失性存储器603之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等;从硬件结构上来讲该设备还可能是分布式的设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。

所述非易失性存储器603存储有用于存储可执行的计算机指令,处理器604执行所述计算机指令时实现以下步骤:

接收从串口输入的指令;

判断所述指令是否为切换串口通道的指令;

如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

进一步的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现以下方法步骤:

接收从串口输入的指令;

判断所述指令是否为切换串口通道的指令;

如果是,则根据所述指令控制所述可编程逻辑器件将串口通道切换至目标cpu。

本申请对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1