多核处理器复用串口的方法及串口复用装置的制作方法

文档序号:6580674阅读:230来源:国知局
专利名称:多核处理器复用串口的方法及串口复用装置的制作方法
技术领域
本发明涉及通信技术领域,尤指一种使用单个串口监控多核处理器多个处 理核心运4亍状态的多核处理器复用串口的方法及串口复用装置。
背景技术
目前,嵌入式系统一般都没有可视化的监视器,只能通过外接字符终端监 控系统中设备的运行状态,字符终端与嵌入式设备最常用的连接方式为串口 (串行通信接口,用于串行式逐位元数据传输)连接。字符终端通常使用PC机终端软件实现,通过PC机的串口设备与被监控的嵌入式设备的串口设备之间的串口连接来实现监控,如图l所示即为嵌入式设备与PC机的连接关系。嵌入式设备的系统软件与终端软件建立串口通信连接后,用户或者开发人员就通过终端软件监控嵌入式设备系统软件的运行状态 了。具体通过嵌入式设备的系统軟件接收终端软件发送的监控命令,以及向终 端软件发送系统运行状态信息的方式实现。随着互联网技术的发展,嵌入设备中配置单核心处理器已经不能满足高速网络应用对处理性能的需求了。如图2所示,在一个芯片上集成多个处理核心、 能并行地运行不同的程序多核心处理器(多核处理器)在网络通信领域得到广 泛应用。如图2所示,多核处理器通常是共享内存的,如图中C0RE1、CORE2........ COREN多个处理核心通过内部互联总线共享一个内存(Memory )。由于目前的嵌入式设备一般都只提供一个串口 ,在对配置多核处理器的嵌 入式设备进行监控时,其多个处理核心都需要通过同一个串口与终端软件进行 信息交互,当多个处理核心都需要向外输出监控信息(包括用户所需的系统状态信息、开发人员所需的调试信息等等)时,则需要竟争使用。现有技术中, 一般是通过加锁的方式来解决多个处理核心之间的竟争关系。如图3所示,多个处理核心COREl、 CORE2........ COREN竟争调取字符串打印函数,抢到锁的处理核心占用字符串打印函数,执行图中所述的加锁、 将字符串逐个输出到串口,然后解锁的才喿作。 现有技术的处理方式存在以下问题(1) 由于串口通信速率比较低,打印字符的速度比较慢,逐个打印字符 串将消糾目当长的时间。再加上加、解锁所耗费的时间,导致一个处理核心抢 到锁进入上述字符串打印函数之后,其他处理核心则由于无法4爪住锁而处于长 时间的忙等待状态。这种长时间的等待,对于处理高速报文转发业务的多个处 理核心而言,是很难承受的,其大大影响系统的运行效率,降低了系统的并发 性能。(2) 由于多个处理核心竟争同一个串口,导致输出信息紊乱。由于各个处理核心都调用相同的字符串打印函数,每次抓到锁均只能输出 一个字符串,而每完成一次监控过程均需要输出包含多个字符串的一组监控信 息,因此当对多个处理核心进行监控时,相互之间的监控信息输出可能会相互 凌乱交叉,导致用户或者开发人员在字符终端中无法获取到清楚输出信息,甚 至无法对系统实施有效监控。举例说明如下例如处理核心CORE1需要输出一组监控信息,包括三个字符串(这里 以符号代替):COREl—STR1 、CORE1—STR2、COREl_STR3。而处理核心CORE2 也需要输出一组监控信息,也包括三个字符串C0RE2_STR1、 CORE2—STR2、 CORE2一STR3。设字符串打印函数为PRINT,则COREl的监控信息输出程序为P麵T("C0RE1一STR1");PRINT("CORE 1—STR2");PRINT("COREl一STR3");同样,CORE2的监控信息输出程序为 PRINT("CORE2_STRl"); P画T("CORE2—STR2,,); PRINT("CORE2一STR3");但是,由于COREl、 CORE2是并行运行各自的监控程序,上述调用字符 串打印函数的时间顺序可相互交叉,最终打印到字符终端的输出信息随调用程 序顺序的不同,可能出现多种情况,例如可能输出如下顺序的输出信息CORE2—STR1CORE1—STR1COREl一STR2CORE2—STR2COREl_STR3CORE2一STR3可见,上述最终输出信息中,CORE1与CORE2的监控信息交叉紊乱了。 当多核处理器的处理核心数目较多,且监控信息较复杂时,交叉紊乱后的信息 可能就会变得无法读取,导致用户及开发人员无法对系统实施有效监控。发明内容本发明实施例提供一种多核处理器复用串口的方法及串口复用装置,用以 解决现有技术中多个处理核心复用串口时运行效率低、输出信息混乱的问题。一种多核处理器复用串口的方法,预先设置若千监控信息输出队列,所述 监控信息输出队列与所述多核处理器包含的多个处理核心——对应;该方法包 括获取所述处理核心输出的监控信息,将所述监控信息传送到与所述处理核 心对应的监控信息输出队列中暂存;当确定所述监控信息输出队列中暂存有一组监控信息时,将该组监控信息 通过共用的串口输出。一种串口复用装置,包括输出代理模块、输出主控模块和若干监控信息 输出队列,所述监控信息输出队列与多核处理器包含的多个处理核心——对应;输出代理模块,用于获取所述处理核心输出的监控信息,将所述监控信息传送到与所述处理核心对应的监控信息输出队列中暂存;所述监控信息输出队列,用于暂存所述输出代理模块传送的所述处理核心输出的监控信息;所述输出主控模块,用于当确定所述监控信息输出队列中暂存有一组监控 信息时,将所述一组监控信息通过共用的串口输出。本发明实施例提供的多核处理器复用串口的方法及串口复用装置,通过预 先设置若干与多核处理器包含的多个处理核心——对应的监控信息输出队列, 实现将各个处理核心的输出监控信息进行分离和暂存,当某个处理核心的一组 监控信息完全暂存到对应的监控信息输出队列后,再通过共用的串口进行输 出。在多核处理器运行并行程序、多个处理核心共用一个串口时,可以并行获 取多个处理核心输出的监控信息,并通过设置的监控信息输出队列分别暂存每 个处理核心的监控信息,使得每个处理核心可以及时输出监控信息,避免了在 其他处理核心输出监控信息时进行等待的过程,从而避免了多个处理核心竟争 同一个串口而造成的效率低下和输出信息混乱的问题,能够实现复用串口的多个处理核心的监控信息的完整、正确的输出,避免了输出信息混乱,提高了监 控效率。


图1为现有技术中嵌入式设备与PC机的连接关系示意图; 图2为现有技术中多核处理器的结构示意图; 图3为现有技术中多核处理器共用一个串口的方法流程图; 图4为本发明实施例中多核处理器复用串口的方法流程图;图5为本发明实施例中串口复用装置的结构示意图; 图6为本发明实施例中输出代理才莫块的具体操作流程图; 图7为本发明实施例中输出主控模块的具体操作流程图。
具体实施例方式
本发明实施例提供的多核处理器复用串口的方法,预先设置监控信息输出 队列,其中设置的监控信息输出队列与多核处理器包含的多个处理核心——对 应,通过将各个处理核心的监控信息暂存到各自对应的监控信息输出队列中, 当一组监控信息暂存完毕后,再进行串口输出,以避免竟争和防止信息输出紊 乱。
采用上述方式对多核处理器进行状态监控的具体流程如图4所示,执行步 骤如下
步骤S1:获取处理核心输出的监控信息,将获取到的监控信息传送到与该 处理核心对应的监控信息输出队列中。具体包括
获取输出监控信息的处理核心的ID号,根据ID号确定与该处理核心对应 的监控信息输出队列,然后将获取到的监控信息传送给确定出的监控信息输出 队列。
该步骤中可以并行获取多个处理核心输出的监控信息。也就是说,当多个 处理核心同时又监控信息需要输出时,可以并行处理,并将各处理核心输出的 监控信息分别传送到对应的监控信息输出队列中,这样使得每个处理核心可以 及时输出监控信息,避免了在其他处理核心输出监控信息时进行等待的过程。 步骤S2:监控信息输出队列将接收到的监控信息按顺序暂存。 监控信息输出队列接收到传送过来的监控信息时,将接收到的监控信息按 顺序暂存起来。
步骤S3:确定监控信息输出队列中是否暂存有一组监控信息。 若是,执行步骤S4;否则,执行步骤S6。判断步骤Sl获取到的监控信息中是否包含有设定的监控信息结束符,当
获取到的监控信息中包含有设定的监控信息结束符时,确定发送该监控信息的
所属处理核心所对应的监控信息输出队列中暂存有完整的一组监控信息;否 则,确定各监控信息输出队列中均未暂存有完整的一组监控信息。
由于处理核心针对每一次监控流程输出的监控状态消息一般包含多个字 符串,即每次会输出一组监控状态消息,并且可能分多次输出,所以不能因一 个字符串的输出结束作为一组监控信息的结束标志,因此,需要设置一个特殊 的控制字符作为一组监控信息的结束标志,例如,设置一个结束符 CHAR—INFO_END,当输出的监控信息中包含该结束符时,认为本次监控流程 要输出的一组监控信息已经输出完毕。
步骤S4:判断是否允许输出该组监控信息。若是,则执行步骤S5;否贝寸, 执行步骤S6。
预先设置用于控制是否允许输出各处理核心的监控信息的允许输出标志;
判断是否允许输出该组监控信息,具体包括检查获取到的监控信息所属 的监控信息输出队列所对应的处理核心的允许输出标志,当检测到允许输出标 志时确认允许输出该组监控信息;否则认为不允许输出该组监控信息。
该步骤为可选步骤,可以设置当暂存有完整的 一组监控信息时默认为可以 输出,则不必再执行该步骤。
步骤S5:将上述一组监控信息通过共用的串口输出。
共用的串口包括RS-232-C、 RS-422、 RS485、 USB等串行通讯接口,其 中,RS-232-C是目前最常用的一种串行通讯接口,也称标准串口。
此时输出是某一个处理核心的一组监控信息,其能够按照正确的顺序完整 的输出,不会与其他处理核心的监控信息发生混乱。
由于采用了与每个处理核心对应的监控信息输出队列,并设置结束符来确 定处理核心已发送完一组监控信息,因此,若一组监控信息中包含三个字符串 STR1、 STR2、 STR3,则每次通过串口输出的一组监控信息如下PRINT("STR1"); PRINT("STR2,,); P腿T("STR3"); PRINT(CHAR一INFO一END)。 步骤S6:结束。
当有处理核心要输出监控信息时,均会启动上述流程;当多个处理核心同 时有监控信息需要输出时,可以并行处理。
本发明实施例提供的上述多核处理器复用串口的方法通过构建的串口复 用装置实现,如图5所示,该串口复用装置包括输出代理模块IO、预先设定 的若干监控信息输出队列20和输出主控模块30,其中,监控信息输出队列20 与多核处理器包含的多个处理核心40——对应。
即每个处理核心(CORE)设置有一个私有的监控信息输出队列20。对于 具备N个CORE的嵌入式设备,则需要N个监控信息输出队列与之——对应,
例如,图5中所示的处理核心CORE 1、 CORE 2........ COREN,分别对应
着预先设置的监控信息输出队列Ql、 Q2........ QN。
输出代理模块10,用于获取处理核心40输出的监控信息,将获取到的监 控信息传送到与该处理核心40对应的监控信息输出队列20中暂存。也就是i兌, 输出代理模块10可以^皮各个处理核心40调用,接收当前调用的处理核心输出 的监控信息,并确定其对应的监控状态输出队列20,以便实现将其暂存到正确 的监控状态输出队列20中。
较佳的,上述输出代理模块10,还用于当获取到的监控信息中包含有设 定的监控信息结束符时,确定发送该监控信息的所属处理核心40所对应的监 控信息输出队列20中暂存有一组监控信息,并发送通告消息给所述输出主控 模块30。
较佳的,上述输出代理模块10,具体包括获取单元101和暂存单元102。 获取单元101,用于获取输出监控信息的处理核心的ID号,根据获取的ID号确定与该处理核心对应的监控信息输出队列。
暂存单元102,用于将获取到的监控信息按顺序暂存到确定出的监控信息 输出队列中。
较佳的,上述输出^理才莫块10,还包4舌确定单元103和通知单元104;
确定单元103,用于根据获取到的监控信息中包含有设定的监控信息结束 符,确定发送该监控信息的所属处理核心所对应的监控信息输出队列中是否暂 存有一组监控信息。
通知单元104,用于当确定单元103确定出监控信息输出队列20中暂存有 一组监控信息时,发送通告消息给输出主控模块30。
监控信息输出队列20,用于暂存输出代理模块10传送的与自身对应的处 理核心40输出的监控信息。
输出主控模块30,用于当确定监控信息输出队列20中暂存有一组监控信 息时,将一组监控信息通过共用的串口输出。也就是说,输出主控模块30负 责从与各个处理核心40对应的监控状态输出队列20中收集完整存储后的一组 监控信息,并将其通过共用的串口输出。
较佳的,上述输出主控模块30,还用于确定监控信息输出队列20中暂 存有一组监控信息之后,判断是否允许输出一组监控信息,当允许时再执^"将 所述一组监控信息通过共用的串口输出的步骤。具体为当输出主控模块30 接收到的输出代理模块IO发送的通告消息时,确定监控信息输出队列20中暂 存有一组监控信息。
较佳的,上述输出主控模块30,具体包括接收单元301、判断单元302 和输出单元303。
接收单元301,用于接收输出代理模块10发送的通告消息。
判断单元302,用于根据接收单元301接收到的通告消息,检查监控信息 输出队列20中暂存的一组监控信息所属的监控信息输出队列所对应的处理核 心40的允许输出标志,当检测到允许输出标志时确认允许输出该組监控信息。输出单元303,用于当判断单元302确定允许输出监控信息时,将监控信 息输出队列20中暂存的一组监控信息通过共用的串口输出。
上述输出代理模块10提供给所有处理核心使用,即每个处理核心均可以 调用,在当前调用它的处理核心中运行,这样使得每个处理核心可以及时输出 监控信息,避免了在其他处理核心输出监控信息时进行等待的过程。监控信息 输出函数接口 (PRINT)由上述输出代理模块提供。而输出主控模块30只需 在设定的一个处理核心中运行即可,运行输出主控模块的处理核心也可以称为 主控核。
上述输出代理才莫块IO进行监控信息输出代理的具体实现流程如图6所示, 包括下列步骤
步骤Sll:获取输出监控信息的处理核心的ID号。
由于处理核心有监控信息要输出时,首先会调用输出代理模块所提供的 PRINT接口函数,各个处理核心通过调用PRINT接口函数实现将各自的监控 信息通过输出代理模块输传送到监控信息输出队列中。因此,输出代理模块获 取当前调用PRINT接口函数的处理核心的ID号,以确定当前输出监控信息的 处理核心是哪一个。
步骤S12:根据ID号确定与该处理核心对应的监控信息输出队列。 确定出是哪个处理核心输出监控信息后,才艮据该处理核心与监控信息输出 队列的对应关系,才艮据ID号确定与该处理核心对应的监控信息输出队列。 步骤S13:将输出的监控信息传送给确定出的监控信息输出队列进行暂存。 确定出对应的监控信息输出队列后,将输出的监控信息传送到该队列中, 并暂存在该队列的末尾。
也就是说,输出代理模块所提供的PRINT接口函数并不直接将输出的监 控信息输出到串口 ,而是将监控信息提供到监控信息输出队列中暂存起来。 步骤S14:输出的监控信息中是否包含监控信息结束符。 由于当一组监控信息输出完毕时,PRINT接口函数会紧接着输出标志结束的监控信息结束符,因此,当输出地监控信息中包含结束符CHARJNFO一END 时,则认为本次监控流程要输出的一组监控信息已经输出完毕。 若是,执行步骤S15,否则,执行步骤S16。
步骤S15:通知输出主控模块监控信息输出队列中暂存了 一组监控信息。
输出代理模块可以发送通告消息通知输出主控模块,表明某个监控信息输 出队列中暂存了完整的一组监控信息,需要输出。当然也可以釆用任何其他可 以通知输出主控模块的方式。
步骤S16:结束。
等待下一轮的输出状态信息。
输出代理模块将信息暂存到监控信息输出队列中之后,它的任务就完成 了,监控信息的输出则由输出主控模块来执行。输出主控模块确定某个监控信 息输出队列中有完整的一组监控信息待输出时,提取待输出的信息并通过串口 输出。
上述输出主控才莫块30控制监控信息输出的具体实现流程如图7所示,包 括下列步骤
步骤S21:接收输出代理才莫块发送的通告消息。
输出主控模块接收到输出代理模块发送的通告消息时,启动通过串口输出 监控信息的流程。
步骤S22:根据接收到的通告消息,确定出对应的监控信息输出队列。 输出主控模块根据接收到的通告消息,确定出对应的是哪个处理核心,从 而确定出是哪个监控信息输出队列中有完整的一组监控信息。
步骤S23:从确定出的监控信息输出队列中提取出一组监控信息。 输出主控模块确定出对应的有完整的 一组监控信息的监控信息输出队列 后,从队列中依次提取出这一组监控信息,具体为依次提取包含的各个字符串, 当提取到设定结束符时,则认为提取到了一组完整的监控信息。 步骤S24:判断是否允许输出该组监控信息。每个CORE预先设置了允许输出监控信息的允许输出标志,通过更改设置 的允许输出标志改变各个CORE信息输出状态。即当只需要监控部分CORE 时,则可以通过设置是否允许输出各个CORE的监控信息,以屏蔽其他不需要 监控的CORE的监控信息的输出,以进一步减少千扰,提高监控的效率。
输出主控模块则根据是否有设置的允许输出标志判断是否允许输出该处 理核心的监控信息。
当允许时,执行步骤S25,否则,执行步骤S26。
步骤S25:将一组监控信息通过共用的串口输出。
即每次有完整的一组监控信息时,才会一次性将这一组监控信息完整输 出。并且,虽输出代理模块10可以并行地将各处理核心的监控信息暂存到监 控信息输出队列,并且在监控信息中包含监控信息结束符时向输出主控模块30 发出通告消息,但输出主控模块30却是串行地处理各个通告消息,因此,不 会造成各个CORE之间的监控信息紊乱,即由于每个输出队列中只有一个 CORE的监控信息,因此不会造成一组完整的监控信息中间穿插入其它CORE 的监控信息的情况出现。
步骤S26:丢弃该组监控信息。
本发明实施例提供的多核处理器复用串口的方法及串口复用装置,在多核 处理器共用单个串口的情况下,实现对多个处理核心的监控信息的方便而有效 地监控和管理。
各个CORE输出监控信息到各自私有的监控信息输出队列中,相互之间没 有共享资源,不需要加锁,避免了相互之间加锁导致忙等待而造成效率低下, 从而避免了现有技术中通iii口锁方式实现串口复用所带来的系统性能损耗,并 很好的解决监控输出信息紊乱问题,且可以方便的控制每个处理器核心的监控 信息是否输出,使得用户及开发人员对嵌入式系统的监控效率得到很大程度的 提升。
由于各个CORE的监控信息都是按照输出顺序进入各自对应的监控信息输出队列的,通过串口输出时也是按顺序一次输出一组完整的监控信息,因此
不会导致各个CORE之间的监控信息输出紊乱。且通过结束符的设置,有效的 保证了各个处理核心输出的一组监控信息完整、正确。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到的变化、替换或应用到其他类似的装置,都应涵盖在本发明的保护范围之 内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1、一种多核处理器复用串口的方法,其特征在于,预先设置若干监控信息输出队列,所述监控信息输出队列与所述多核处理器包含的多个处理核心一一对应;该方法包括获取所述处理核心输出的监控信息,将所述监控信息传送到与所述处理核心对应的监控信息输出队列中暂存;当确定所述监控信息输出队列中暂存有一组监控信息时,将该组监控信息通过共用的串口输出。
2、 如权利要求1所述的方法,其特征在于,所述确定所述监控信息输出 队列中暂存有一组监控信息之后,还包括判断是否允许输出该组监控信息, 当允许时再执行将该组监控信息通过共用的串口输出的步骤。
3、 如权利要求2所述的方法,其特征在于,预先设置用于控制是否允许 输出所述处理核心的监控信息的允许输出标志;所述判断是否允许输出该组监控信息,具体包括检查所述监控信息所属 的监控信息输出队列所对应的所述处理核心的允许输出标志,当检测到允许输 出标志时确认允许输出该组监控信息。
4、 如权利要求1所述的方法,其特征在于,所述将所述监控信息传送到 与所述处理核心对应的监控信息输出队列中暂存;具体包括获取输出监控信息的处理核心的ID号;根据所述ID号确定与该处理核心对应的监控信息输出队列;将获取到的监控信息按顺序暂存到确定出的所述监控信息输出队列中。
5、 如权利要求1-4任一所述的方法,其特征在于,当获取到的监控信息 中包含有设定的监控信息结束符时,确定发送该监控信息的所属处理核心所对 应的监控信息输出队列中暂存有一组监控信息。
6、 一种串口复用装置,其特征在于,包括输出代理模块、输出主控模块和若干监控信息输出队列,所述监控信息输出队列与多核处理器包含的多个处理核心--7十应;输出代理模块,用于获取所述处理核心输出的监控信息,将所述监控信息 传送到与所述处理核心对应的监控信息输出队列中暂存;所述监控信息输出队列,用于暂存所述输出代理模块传送的所述处理核心 输出的监控信息;所述输出主控模块,用于当确定所述监控信息输出队列中暂存有一组监控 信息时,将所述一组监控信息通过共用的串口输出。
7、 如权利要求6所述的装置,其特征在于,所述输出主控模块,还用于 确定所述监控信息输出队列中暂存有一组监控信息之后,判断是否允许输出所 述一组监控信息,当允许时再执行将该组监控信息通过共用的串口输出的步 骤。
8、 如权利要求6或7所述的装置,其特征在于,所述输出代理模块,还 用于当获取到的监控信息中包含有设定的监控信息结束符时,确定发送该监 控信息的所属处理核心所对应的监控信息输出队列中暂存有一组监控信息,并 发送通告消息给所述输出主控模块;所述输出主控才莫块接收到所述通告消息时,确定所述监控信息输出队列中 暂存有一组监控信息。
9、 如权利要求8所述的装置,其特征在于,所述输出代理模块,具体包括获取单元,用于获取输出监控信息的处理核心的ID号,根据所述ID号确 定与该处理核心对应的监控信息输出队列;暂存单元,用于将获取到的监控信息按顺序暂存到确定出的所述监控信息 输出队列中。
10、 如权利要求9所述的装置,其特征在于,所述输出代理模块,还包括: 确定单元和通知单元;所述确定单元,用于根据获取到的监控信息中包含有设定的监控信息结束 符,确定发送该监控信息的所属处理核心所对应的监控信息输出队列中是否暂存有一组监控信息;所述通知单元,用于当所述确定单元确定出所述监控信息输出队列中暂存 有一组监控信息时,发送通告消息给所述输出主控才莫块。
11、如权利要求8所述的装置,其特征在于,所述输出主控模块,具体包括接收单元,用于接收所述输出代理模块发送的通告消息;判断单元,用于才艮据所述接收单元接收到的所述通告消息,4全查所述一组监控信息所属的监控信息输出队列所对应的所述处理核心的允许输出标志,当检测到允许输出标志时确认允许输出该组监控信息;输出单元,用于当所述判断单元确定允许输出监控信息时,将所述一组监控信息通过共用的串口输出。
全文摘要
本发明公开了一种多核处理器复用串口的方法及串口复用装置,该方法包括预先设置若干监控信息输出队列,所述监控信息输出队列与所述多核处理器包含的多个处理核心一一对应;对多核处理器进行状态监控的流程包括获取所述处理核心输出的监控信息,将所述监控信息传送到与所述处理核心对应的监控信息输出队列中暂存;当确定所述监控信息输出队列中暂存有一组监控信息时,将该组监控信息通过共用的串口输出。上述方法及装置能够实现复用串口的多个处理核心的监控信息的完整、正确的输出,避免了输出信息混乱,同时提高了监控效率。
文档编号G06F13/38GK101655826SQ20091017605
公开日2010年2月24日 申请日期2009年9月25日 优先权日2009年9月25日
发明者陈平平 申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1