欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多核處理器及其串口復(fù)用方法

文檔序號(hào):6609538閱讀:282來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):多核處理器及其串口復(fù)用方法
技術(shù)領(lǐng)域
本發(fā)明涉及多核處理器領(lǐng)域,尤其涉及在多核處理器運(yùn)行多個(gè)嵌入式操作系統(tǒng)時(shí),實(shí)現(xiàn)一種復(fù)用串口的技術(shù)。
背景技術(shù)
高性能多核處理器在嵌入式系統(tǒng)中得到了廣泛的應(yīng)用,多核處理器多個(gè)內(nèi)核的不同線(xiàn)程可以獨(dú)立運(yùn)行嵌入式操作系統(tǒng),目前主流的嵌入式操作系統(tǒng)都可以通過(guò)基于目標(biāo)單板的串口Shell進(jìn)行打印和調(diào)試,給軟件開(kāi)放帶來(lái)極大的便利。
然而多核處理器系統(tǒng)的串口資源極其有限,不可能為每個(gè)內(nèi)核線(xiàn)程固定一個(gè)串口,所以通??梢酝ㄟ^(guò)硬件設(shè)計(jì)電路擴(kuò)展串口,達(dá)到增加串口個(gè)數(shù)的目的,因?yàn)榇蟛糠执谫Y源在大部分時(shí)間都閑置,會(huì)造成串口資源的浪費(fèi),同時(shí)也增加了成本;或者像CN200510030862專(zhuān)利,它是通過(guò)硬件切換模塊控制串口在GPS串口和CPU串口之間切換,達(dá)到復(fù)用串口的目的,這種復(fù)用帶有明顯的互斥性,當(dāng)前時(shí)刻串口只能被一個(gè)設(shè)備獨(dú)占,其他設(shè)備無(wú)法使用串口,同時(shí)硬件切換串口時(shí)可能會(huì)造成正在使用串口的軟件數(shù)據(jù)丟失。
為了充分發(fā)揮串口在多核處理器中的作用,通過(guò)軟件控制串口在多個(gè)內(nèi)核線(xiàn)程間切換是一種很好的解決問(wèn)題的方法,不但提高了串口資源的利用率,而且可控性和可靠性都能得到保證。

發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的在于克服在串口資源受限的嵌入式系統(tǒng)中串口無(wú)法充分復(fù)用的缺點(diǎn),因此提出一種通過(guò)利用多核處理器內(nèi)部消息機(jī)制、共享內(nèi)存、以及中斷切換等機(jī)制共同完成串口在各個(gè)內(nèi)核線(xiàn)程之間復(fù)用的方法。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種多核處理器,包括多核多線(xiàn)程處理器,用于運(yùn)行至少一個(gè)內(nèi)核線(xiàn)程,以及在接收到切換控制模塊的切換控制消息后,進(jìn)行串口在內(nèi)核線(xiàn)程間的切換;串口,用于將多核多線(xiàn)程處理器的至少一個(gè)內(nèi)核線(xiàn)程的數(shù)據(jù)發(fā)送至外部,并與用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行數(shù)據(jù)交互;以及切換控制模塊,連接于串口和多核多線(xiàn)程處理器之間,用于控制多核多線(xiàn)程處理器中的一個(gè)或多個(gè)內(nèi)核線(xiàn)程的切換以共享串口。
切換控制模塊定時(shí)向多核多線(xiàn)程處理器發(fā)送切換控制消息。切換控制模塊向用戶(hù)提供各個(gè)內(nèi)核線(xiàn)程的運(yùn)行信息,在用戶(hù)指示切換串口主控內(nèi)核線(xiàn)程的情況下,切換控制模塊向多核多線(xiàn)程處理器發(fā)送切換控制命令。
多核多線(xiàn)程處理器在上電后進(jìn)行以下處理由用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序;為多核處理器中運(yùn)行的各個(gè)內(nèi)核線(xiàn)程分配獨(dú)立的數(shù)據(jù)緩沖區(qū),在共享內(nèi)存中建立各個(gè)內(nèi)核線(xiàn)程的串口控制信息;串口主控內(nèi)核線(xiàn)程向各個(gè)內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享內(nèi)存中的地址;以及在允許使用串口的情況下,各個(gè)內(nèi)核線(xiàn)程將需要發(fā)送的數(shù)據(jù)放入分配的數(shù)據(jù)緩沖區(qū)中并將通知消息發(fā)送至串口主控內(nèi)核線(xiàn)程,串口主控內(nèi)核線(xiàn)程根據(jù)通知消息將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)通過(guò)串口發(fā)送到外部。
多核多線(xiàn)程處理器在接收到切換控制消息后進(jìn)行以下處理串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,禁止當(dāng)前串口中斷并卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程并發(fā)送串口切換通知消息到目的內(nèi)核線(xiàn)程;目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,將共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào)修改為目的內(nèi)核線(xiàn)程的線(xiàn)程號(hào),并將初始化完成消息發(fā)送至所有內(nèi)核線(xiàn)程,其他內(nèi)核線(xiàn)程將目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行后續(xù)處理。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于多核處理器的串口復(fù)用方法,該方法包括以下步驟步驟S202,多核處理器上電后,由用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,為多核處理器中運(yùn)行的各個(gè)內(nèi)核線(xiàn)程分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并在共享內(nèi)存中建立各個(gè)內(nèi)核線(xiàn)程的串口控制信息;步驟S204,串口主控內(nèi)核線(xiàn)程向各個(gè)內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享內(nèi)存中的地址;步驟S206,在允許使用串口的情況下,各個(gè)內(nèi)核線(xiàn)程將需要發(fā)送的數(shù)據(jù)放入分配的數(shù)據(jù)緩沖區(qū)中并將通知消息發(fā)送至串口主控內(nèi)核線(xiàn)程,串口主控內(nèi)核線(xiàn)程根據(jù)通知消息將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)通過(guò)串口發(fā)送到外部;步驟S208,在需要切換內(nèi)核線(xiàn)程的情況下,串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,禁止當(dāng)前串口中斷并卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程并發(fā)送串口切換通知消息到目的內(nèi)核線(xiàn)程;以及步驟S210,目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,將共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào)修改為目的內(nèi)核線(xiàn)程的線(xiàn)程號(hào),并將初始化完成消息發(fā)送至所有內(nèi)核線(xiàn)程,其他內(nèi)核線(xiàn)程將目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行后續(xù)處理。
切換控制模塊定時(shí)向多核多線(xiàn)程處理器發(fā)送切換控制消息。切換控制模塊向用戶(hù)提供各個(gè)內(nèi)核線(xiàn)程的運(yùn)行信息,在用戶(hù)指示切換串口主控內(nèi)核線(xiàn)程的情況下,切換控制模塊向多核多線(xiàn)程處理器發(fā)送切換控制命令。
在本發(fā)明中,多核處理器中的至少一個(gè)內(nèi)核線(xiàn)程共享串口可以用于打印。
通過(guò)實(shí)施本發(fā)明,多個(gè)內(nèi)核線(xiàn)程通過(guò)軟件控制復(fù)用串口可以節(jié)省硬件資源和成本,提高了串口的利用率;打印信息級(jí)別的控制節(jié)省了內(nèi)核線(xiàn)程消息通訊帶寬,同時(shí)通過(guò)串口中斷在各內(nèi)核線(xiàn)程上的切換,使用內(nèi)核線(xiàn)程運(yùn)行操作系統(tǒng)自帶的Shell程序,極大的方便了軟件的開(kāi)發(fā)調(diào)試。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。


此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定,附圖中相同的參考標(biāo)號(hào)表示相同的元件。在附圖中圖1A和圖1B是分別示出現(xiàn)有串口應(yīng)用的結(jié)構(gòu)示意圖;
圖2是示出根據(jù)本發(fā)明的多核處理器的框圖;圖3是示出根據(jù)本發(fā)明的多核處理器的串口復(fù)用方法的流程圖;圖4是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的多核處理器的串口復(fù)用方法的流程圖;圖5是示出根據(jù)本發(fā)明另一個(gè)實(shí)施例的復(fù)用串口方法的示意圖;以及圖6是根據(jù)本發(fā)明實(shí)施例的復(fù)用串口方法的軟件流程圖。
具體實(shí)施例方式
下面參考附圖,詳細(xì)說(shuō)明本發(fā)明的具體實(shí)施方式

圖2是示出根據(jù)本發(fā)明的多核處理器的框圖。參照?qǐng)D2,根據(jù)本發(fā)明的多核處理器200包括多核多線(xiàn)程處理器202,用于運(yùn)行至少一個(gè)內(nèi)核線(xiàn)程,以及在接收到切換控制模塊的切換控制消息后,進(jìn)行串口在內(nèi)核線(xiàn)程間的切換;串口204,用于將多核多線(xiàn)程處理器的至少一個(gè)內(nèi)核線(xiàn)程的數(shù)據(jù)發(fā)送至外部,并與用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行數(shù)據(jù)交互;以及切換控制模塊206,連接于串口和多核多線(xiàn)程處理器之間,用于控制多核多線(xiàn)程處理器中的一個(gè)或多個(gè)內(nèi)核線(xiàn)程的切換以共享串口。
切換控制模塊206定時(shí)向多核多線(xiàn)程處理器發(fā)送切換控制消息,向用戶(hù)提供各個(gè)內(nèi)核線(xiàn)程的運(yùn)行信息,并在用戶(hù)指示切換串口主控內(nèi)核線(xiàn)程的情況下,切換控制模塊向多核多線(xiàn)程處理器發(fā)送切換控制命令。
多核多線(xiàn)程處理器202在上電后進(jìn)行以下處理由用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序;為多核處理器中運(yùn)行的各個(gè)內(nèi)核線(xiàn)程分配獨(dú)立的數(shù)據(jù)緩沖區(qū),在共享內(nèi)存中建立各個(gè)內(nèi)核線(xiàn)程的串口控制信息;串口主控內(nèi)核線(xiàn)程向各個(gè)內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享內(nèi)存中的地址;以及在允許使用串口的情況下,各個(gè)內(nèi)核線(xiàn)程將需要發(fā)送的數(shù)據(jù)放入分配的數(shù)據(jù)緩沖區(qū)中并將通知消息發(fā)送至串口主控內(nèi)核線(xiàn)程,串口主控內(nèi)核線(xiàn)程根據(jù)通知消息將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)通過(guò)串口發(fā)送到外部。
多核多線(xiàn)程處理器202在接收到切換控制消息后進(jìn)行以下處理串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,禁止當(dāng)前串口中斷并卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程并發(fā)送串口切換通知消息到目的內(nèi)核線(xiàn)程;目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,將共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào)修改為目的內(nèi)核線(xiàn)程的線(xiàn)程號(hào),并將初始化完成消息發(fā)送至所有內(nèi)核線(xiàn)程,其他內(nèi)核線(xiàn)程將目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行后續(xù)處理。
在該裝置中,多核多線(xiàn)程處理器的一個(gè)或多個(gè)內(nèi)核線(xiàn)程共享串口進(jìn)行打印。
圖3是示出根據(jù)本發(fā)明的多核處理器的串口復(fù)用方法的流程圖。參照?qǐng)D3,根據(jù)本發(fā)明的多核處理器的串口復(fù)用方法包括以下步驟步驟S302,多核處理器上電后,由用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,為多核處理器中運(yùn)行的各個(gè)內(nèi)核線(xiàn)程分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并在共享內(nèi)存中建立各個(gè)內(nèi)核線(xiàn)程的串口控制信息;步驟S304,串口主控內(nèi)核線(xiàn)程向各個(gè)內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,串口初始化完成消息包括串口控制信息在共享內(nèi)存中的地址;步驟S306,在允許使用串口的情況下,各個(gè)內(nèi)核線(xiàn)程將需要發(fā)送的數(shù)據(jù)放入分配的數(shù)據(jù)緩沖區(qū)中并將通知消息發(fā)送至串口主控內(nèi)核線(xiàn)程,串口主控內(nèi)核線(xiàn)程根據(jù)通知消息將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)通過(guò)串口發(fā)送到外部;步驟S308,在需要切換內(nèi)核線(xiàn)程的情況下,串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,禁止當(dāng)前串口中斷并卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程并發(fā)送串口切換通知消息到目的內(nèi)核線(xiàn)程;以及步驟310,目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,將共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào)修改為目的內(nèi)核線(xiàn)程的線(xiàn)程號(hào),并將初始化完成消息發(fā)送至所有內(nèi)核線(xiàn)程,其他內(nèi)核線(xiàn)程將目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行后續(xù)處理。
在該方法中,切換控制模塊定時(shí)向多核多線(xiàn)程處理器發(fā)送切換控制消息,向用戶(hù)提供各個(gè)內(nèi)核線(xiàn)程的運(yùn)行信息,并在用戶(hù)指示切換串口主控內(nèi)核線(xiàn)程的情況下,向多核多線(xiàn)程處理器發(fā)送切換控制命令。
在該方法中,多核處理器中的至少一個(gè)內(nèi)核線(xiàn)程共享串口進(jìn)行打印。
下面結(jié)合圖4~圖6來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施例。
圖4是示出根據(jù)本發(fā)明一個(gè)實(shí)施例的多核處理器的串口復(fù)用方法的流程圖。參照?qǐng)D4,根據(jù)本發(fā)明一個(gè)實(shí)施例的多核處理器的串口復(fù)用方法包括以下步驟
步驟S402,上電后,串口中斷掛接的內(nèi)核線(xiàn)程稱(chēng)為串口主控內(nèi)核線(xiàn)程,由串口主控內(nèi)核線(xiàn)程完成串口芯片初始化、串口驅(qū)動(dòng)的加載,打開(kāi)中斷控制器中的串口中斷屏蔽位,使能串口中斷;初始化基于串口的Shell,建立共享內(nèi)存,為各內(nèi)核線(xiàn)程分配獨(dú)立的打印緩沖區(qū);步驟S404,串口主控內(nèi)核線(xiàn)程在共享內(nèi)存中建立各內(nèi)核線(xiàn)程的串口控制信息,包括打印緩沖區(qū)起始地址、緩沖區(qū)大小、允許打印級(jí)別、串口主控內(nèi)核線(xiàn)程號(hào);步驟S406,串口主控內(nèi)核線(xiàn)程向各其他內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,該消息包括在共享內(nèi)存中串口控制信息的地址;步驟S408,各內(nèi)核線(xiàn)程收到串口初始化完成消息后,判斷當(dāng)前打印級(jí)別變量的值是否與允許打印信息的級(jí)別相匹配,如果匹配則將打印信息存放在共享內(nèi)存已分配的打印緩沖區(qū)中,同時(shí)發(fā)送消息通知串口主控內(nèi)核線(xiàn)程,消息中攜帶打印消息在共享內(nèi)存中的地址;串口主控內(nèi)核線(xiàn)程根據(jù)收到的消息解析出地址和長(zhǎng)度,并將該地址中的字符串送往串口打??;步驟S410,根據(jù)調(diào)試需要,由串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,串口主控內(nèi)核線(xiàn)程禁止當(dāng)前串口中斷,卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程,并發(fā)送消息通知目的內(nèi)核線(xiàn)程開(kāi)始切換串口;步驟S412,目的內(nèi)核線(xiàn)程收到開(kāi)始串口切換消息后,初始化串口芯片,加載串口驅(qū)動(dòng),打開(kāi)中斷控制器中的串口中斷屏蔽位,使能串口中斷;初始化基于串口的Shell;此時(shí)目的內(nèi)核線(xiàn)程變?yōu)榭刂拼诘拇谥骺貎?nèi)核線(xiàn)程;
步驟S414,修改共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào),發(fā)送消息通知所有內(nèi)核線(xiàn)程初始化完成消息;以及步驟S416,其他各內(nèi)核線(xiàn)程將打印信息發(fā)送到新的串口主控內(nèi)核線(xiàn)程,由當(dāng)前的串口主控內(nèi)核線(xiàn)程處理其他各線(xiàn)程發(fā)送的打印消息。
現(xiàn)有使用串口方法如圖1A所示,包括多核多線(xiàn)程處理器100、串口120、內(nèi)核線(xiàn)程101。串口120掛接在內(nèi)核線(xiàn)程101上,其他內(nèi)核線(xiàn)程通過(guò)內(nèi)核線(xiàn)程的核間消息共享使用該串口120,這種方式雖然節(jié)省了串口120,但對(duì)于其他內(nèi)核線(xiàn)程如果有較多調(diào)試信息通過(guò)核間消息傳遞,會(huì)占用較多的核間消息通訊帶寬,同時(shí)對(duì)于單個(gè)內(nèi)核線(xiàn)程調(diào)試時(shí)不能直接使用該內(nèi)核線(xiàn)程上操作系統(tǒng)自帶的Shell程序,會(huì)給軟件開(kāi)發(fā)調(diào)試帶來(lái)很大的不便。
現(xiàn)有使用串口方法如圖1B所示,通過(guò)擴(kuò)展串口120的個(gè)數(shù)使得每個(gè)串口120對(duì)應(yīng)一個(gè)內(nèi)核線(xiàn)程101,很明顯在閑置不用時(shí)會(huì)造成串口120資源的浪費(fèi)。
圖5是本發(fā)明所述復(fù)用串口方法示意圖,與前述方法相比增加了切換控制模塊510,切換控制模塊運(yùn)行在各內(nèi)核線(xiàn)程101中,可以通過(guò)軟件控制串口給指定的內(nèi)核線(xiàn)程101使用,其他內(nèi)核線(xiàn)程將打印消息寫(xiě)入共享內(nèi)存,由當(dāng)前控制串口的內(nèi)核線(xiàn)程負(fù)責(zé)接收,可以方便的根據(jù)需要使用串口調(diào)試當(dāng)前指定的內(nèi)核線(xiàn)程,同時(shí)不影響其他內(nèi)核線(xiàn)程的打印信息通道。
圖6是根據(jù)本發(fā)明實(shí)施例的復(fù)用串口方法的軟件流程圖。參照?qǐng)D6,根據(jù)本發(fā)明實(shí)施例的復(fù)用串口方法的軟件流程包括以下步驟步驟S602,系統(tǒng)上電;步驟S604,由串口主控內(nèi)核線(xiàn)程完成串口芯片初始化、串口驅(qū)動(dòng)的加載,打開(kāi)中斷控制器中的串口中斷屏蔽位,使能串口中斷;
步驟S606,初始化基于串口的Shell,建立共享內(nèi)存,為各內(nèi)核線(xiàn)程分配獨(dú)立的打印緩沖區(qū);步驟S608,串口主控內(nèi)核線(xiàn)程在共享內(nèi)存中建立各內(nèi)核線(xiàn)程的串口控制信息;步驟S610,判斷是否為切換串口消息;步驟S612,如果是打印消息,串口主控內(nèi)核線(xiàn)程根據(jù)收到的消息解析出地址和長(zhǎng)度,并將該地址中的字符串送往串口打??;步驟S614,如果是切換串口消息,串口主控內(nèi)核線(xiàn)程禁止當(dāng)前串口中斷卸載串口驅(qū)動(dòng)程序,將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程;步驟S616,串口主控內(nèi)核線(xiàn)程通知目的內(nèi)核線(xiàn)程開(kāi)始切換串口;步驟S618,目的內(nèi)核線(xiàn)程初始化串口芯片,加載串口驅(qū)動(dòng),使能串口中斷,初始化Shell;以及步驟S620,修改共享內(nèi)存中串口主控內(nèi)核線(xiàn)程號(hào)。
采用本發(fā)明所述方法,與現(xiàn)有技術(shù)相比,多個(gè)內(nèi)核線(xiàn)程通過(guò)軟件控制復(fù)用串口可以節(jié)省硬件資源和成本,提高了串口的利用率;打印信息級(jí)別的控制節(jié)省了內(nèi)核線(xiàn)程消息通訊帶寬,同時(shí)通過(guò)串口中斷在各內(nèi)核線(xiàn)程上的切換,使用內(nèi)核線(xiàn)程運(yùn)行操作系統(tǒng)自帶的shell程序,極大的方便了軟件的開(kāi)發(fā)調(diào)試。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種多核處理器,其特征在于,包括多核多線(xiàn)程處理器、串口和切換控制模塊,其中所述多核多線(xiàn)程處理器,用于運(yùn)行至少一個(gè)內(nèi)核線(xiàn)程,以及在接收到所述切換控制模塊的切換控制消息后,進(jìn)行所述串口在內(nèi)核線(xiàn)程間的切換;所述串口,用于將所述多核多線(xiàn)程處理器的所述至少一個(gè)內(nèi)核線(xiàn)程的數(shù)據(jù)發(fā)送至外部,并與用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行數(shù)據(jù)交互;以及所述切換控制模塊,連接于所述串口和所述多核多線(xiàn)程處理器之間,用于控制所述多核多線(xiàn)程處理器中的所述一個(gè)或多個(gè)內(nèi)核線(xiàn)程的切換以共享所述串口。
2.根據(jù)權(quán)利要求1所述的多核處理器,其特征在于,所述切換控制模塊定時(shí)向所述多核多線(xiàn)程處理器發(fā)送所述切換控制消息。
3.根據(jù)權(quán)利要求1所述的多核處理器,其特征在于,所述切換控制模塊向用戶(hù)提供所述各個(gè)內(nèi)核線(xiàn)程的運(yùn)行信息,在用戶(hù)指示切換所述串口主控內(nèi)核線(xiàn)程的情況下,所述切換控制模塊向所述多核多線(xiàn)程處理器發(fā)送所述切換控制命令。
4.根據(jù)權(quán)利要求2或3所述的多核處理器,其特征在于,所述多核多線(xiàn)程處理器在上電后進(jìn)行以下處理由所述串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序;為所述多核處理器中運(yùn)行的各個(gè)內(nèi)核線(xiàn)程分配獨(dú)立的數(shù)據(jù)緩沖區(qū),在所述共享內(nèi)存中建立各個(gè)內(nèi)核線(xiàn)程的串口控制信息;所述串口主控內(nèi)核線(xiàn)程向所述各個(gè)內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,所述串口初始化完成消息包括串口控制信息在所述共享內(nèi)存中的地址;以及在允許使用所述串口的情況下,所述各個(gè)內(nèi)核線(xiàn)程將需要發(fā)送的數(shù)據(jù)放入分配的數(shù)據(jù)緩沖區(qū)中并將通知消息發(fā)送至所述串口主控內(nèi)核線(xiàn)程,所述串口主控內(nèi)核線(xiàn)程根據(jù)所述通知消息將所述數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)通過(guò)所述串口發(fā)送到外部。
5.根據(jù)權(quán)利要求4所述的多核處理器,其特征在于,所述多核多線(xiàn)程處理器在接收到所述切換控制消息后進(jìn)行以下處理所述串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,禁止當(dāng)前串口中斷并卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程并發(fā)送串口切換通知消息到所述目的內(nèi)核線(xiàn)程;所述目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,將所述共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào)修改為所述目的內(nèi)核線(xiàn)程的線(xiàn)程號(hào),并將初始化完成消息發(fā)送至所有內(nèi)核線(xiàn)程,所述其他內(nèi)核線(xiàn)程將所述目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行后續(xù)處理。
6.根據(jù)權(quán)利要求5所述的多核處理器,其特征在于,所述多核多線(xiàn)程處理器的一個(gè)或多個(gè)內(nèi)核線(xiàn)程共享所述串口進(jìn)行打印。
7.一種用于多核處理器的串口復(fù)用方法,其特征在于,所述方法包括以下步驟步驟一,多核處理器上電后,由用于串口中斷掛接的串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建共享內(nèi)存,初始化基于串口的Shell程序,為所述多核處理器中運(yùn)行的各個(gè)內(nèi)核線(xiàn)程分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并在所述共享內(nèi)存中建立各個(gè)內(nèi)核線(xiàn)程的串口控制信息;步驟二,所述串口主控內(nèi)核線(xiàn)程向所述各個(gè)內(nèi)核線(xiàn)程發(fā)送串口初始化完成消息,所述串口初始化完成消息包括串口控制信息在所述共享內(nèi)存中的地址;步驟三,在允許使用所述串口的情況下,所述各個(gè)內(nèi)核線(xiàn)程將需要發(fā)送的數(shù)據(jù)放入分配的數(shù)據(jù)緩沖區(qū)中并將通知消息發(fā)送至所述串口主控內(nèi)核線(xiàn)程,所述串口主控內(nèi)核線(xiàn)程根據(jù)所述通知消息將所述數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)通過(guò)所述串口發(fā)送到外部;步驟四,在需要切換所述內(nèi)核線(xiàn)程的情況下,所述串口主控內(nèi)核線(xiàn)程發(fā)起切換串口流程,禁止當(dāng)前串口中斷并卸載串口驅(qū)動(dòng)程序,同時(shí)將串口中斷掛接到需要切換到的目的內(nèi)核線(xiàn)程并發(fā)送串口切換通知消息到所述目的內(nèi)核線(xiàn)程;步驟五,所述目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行初始化和加載驅(qū)動(dòng)程序,使能串口中斷,建立共享內(nèi)存,初始化基于串口的Shell程序,將所述共享內(nèi)存中的串口主控內(nèi)核線(xiàn)程號(hào)修改為所述目的內(nèi)核線(xiàn)程的線(xiàn)程號(hào),并將初始化完成消息發(fā)送至所有內(nèi)核線(xiàn)程,所述其他內(nèi)核線(xiàn)程將所述目的內(nèi)核線(xiàn)程作為串口主控內(nèi)核線(xiàn)程進(jìn)行后續(xù)處理。
8.根據(jù)權(quán)利要求7所述的多核處理器,其特征在于,所述切換控制模塊定時(shí)向所述多核多線(xiàn)程處理器發(fā)送所述切換控制消息。
9.根據(jù)權(quán)利要求7所述的多核處理器,其特征在于,所述切換控制模塊向用戶(hù)提供所述各個(gè)內(nèi)核線(xiàn)程的運(yùn)行信息,在用戶(hù)指示切換所述串口主控內(nèi)核線(xiàn)程的情況下,所述切換控制模塊向所述多核多線(xiàn)程處理器發(fā)送所述切換控制命令。
10.根據(jù)權(quán)利要求7至9中任一項(xiàng)所述的串口復(fù)用方法,其特征在于,所述多核處理器中的至少一個(gè)內(nèi)核線(xiàn)程共享所述串口進(jìn)行打印。
全文摘要
本發(fā)明披露了一種多核處理器和用于多核處理器的串口復(fù)用方法包括多核多線(xiàn)程處理器,用于運(yùn)行至少一個(gè)內(nèi)核線(xiàn)程,以及在接收到切換控制模塊的切換控制消息后,進(jìn)行串口在內(nèi)核線(xiàn)程間的切換;串口,用于將多核多線(xiàn)程處理器的至少一個(gè)內(nèi)核線(xiàn)程的數(shù)據(jù)發(fā)送至外部,并與串口主控內(nèi)核線(xiàn)程進(jìn)行數(shù)據(jù)交互;以及切換控制模塊,連接于串口和多核多線(xiàn)程處理器之間,用于控制多核多線(xiàn)程處理器中的一個(gè)或多個(gè)內(nèi)核線(xiàn)程的切換以共享串口。
文檔編號(hào)G06F15/16GK101067794SQ20071010866
公開(kāi)日2007年11月7日 申請(qǐng)日期2007年6月14日 優(yōu)先權(quán)日2007年6月14日
發(fā)明者趙陽(yáng), 于偉, 賈皓昕, 王守林, 楊凡 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
页游| 台中市| 辛集市| 岳西县| 洛南县| 靖江市| 叙永县| 仪征市| 曲麻莱县| 乾安县| 姜堰市| 宜城市| 孝义市| 阿城市| 石家庄市| 三门县| 万载县| 漯河市| 许昌县| 葫芦岛市| 霍州市| 黔西| 舒兰市| 湘乡市| 彝良县| 南陵县| 阳谷县| 始兴县| 霍邱县| 芜湖县| 上虞市| 左贡县| 都安| 青海省| 富平县| 都昌县| 洛南县| 利津县| 弥渡县| 芦溪县| 墨竹工卡县|