多核处理器及其串口复用方法

文档序号:6609538阅读:242来源:国知局
专利名称:多核处理器及其串口复用方法
技术领域
本发明涉及多核处理器领域,尤其涉及在多核处理器运行多个嵌入式操作系统时,实现一种复用串口的技术。
背景技术
高性能多核处理器在嵌入式系统中得到了广泛的应用,多核处理器多个内核的不同线程可以独立运行嵌入式操作系统,目前主流的嵌入式操作系统都可以通过基于目标单板的串口Shell进行打印和调试,给软件开放带来极大的便利。
然而多核处理器系统的串口资源极其有限,不可能为每个内核线程固定一个串口,所以通常可以通过硬件设计电路扩展串口,达到增加串口个数的目的,因为大部分串口资源在大部分时间都闲置,会造成串口资源的浪费,同时也增加了成本;或者像CN200510030862专利,它是通过硬件切换模块控制串口在GPS串口和CPU串口之间切换,达到复用串口的目的,这种复用带有明显的互斥性,当前时刻串口只能被一个设备独占,其他设备无法使用串口,同时硬件切换串口时可能会造成正在使用串口的软件数据丢失。
为了充分发挥串口在多核处理器中的作用,通过软件控制串口在多个内核线程间切换是一种很好的解决问题的方法,不但提高了串口资源的利用率,而且可控性和可靠性都能得到保证。

发明内容
本发明的一个目的在于克服在串口资源受限的嵌入式系统中串口无法充分复用的缺点,因此提出一种通过利用多核处理器内部消息机制、共享内存、以及中断切换等机制共同完成串口在各个内核线程之间复用的方法。
根据本发明的一个方面,提供了一种多核处理器,包括多核多线程处理器,用于运行至少一个内核线程,以及在接收到切换控制模块的切换控制消息后,进行串口在内核线程间的切换;串口,用于将多核多线程处理器的至少一个内核线程的数据发送至外部,并与用于串口中断挂接的串口主控内核线程进行数据交互;以及切换控制模块,连接于串口和多核多线程处理器之间,用于控制多核多线程处理器中的一个或多个内核线程的切换以共享串口。
切换控制模块定时向多核多线程处理器发送切换控制消息。切换控制模块向用户提供各个内核线程的运行信息,在用户指示切换串口主控内核线程的情况下,切换控制模块向多核多线程处理器发送切换控制命令。
多核多线程处理器在上电后进行以下处理由用于串口中断挂接的串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序;为多核处理器中运行的各个内核线程分配独立的数据缓冲区,在共享内存中建立各个内核线程的串口控制信息;串口主控内核线程向各个内核线程发送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享内存中的地址;以及在允许使用串口的情况下,各个内核线程将需要发送的数据放入分配的数据缓冲区中并将通知消息发送至串口主控内核线程,串口主控内核线程根据通知消息将数据缓冲区中的数据通过串口发送到外部。
多核多线程处理器在接收到切换控制消息后进行以下处理串口主控内核线程发起切换串口流程,禁止当前串口中断并卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程并发送串口切换通知消息到目的内核线程;目的内核线程作为串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,将共享内存中的串口主控内核线程号修改为目的内核线程的线程号,并将初始化完成消息发送至所有内核线程,其他内核线程将目的内核线程作为串口主控内核线程进行后续处理。
根据本发明的另一个方面,提供了一种用于多核处理器的串口复用方法,该方法包括以下步骤步骤S202,多核处理器上电后,由用于串口中断挂接的串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,为多核处理器中运行的各个内核线程分配独立的数据缓冲区,并在共享内存中建立各个内核线程的串口控制信息;步骤S204,串口主控内核线程向各个内核线程发送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享内存中的地址;步骤S206,在允许使用串口的情况下,各个内核线程将需要发送的数据放入分配的数据缓冲区中并将通知消息发送至串口主控内核线程,串口主控内核线程根据通知消息将数据缓冲区中的数据通过串口发送到外部;步骤S208,在需要切换内核线程的情况下,串口主控内核线程发起切换串口流程,禁止当前串口中断并卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程并发送串口切换通知消息到目的内核线程;以及步骤S210,目的内核线程作为串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,将共享内存中的串口主控内核线程号修改为目的内核线程的线程号,并将初始化完成消息发送至所有内核线程,其他内核线程将目的内核线程作为串口主控内核线程进行后续处理。
切换控制模块定时向多核多线程处理器发送切换控制消息。切换控制模块向用户提供各个内核线程的运行信息,在用户指示切换串口主控内核线程的情况下,切换控制模块向多核多线程处理器发送切换控制命令。
在本发明中,多核处理器中的至少一个内核线程共享串口可以用于打印。
通过实施本发明,多个内核线程通过软件控制复用串口可以节省硬件资源和成本,提高了串口的利用率;打印信息级别的控制节省了内核线程消息通讯带宽,同时通过串口中断在各内核线程上的切换,使用内核线程运行操作系统自带的Shell程序,极大的方便了软件的开发调试。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,附图中相同的参考标号表示相同的元件。在附图中图1A和图1B是分别示出现有串口应用的结构示意图;
图2是示出根据本发明的多核处理器的框图;图3是示出根据本发明的多核处理器的串口复用方法的流程图;图4是示出根据本发明一个实施例的多核处理器的串口复用方法的流程图;图5是示出根据本发明另一个实施例的复用串口方法的示意图;以及图6是根据本发明实施例的复用串口方法的软件流程图。
具体实施例方式
下面参考附图,详细说明本发明的具体实施方式

图2是示出根据本发明的多核处理器的框图。参照图2,根据本发明的多核处理器200包括多核多线程处理器202,用于运行至少一个内核线程,以及在接收到切换控制模块的切换控制消息后,进行串口在内核线程间的切换;串口204,用于将多核多线程处理器的至少一个内核线程的数据发送至外部,并与用于串口中断挂接的串口主控内核线程进行数据交互;以及切换控制模块206,连接于串口和多核多线程处理器之间,用于控制多核多线程处理器中的一个或多个内核线程的切换以共享串口。
切换控制模块206定时向多核多线程处理器发送切换控制消息,向用户提供各个内核线程的运行信息,并在用户指示切换串口主控内核线程的情况下,切换控制模块向多核多线程处理器发送切换控制命令。
多核多线程处理器202在上电后进行以下处理由用于串口中断挂接的串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序;为多核处理器中运行的各个内核线程分配独立的数据缓冲区,在共享内存中建立各个内核线程的串口控制信息;串口主控内核线程向各个内核线程发送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享内存中的地址;以及在允许使用串口的情况下,各个内核线程将需要发送的数据放入分配的数据缓冲区中并将通知消息发送至串口主控内核线程,串口主控内核线程根据通知消息将数据缓冲区中的数据通过串口发送到外部。
多核多线程处理器202在接收到切换控制消息后进行以下处理串口主控内核线程发起切换串口流程,禁止当前串口中断并卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程并发送串口切换通知消息到目的内核线程;目的内核线程作为串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,将共享内存中的串口主控内核线程号修改为目的内核线程的线程号,并将初始化完成消息发送至所有内核线程,其他内核线程将目的内核线程作为串口主控内核线程进行后续处理。
在该装置中,多核多线程处理器的一个或多个内核线程共享串口进行打印。
图3是示出根据本发明的多核处理器的串口复用方法的流程图。参照图3,根据本发明的多核处理器的串口复用方法包括以下步骤步骤S302,多核处理器上电后,由用于串口中断挂接的串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,为多核处理器中运行的各个内核线程分配独立的数据缓冲区,并在共享内存中建立各个内核线程的串口控制信息;步骤S304,串口主控内核线程向各个内核线程发送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享内存中的地址;步骤S306,在允许使用串口的情况下,各个内核线程将需要发送的数据放入分配的数据缓冲区中并将通知消息发送至串口主控内核线程,串口主控内核线程根据通知消息将数据缓冲区中的数据通过串口发送到外部;步骤S308,在需要切换内核线程的情况下,串口主控内核线程发起切换串口流程,禁止当前串口中断并卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程并发送串口切换通知消息到目的内核线程;以及步骤310,目的内核线程作为串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,将共享内存中的串口主控内核线程号修改为目的内核线程的线程号,并将初始化完成消息发送至所有内核线程,其他内核线程将目的内核线程作为串口主控内核线程进行后续处理。
在该方法中,切换控制模块定时向多核多线程处理器发送切换控制消息,向用户提供各个内核线程的运行信息,并在用户指示切换串口主控内核线程的情况下,向多核多线程处理器发送切换控制命令。
在该方法中,多核处理器中的至少一个内核线程共享串口进行打印。
下面结合图4~图6来详细说明本发明的实施例。
图4是示出根据本发明一个实施例的多核处理器的串口复用方法的流程图。参照图4,根据本发明一个实施例的多核处理器的串口复用方法包括以下步骤
步骤S402,上电后,串口中断挂接的内核线程称为串口主控内核线程,由串口主控内核线程完成串口芯片初始化、串口驱动的加载,打开中断控制器中的串口中断屏蔽位,使能串口中断;初始化基于串口的Shell,建立共享内存,为各内核线程分配独立的打印缓冲区;步骤S404,串口主控内核线程在共享内存中建立各内核线程的串口控制信息,包括打印缓冲区起始地址、缓冲区大小、允许打印级别、串口主控内核线程号;步骤S406,串口主控内核线程向各其他内核线程发送串口初始化完成消息,该消息包括在共享内存中串口控制信息的地址;步骤S408,各内核线程收到串口初始化完成消息后,判断当前打印级别变量的值是否与允许打印信息的级别相匹配,如果匹配则将打印信息存放在共享内存已分配的打印缓冲区中,同时发送消息通知串口主控内核线程,消息中携带打印消息在共享内存中的地址;串口主控内核线程根据收到的消息解析出地址和长度,并将该地址中的字符串送往串口打印;步骤S410,根据调试需要,由串口主控内核线程发起切换串口流程,串口主控内核线程禁止当前串口中断,卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程,并发送消息通知目的内核线程开始切换串口;步骤S412,目的内核线程收到开始串口切换消息后,初始化串口芯片,加载串口驱动,打开中断控制器中的串口中断屏蔽位,使能串口中断;初始化基于串口的Shell;此时目的内核线程变为控制串口的串口主控内核线程;
步骤S414,修改共享内存中的串口主控内核线程号,发送消息通知所有内核线程初始化完成消息;以及步骤S416,其他各内核线程将打印信息发送到新的串口主控内核线程,由当前的串口主控内核线程处理其他各线程发送的打印消息。
现有使用串口方法如图1A所示,包括多核多线程处理器100、串口120、内核线程101。串口120挂接在内核线程101上,其他内核线程通过内核线程的核间消息共享使用该串口120,这种方式虽然节省了串口120,但对于其他内核线程如果有较多调试信息通过核间消息传递,会占用较多的核间消息通讯带宽,同时对于单个内核线程调试时不能直接使用该内核线程上操作系统自带的Shell程序,会给软件开发调试带来很大的不便。
现有使用串口方法如图1B所示,通过扩展串口120的个数使得每个串口120对应一个内核线程101,很明显在闲置不用时会造成串口120资源的浪费。
图5是本发明所述复用串口方法示意图,与前述方法相比增加了切换控制模块510,切换控制模块运行在各内核线程101中,可以通过软件控制串口给指定的内核线程101使用,其他内核线程将打印消息写入共享内存,由当前控制串口的内核线程负责接收,可以方便的根据需要使用串口调试当前指定的内核线程,同时不影响其他内核线程的打印信息通道。
图6是根据本发明实施例的复用串口方法的软件流程图。参照图6,根据本发明实施例的复用串口方法的软件流程包括以下步骤步骤S602,系统上电;步骤S604,由串口主控内核线程完成串口芯片初始化、串口驱动的加载,打开中断控制器中的串口中断屏蔽位,使能串口中断;
步骤S606,初始化基于串口的Shell,建立共享内存,为各内核线程分配独立的打印缓冲区;步骤S608,串口主控内核线程在共享内存中建立各内核线程的串口控制信息;步骤S610,判断是否为切换串口消息;步骤S612,如果是打印消息,串口主控内核线程根据收到的消息解析出地址和长度,并将该地址中的字符串送往串口打印;步骤S614,如果是切换串口消息,串口主控内核线程禁止当前串口中断卸载串口驱动程序,将串口中断挂接到需要切换到的目的内核线程;步骤S616,串口主控内核线程通知目的内核线程开始切换串口;步骤S618,目的内核线程初始化串口芯片,加载串口驱动,使能串口中断,初始化Shell;以及步骤S620,修改共享内存中串口主控内核线程号。
采用本发明所述方法,与现有技术相比,多个内核线程通过软件控制复用串口可以节省硬件资源和成本,提高了串口的利用率;打印信息级别的控制节省了内核线程消息通讯带宽,同时通过串口中断在各内核线程上的切换,使用内核线程运行操作系统自带的shell程序,极大的方便了软件的开发调试。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种多核处理器,其特征在于,包括多核多线程处理器、串口和切换控制模块,其中所述多核多线程处理器,用于运行至少一个内核线程,以及在接收到所述切换控制模块的切换控制消息后,进行所述串口在内核线程间的切换;所述串口,用于将所述多核多线程处理器的所述至少一个内核线程的数据发送至外部,并与用于串口中断挂接的串口主控内核线程进行数据交互;以及所述切换控制模块,连接于所述串口和所述多核多线程处理器之间,用于控制所述多核多线程处理器中的所述一个或多个内核线程的切换以共享所述串口。
2.根据权利要求1所述的多核处理器,其特征在于,所述切换控制模块定时向所述多核多线程处理器发送所述切换控制消息。
3.根据权利要求1所述的多核处理器,其特征在于,所述切换控制模块向用户提供所述各个内核线程的运行信息,在用户指示切换所述串口主控内核线程的情况下,所述切换控制模块向所述多核多线程处理器发送所述切换控制命令。
4.根据权利要求2或3所述的多核处理器,其特征在于,所述多核多线程处理器在上电后进行以下处理由所述串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序;为所述多核处理器中运行的各个内核线程分配独立的数据缓冲区,在所述共享内存中建立各个内核线程的串口控制信息;所述串口主控内核线程向所述各个内核线程发送串口初始化完成消息,所述串口初始化完成消息包括串口控制信息在所述共享内存中的地址;以及在允许使用所述串口的情况下,所述各个内核线程将需要发送的数据放入分配的数据缓冲区中并将通知消息发送至所述串口主控内核线程,所述串口主控内核线程根据所述通知消息将所述数据缓冲区中的数据通过所述串口发送到外部。
5.根据权利要求4所述的多核处理器,其特征在于,所述多核多线程处理器在接收到所述切换控制消息后进行以下处理所述串口主控内核线程发起切换串口流程,禁止当前串口中断并卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程并发送串口切换通知消息到所述目的内核线程;所述目的内核线程作为串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,将所述共享内存中的串口主控内核线程号修改为所述目的内核线程的线程号,并将初始化完成消息发送至所有内核线程,所述其他内核线程将所述目的内核线程作为串口主控内核线程进行后续处理。
6.根据权利要求5所述的多核处理器,其特征在于,所述多核多线程处理器的一个或多个内核线程共享所述串口进行打印。
7.一种用于多核处理器的串口复用方法,其特征在于,所述方法包括以下步骤步骤一,多核处理器上电后,由用于串口中断挂接的串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建共享内存,初始化基于串口的Shell程序,为所述多核处理器中运行的各个内核线程分配独立的数据缓冲区,并在所述共享内存中建立各个内核线程的串口控制信息;步骤二,所述串口主控内核线程向所述各个内核线程发送串口初始化完成消息,所述串口初始化完成消息包括串口控制信息在所述共享内存中的地址;步骤三,在允许使用所述串口的情况下,所述各个内核线程将需要发送的数据放入分配的数据缓冲区中并将通知消息发送至所述串口主控内核线程,所述串口主控内核线程根据所述通知消息将所述数据缓冲区中的数据通过所述串口发送到外部;步骤四,在需要切换所述内核线程的情况下,所述串口主控内核线程发起切换串口流程,禁止当前串口中断并卸载串口驱动程序,同时将串口中断挂接到需要切换到的目的内核线程并发送串口切换通知消息到所述目的内核线程;步骤五,所述目的内核线程作为串口主控内核线程进行初始化和加载驱动程序,使能串口中断,建立共享内存,初始化基于串口的Shell程序,将所述共享内存中的串口主控内核线程号修改为所述目的内核线程的线程号,并将初始化完成消息发送至所有内核线程,所述其他内核线程将所述目的内核线程作为串口主控内核线程进行后续处理。
8.根据权利要求7所述的多核处理器,其特征在于,所述切换控制模块定时向所述多核多线程处理器发送所述切换控制消息。
9.根据权利要求7所述的多核处理器,其特征在于,所述切换控制模块向用户提供所述各个内核线程的运行信息,在用户指示切换所述串口主控内核线程的情况下,所述切换控制模块向所述多核多线程处理器发送所述切换控制命令。
10.根据权利要求7至9中任一项所述的串口复用方法,其特征在于,所述多核处理器中的至少一个内核线程共享所述串口进行打印。
全文摘要
本发明披露了一种多核处理器和用于多核处理器的串口复用方法包括多核多线程处理器,用于运行至少一个内核线程,以及在接收到切换控制模块的切换控制消息后,进行串口在内核线程间的切换;串口,用于将多核多线程处理器的至少一个内核线程的数据发送至外部,并与串口主控内核线程进行数据交互;以及切换控制模块,连接于串口和多核多线程处理器之间,用于控制多核多线程处理器中的一个或多个内核线程的切换以共享串口。
文档编号G06F15/16GK101067794SQ20071010866
公开日2007年11月7日 申请日期2007年6月14日 优先权日2007年6月14日
发明者赵阳, 于伟, 贾皓昕, 王守林, 杨凡 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1