專(zhuān)利名稱(chēng):多核處理器復(fù)用串口的方法及串口復(fù)用裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤指一種使用單個(gè)串口監(jiān)控多核處理器多個(gè)處 理核心運(yùn)4亍狀態(tài)的多核處理器復(fù)用串口的方法及串口復(fù)用裝置。
背景技術(shù):
目前,嵌入式系統(tǒng)一般都沒(méi)有可視化的監(jiān)視器,只能通過(guò)外接字符終端監(jiān) 控系統(tǒng)中設(shè)備的運(yùn)行狀態(tài),字符終端與嵌入式設(shè)備最常用的連接方式為串口 (串行通信接口,用于串行式逐位元數(shù)據(jù)傳輸)連接。字符終端通常使用PC機(jī)終端軟件實(shí)現(xiàn),通過(guò)PC機(jī)的串口設(shè)備與被監(jiān)控的嵌入式設(shè)備的串口設(shè)備之間的串口連接來(lái)實(shí)現(xiàn)監(jiān)控,如圖l所示即為嵌入式設(shè)備與PC機(jī)的連接關(guān)系。嵌入式設(shè)備的系統(tǒng)軟件與終端軟件建立串口通信連接后,用戶(hù)或者開(kāi)發(fā)人員就通過(guò)終端軟件監(jiān)控嵌入式設(shè)備系統(tǒng)軟件的運(yùn)行狀態(tài) 了。具體通過(guò)嵌入式設(shè)備的系統(tǒng)軟件接收終端軟件發(fā)送的監(jiān)控命令,以及向終 端軟件發(fā)送系統(tǒng)運(yùn)行狀態(tài)信息的方式實(shí)現(xiàn)。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,嵌入設(shè)備中配置單核心處理器已經(jīng)不能滿(mǎn)足高速網(wǎng)絡(luò)應(yīng)用對(duì)處理性能的需求了。如圖2所示,在一個(gè)芯片上集成多個(gè)處理核心、 能并行地運(yùn)行不同的程序多核心處理器(多核處理器)在網(wǎng)絡(luò)通信領(lǐng)域得到廣 泛應(yīng)用。如圖2所示,多核處理器通常是共享內(nèi)存的,如圖中C0RE1、CORE2........ COREN多個(gè)處理核心通過(guò)內(nèi)部互聯(lián)總線(xiàn)共享一個(gè)內(nèi)存(Memory )。由于目前的嵌入式設(shè)備一般都只提供一個(gè)串口 ,在對(duì)配置多核處理器的嵌 入式設(shè)備進(jìn)行監(jiān)控時(shí),其多個(gè)處理核心都需要通過(guò)同一個(gè)串口與終端軟件進(jìn)行 信息交互,當(dāng)多個(gè)處理核心都需要向外輸出監(jiān)控信息(包括用戶(hù)所需的系統(tǒng)狀態(tài)信息、開(kāi)發(fā)人員所需的調(diào)試信息等等)時(shí),則需要竟?fàn)幨褂谩,F(xiàn)有技術(shù)中, 一般是通過(guò)加鎖的方式來(lái)解決多個(gè)處理核心之間的竟?fàn)庩P(guān)系。如圖3所示,多個(gè)處理核心COREl、 CORE2........ COREN竟?fàn)幷{(diào)取字符串打印函數(shù),搶到鎖的處理核心占用字符串打印函數(shù),執(zhí)行圖中所述的加鎖、 將字符串逐個(gè)輸出到串口,然后解鎖的才喿作。 現(xiàn)有技術(shù)的處理方式存在以下問(wèn)題(1) 由于串口通信速率比較低,打印字符的速度比較慢,逐個(gè)打印字符 串將消糾目當(dāng)長(zhǎng)的時(shí)間。再加上加、解鎖所耗費(fèi)的時(shí)間,導(dǎo)致一個(gè)處理核心搶 到鎖進(jìn)入上述字符串打印函數(shù)之后,其他處理核心則由于無(wú)法4爪住鎖而處于長(zhǎng) 時(shí)間的忙等待狀態(tài)。這種長(zhǎng)時(shí)間的等待,對(duì)于處理高速報(bào)文轉(zhuǎn)發(fā)業(yè)務(wù)的多個(gè)處 理核心而言,是很難承受的,其大大影響系統(tǒng)的運(yùn)行效率,降低了系統(tǒng)的并發(fā) 性能。(2) 由于多個(gè)處理核心竟?fàn)幫粋€(gè)串口,導(dǎo)致輸出信息紊亂。由于各個(gè)處理核心都調(diào)用相同的字符串打印函數(shù),每次抓到鎖均只能輸出 一個(gè)字符串,而每完成一次監(jiān)控過(guò)程均需要輸出包含多個(gè)字符串的一組監(jiān)控信 息,因此當(dāng)對(duì)多個(gè)處理核心進(jìn)行監(jiān)控時(shí),相互之間的監(jiān)控信息輸出可能會(huì)相互 凌亂交叉,導(dǎo)致用戶(hù)或者開(kāi)發(fā)人員在字符終端中無(wú)法獲取到清楚輸出信息,甚 至無(wú)法對(duì)系統(tǒng)實(shí)施有效監(jiān)控。舉例說(shuō)明如下例如處理核心CORE1需要輸出一組監(jiān)控信息,包括三個(gè)字符串(這里 以符號(hào)代替):COREl—STR1 、CORE1—STR2、COREl_STR3。而處理核心CORE2 也需要輸出一組監(jiān)控信息,也包括三個(gè)字符串C0RE2_STR1、 CORE2—STR2、 CORE2一STR3。設(shè)字符串打印函數(shù)為PRINT,則COREl的監(jiān)控信息輸出程序?yàn)镻麵T("C0RE1一STR1");PRINT("CORE 1—STR2");PRINT("COREl一STR3");同樣,CORE2的監(jiān)控信息輸出程序?yàn)?PRINT("CORE2_STRl"); P畫(huà)T("CORE2—STR2,,); PRINT("CORE2一STR3");但是,由于COREl、 CORE2是并行運(yùn)行各自的監(jiān)控程序,上述調(diào)用字符 串打印函數(shù)的時(shí)間順序可相互交叉,最終打印到字符終端的輸出信息隨調(diào)用程 序順序的不同,可能出現(xiàn)多種情況,例如可能輸出如下順序的輸出信息CORE2—STR1CORE1—STR1COREl一STR2CORE2—STR2COREl_STR3CORE2一STR3可見(jiàn),上述最終輸出信息中,CORE1與CORE2的監(jiān)控信息交叉紊亂了。 當(dāng)多核處理器的處理核心數(shù)目較多,且監(jiān)控信息較復(fù)雜時(shí),交叉紊亂后的信息 可能就會(huì)變得無(wú)法讀取,導(dǎo)致用戶(hù)及開(kāi)發(fā)人員無(wú)法對(duì)系統(tǒng)實(shí)施有效監(jiān)控。發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種多核處理器復(fù)用串口的方法及串口復(fù)用裝置,用以 解決現(xiàn)有技術(shù)中多個(gè)處理核心復(fù)用串口時(shí)運(yùn)行效率低、輸出信息混亂的問(wèn)題。一種多核處理器復(fù)用串口的方法,預(yù)先設(shè)置若千監(jiān)控信息輸出隊(duì)列,所述 監(jiān)控信息輸出隊(duì)列與所述多核處理器包含的多個(gè)處理核心——對(duì)應(yīng);該方法包 括獲取所述處理核心輸出的監(jiān)控信息,將所述監(jiān)控信息傳送到與所述處理核 心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存;當(dāng)確定所述監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控信息時(shí),將該組監(jiān)控信息 通過(guò)共用的串口輸出。一種串口復(fù)用裝置,包括輸出代理模塊、輸出主控模塊和若干監(jiān)控信息 輸出隊(duì)列,所述監(jiān)控信息輸出隊(duì)列與多核處理器包含的多個(gè)處理核心——對(duì)應(yīng);輸出代理模塊,用于獲取所述處理核心輸出的監(jiān)控信息,將所述監(jiān)控信息傳送到與所述處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存;所述監(jiān)控信息輸出隊(duì)列,用于暫存所述輸出代理模塊傳送的所述處理核心輸出的監(jiān)控信息;所述輸出主控模塊,用于當(dāng)確定所述監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控 信息時(shí),將所述一組監(jiān)控信息通過(guò)共用的串口輸出。本發(fā)明實(shí)施例提供的多核處理器復(fù)用串口的方法及串口復(fù)用裝置,通過(guò)預(yù) 先設(shè)置若干與多核處理器包含的多個(gè)處理核心——對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列, 實(shí)現(xiàn)將各個(gè)處理核心的輸出監(jiān)控信息進(jìn)行分離和暫存,當(dāng)某個(gè)處理核心的一組 監(jiān)控信息完全暫存到對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列后,再通過(guò)共用的串口進(jìn)行輸 出。在多核處理器運(yùn)行并行程序、多個(gè)處理核心共用一個(gè)串口時(shí),可以并行獲 取多個(gè)處理核心輸出的監(jiān)控信息,并通過(guò)設(shè)置的監(jiān)控信息輸出隊(duì)列分別暫存每 個(gè)處理核心的監(jiān)控信息,使得每個(gè)處理核心可以及時(shí)輸出監(jiān)控信息,避免了在 其他處理核心輸出監(jiān)控信息時(shí)進(jìn)行等待的過(guò)程,從而避免了多個(gè)處理核心竟?fàn)?同一個(gè)串口而造成的效率低下和輸出信息混亂的問(wèn)題,能夠?qū)崿F(xiàn)復(fù)用串口的多個(gè)處理核心的監(jiān)控信息的完整、正確的輸出,避免了輸出信息混亂,提高了監(jiān) 控效率。
圖1為現(xiàn)有技術(shù)中嵌入式設(shè)備與PC機(jī)的連接關(guān)系示意圖; 圖2為現(xiàn)有技術(shù)中多核處理器的結(jié)構(gòu)示意圖; 圖3為現(xiàn)有技術(shù)中多核處理器共用一個(gè)串口的方法流程圖; 圖4為本發(fā)明實(shí)施例中多核處理器復(fù)用串口的方法流程圖;圖5為本發(fā)明實(shí)施例中串口復(fù)用裝置的結(jié)構(gòu)示意圖; 圖6為本發(fā)明實(shí)施例中輸出代理才莫塊的具體操作流程圖; 圖7為本發(fā)明實(shí)施例中輸出主控模塊的具體操作流程圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例提供的多核處理器復(fù)用串口的方法,預(yù)先設(shè)置監(jiān)控信息輸出 隊(duì)列,其中設(shè)置的監(jiān)控信息輸出隊(duì)列與多核處理器包含的多個(gè)處理核心——對(duì) 應(yīng),通過(guò)將各個(gè)處理核心的監(jiān)控信息暫存到各自對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中, 當(dāng)一組監(jiān)控信息暫存完畢后,再進(jìn)行串口輸出,以避免竟?fàn)幒头乐剐畔⑤敵鑫?亂。
采用上述方式對(duì)多核處理器進(jìn)行狀態(tài)監(jiān)控的具體流程如圖4所示,執(zhí)行步 驟如下
步驟S1:獲取處理核心輸出的監(jiān)控信息,將獲取到的監(jiān)控信息傳送到與該 處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中。具體包括
獲取輸出監(jiān)控信息的處理核心的ID號(hào),根據(jù)ID號(hào)確定與該處理核心對(duì)應(yīng) 的監(jiān)控信息輸出隊(duì)列,然后將獲取到的監(jiān)控信息傳送給確定出的監(jiān)控信息輸出 隊(duì)列。
該步驟中可以并行獲取多個(gè)處理核心輸出的監(jiān)控信息。也就是說(shuō),當(dāng)多個(gè) 處理核心同時(shí)又監(jiān)控信息需要輸出時(shí),可以并行處理,并將各處理核心輸出的 監(jiān)控信息分別傳送到對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中,這樣使得每個(gè)處理核心可以 及時(shí)輸出監(jiān)控信息,避免了在其他處理核心輸出監(jiān)控信息時(shí)進(jìn)行等待的過(guò)程。 步驟S2:監(jiān)控信息輸出隊(duì)列將接收到的監(jiān)控信息按順序暫存。 監(jiān)控信息輸出隊(duì)列接收到傳送過(guò)來(lái)的監(jiān)控信息時(shí),將接收到的監(jiān)控信息按 順序暫存起來(lái)。
步驟S3:確定監(jiān)控信息輸出隊(duì)列中是否暫存有一組監(jiān)控信息。 若是,執(zhí)行步驟S4;否則,執(zhí)行步驟S6。判斷步驟Sl獲取到的監(jiān)控信息中是否包含有設(shè)定的監(jiān)控信息結(jié)束符,當(dāng)
獲取到的監(jiān)控信息中包含有設(shè)定的監(jiān)控信息結(jié)束符時(shí),確定發(fā)送該監(jiān)控信息的
所屬處理核心所對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存有完整的一組監(jiān)控信息;否 則,確定各監(jiān)控信息輸出隊(duì)列中均未暫存有完整的一組監(jiān)控信息。
由于處理核心針對(duì)每一次監(jiān)控流程輸出的監(jiān)控狀態(tài)消息一般包含多個(gè)字 符串,即每次會(huì)輸出一組監(jiān)控狀態(tài)消息,并且可能分多次輸出,所以不能因一 個(gè)字符串的輸出結(jié)束作為一組監(jiān)控信息的結(jié)束標(biāo)志,因此,需要設(shè)置一個(gè)特殊 的控制字符作為一組監(jiān)控信息的結(jié)束標(biāo)志,例如,設(shè)置一個(gè)結(jié)束符 CHAR—INFO_END,當(dāng)輸出的監(jiān)控信息中包含該結(jié)束符時(shí),認(rèn)為本次監(jiān)控流程 要輸出的一組監(jiān)控信息已經(jīng)輸出完畢。
步驟S4:判斷是否允許輸出該組監(jiān)控信息。若是,則執(zhí)行步驟S5;否貝寸, 執(zhí)行步驟S6。
預(yù)先設(shè)置用于控制是否允許輸出各處理核心的監(jiān)控信息的允許輸出標(biāo)志;
判斷是否允許輸出該組監(jiān)控信息,具體包括檢查獲取到的監(jiān)控信息所屬 的監(jiān)控信息輸出隊(duì)列所對(duì)應(yīng)的處理核心的允許輸出標(biāo)志,當(dāng)檢測(cè)到允許輸出標(biāo) 志時(shí)確認(rèn)允許輸出該組監(jiān)控信息;否則認(rèn)為不允許輸出該組監(jiān)控信息。
該步驟為可選步驟,可以設(shè)置當(dāng)暫存有完整的 一組監(jiān)控信息時(shí)默認(rèn)為可以 輸出,則不必再執(zhí)行該步驟。
步驟S5:將上述一組監(jiān)控信息通過(guò)共用的串口輸出。
共用的串口包括RS-232-C、 RS-422、 RS485、 USB等串行通訊接口,其 中,RS-232-C是目前最常用的一種串行通訊接口,也稱(chēng)標(biāo)準(zhǔn)串口。
此時(shí)輸出是某一個(gè)處理核心的一組監(jiān)控信息,其能夠按照正確的順序完整 的輸出,不會(huì)與其他處理核心的監(jiān)控信息發(fā)生混亂。
由于采用了與每個(gè)處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列,并設(shè)置結(jié)束符來(lái)確 定處理核心已發(fā)送完一組監(jiān)控信息,因此,若一組監(jiān)控信息中包含三個(gè)字符串 STR1、 STR2、 STR3,則每次通過(guò)串口輸出的一組監(jiān)控信息如下PRINT("STR1"); PRINT("STR2,,); P腿T("STR3"); PRINT(CHAR一INFO一END)。 步驟S6:結(jié)束。
當(dāng)有處理核心要輸出監(jiān)控信息時(shí),均會(huì)啟動(dòng)上述流程;當(dāng)多個(gè)處理核心同 時(shí)有監(jiān)控信息需要輸出時(shí),可以并行處理。
本發(fā)明實(shí)施例提供的上述多核處理器復(fù)用串口的方法通過(guò)構(gòu)建的串口復(fù) 用裝置實(shí)現(xiàn),如圖5所示,該串口復(fù)用裝置包括輸出代理模塊IO、預(yù)先設(shè)定 的若干監(jiān)控信息輸出隊(duì)列20和輸出主控模塊30,其中,監(jiān)控信息輸出隊(duì)列20 與多核處理器包含的多個(gè)處理核心40——對(duì)應(yīng)。
即每個(gè)處理核心(CORE)設(shè)置有一個(gè)私有的監(jiān)控信息輸出隊(duì)列20。對(duì)于 具備N(xiāo)個(gè)CORE的嵌入式設(shè)備,則需要N個(gè)監(jiān)控信息輸出隊(duì)列與之——對(duì)應(yīng),
例如,圖5中所示的處理核心CORE 1、 CORE 2........ COREN,分別對(duì)應(yīng)
著預(yù)先設(shè)置的監(jiān)控信息輸出隊(duì)列Ql、 Q2........ QN。
輸出代理模塊10,用于獲取處理核心40輸出的監(jiān)控信息,將獲取到的監(jiān) 控信息傳送到與該處理核心40對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列20中暫存。也就是i兌, 輸出代理模塊10可以^皮各個(gè)處理核心40調(diào)用,接收當(dāng)前調(diào)用的處理核心輸出 的監(jiān)控信息,并確定其對(duì)應(yīng)的監(jiān)控狀態(tài)輸出隊(duì)列20,以便實(shí)現(xiàn)將其暫存到正確 的監(jiān)控狀態(tài)輸出隊(duì)列20中。
較佳的,上述輸出代理模塊10,還用于當(dāng)獲取到的監(jiān)控信息中包含有設(shè) 定的監(jiān)控信息結(jié)束符時(shí),確定發(fā)送該監(jiān)控信息的所屬處理核心40所對(duì)應(yīng)的監(jiān) 控信息輸出隊(duì)列20中暫存有一組監(jiān)控信息,并發(fā)送通告消息給所述輸出主控 模塊30。
較佳的,上述輸出代理模塊10,具體包括獲取單元101和暫存單元102。 獲取單元101,用于獲取輸出監(jiān)控信息的處理核心的ID號(hào),根據(jù)獲取的ID號(hào)確定與該處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列。
暫存單元102,用于將獲取到的監(jiān)控信息按順序暫存到確定出的監(jiān)控信息 輸出隊(duì)列中。
較佳的,上述輸出^理才莫塊10,還包4舌確定單元103和通知單元104;
確定單元103,用于根據(jù)獲取到的監(jiān)控信息中包含有設(shè)定的監(jiān)控信息結(jié)束 符,確定發(fā)送該監(jiān)控信息的所屬處理核心所對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中是否暫 存有一組監(jiān)控信息。
通知單元104,用于當(dāng)確定單元103確定出監(jiān)控信息輸出隊(duì)列20中暫存有 一組監(jiān)控信息時(shí),發(fā)送通告消息給輸出主控模塊30。
監(jiān)控信息輸出隊(duì)列20,用于暫存輸出代理模塊10傳送的與自身對(duì)應(yīng)的處 理核心40輸出的監(jiān)控信息。
輸出主控模塊30,用于當(dāng)確定監(jiān)控信息輸出隊(duì)列20中暫存有一組監(jiān)控信 息時(shí),將一組監(jiān)控信息通過(guò)共用的串口輸出。也就是說(shuō),輸出主控模塊30負(fù) 責(zé)從與各個(gè)處理核心40對(duì)應(yīng)的監(jiān)控狀態(tài)輸出隊(duì)列20中收集完整存儲(chǔ)后的一組 監(jiān)控信息,并將其通過(guò)共用的串口輸出。
較佳的,上述輸出主控模塊30,還用于確定監(jiān)控信息輸出隊(duì)列20中暫 存有一組監(jiān)控信息之后,判斷是否允許輸出一組監(jiān)控信息,當(dāng)允許時(shí)再執(zhí)^"將 所述一組監(jiān)控信息通過(guò)共用的串口輸出的步驟。具體為當(dāng)輸出主控模塊30 接收到的輸出代理模塊IO發(fā)送的通告消息時(shí),確定監(jiān)控信息輸出隊(duì)列20中暫 存有一組監(jiān)控信息。
較佳的,上述輸出主控模塊30,具體包括接收單元301、判斷單元302 和輸出單元303。
接收單元301,用于接收輸出代理模塊10發(fā)送的通告消息。
判斷單元302,用于根據(jù)接收單元301接收到的通告消息,檢查監(jiān)控信息 輸出隊(duì)列20中暫存的一組監(jiān)控信息所屬的監(jiān)控信息輸出隊(duì)列所對(duì)應(yīng)的處理核 心40的允許輸出標(biāo)志,當(dāng)檢測(cè)到允許輸出標(biāo)志時(shí)確認(rèn)允許輸出該組監(jiān)控信息。輸出單元303,用于當(dāng)判斷單元302確定允許輸出監(jiān)控信息時(shí),將監(jiān)控信 息輸出隊(duì)列20中暫存的一組監(jiān)控信息通過(guò)共用的串口輸出。
上述輸出代理模塊10提供給所有處理核心使用,即每個(gè)處理核心均可以 調(diào)用,在當(dāng)前調(diào)用它的處理核心中運(yùn)行,這樣使得每個(gè)處理核心可以及時(shí)輸出 監(jiān)控信息,避免了在其他處理核心輸出監(jiān)控信息時(shí)進(jìn)行等待的過(guò)程。監(jiān)控信息 輸出函數(shù)接口 (PRINT)由上述輸出代理模塊提供。而輸出主控模塊30只需 在設(shè)定的一個(gè)處理核心中運(yùn)行即可,運(yùn)行輸出主控模塊的處理核心也可以稱(chēng)為 主控核。
上述輸出代理才莫塊IO進(jìn)行監(jiān)控信息輸出代理的具體實(shí)現(xiàn)流程如圖6所示, 包括下列步驟
步驟Sll:獲取輸出監(jiān)控信息的處理核心的ID號(hào)。
由于處理核心有監(jiān)控信息要輸出時(shí),首先會(huì)調(diào)用輸出代理模塊所提供的 PRINT接口函數(shù),各個(gè)處理核心通過(guò)調(diào)用PRINT接口函數(shù)實(shí)現(xiàn)將各自的監(jiān)控 信息通過(guò)輸出代理模塊輸傳送到監(jiān)控信息輸出隊(duì)列中。因此,輸出代理模塊獲 取當(dāng)前調(diào)用PRINT接口函數(shù)的處理核心的ID號(hào),以確定當(dāng)前輸出監(jiān)控信息的 處理核心是哪一個(gè)。
步驟S12:根據(jù)ID號(hào)確定與該處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列。 確定出是哪個(gè)處理核心輸出監(jiān)控信息后,才艮據(jù)該處理核心與監(jiān)控信息輸出 隊(duì)列的對(duì)應(yīng)關(guān)系,才艮據(jù)ID號(hào)確定與該處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列。 步驟S13:將輸出的監(jiān)控信息傳送給確定出的監(jiān)控信息輸出隊(duì)列進(jìn)行暫存。 確定出對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列后,將輸出的監(jiān)控信息傳送到該隊(duì)列中, 并暫存在該隊(duì)列的末尾。
也就是說(shuō),輸出代理模塊所提供的PRINT接口函數(shù)并不直接將輸出的監(jiān) 控信息輸出到串口 ,而是將監(jiān)控信息提供到監(jiān)控信息輸出隊(duì)列中暫存起來(lái)。 步驟S14:輸出的監(jiān)控信息中是否包含監(jiān)控信息結(jié)束符。 由于當(dāng)一組監(jiān)控信息輸出完畢時(shí),PRINT接口函數(shù)會(huì)緊接著輸出標(biāo)志結(jié)束的監(jiān)控信息結(jié)束符,因此,當(dāng)輸出地監(jiān)控信息中包含結(jié)束符CHARJNFO一END 時(shí),則認(rèn)為本次監(jiān)控流程要輸出的一組監(jiān)控信息已經(jīng)輸出完畢。 若是,執(zhí)行步驟S15,否則,執(zhí)行步驟S16。
步驟S15:通知輸出主控模塊監(jiān)控信息輸出隊(duì)列中暫存了 一組監(jiān)控信息。
輸出代理模塊可以發(fā)送通告消息通知輸出主控模塊,表明某個(gè)監(jiān)控信息輸 出隊(duì)列中暫存了完整的一組監(jiān)控信息,需要輸出。當(dāng)然也可以釆用任何其他可 以通知輸出主控模塊的方式。
步驟S16:結(jié)束。
等待下一輪的輸出狀態(tài)信息。
輸出代理模塊將信息暫存到監(jiān)控信息輸出隊(duì)列中之后,它的任務(wù)就完成 了,監(jiān)控信息的輸出則由輸出主控模塊來(lái)執(zhí)行。輸出主控模塊確定某個(gè)監(jiān)控信 息輸出隊(duì)列中有完整的一組監(jiān)控信息待輸出時(shí),提取待輸出的信息并通過(guò)串口 輸出。
上述輸出主控才莫塊30控制監(jiān)控信息輸出的具體實(shí)現(xiàn)流程如圖7所示,包 括下列步驟
步驟S21:接收輸出代理才莫塊發(fā)送的通告消息。
輸出主控模塊接收到輸出代理模塊發(fā)送的通告消息時(shí),啟動(dòng)通過(guò)串口輸出 監(jiān)控信息的流程。
步驟S22:根據(jù)接收到的通告消息,確定出對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列。 輸出主控模塊根據(jù)接收到的通告消息,確定出對(duì)應(yīng)的是哪個(gè)處理核心,從 而確定出是哪個(gè)監(jiān)控信息輸出隊(duì)列中有完整的一組監(jiān)控信息。
步驟S23:從確定出的監(jiān)控信息輸出隊(duì)列中提取出一組監(jiān)控信息。 輸出主控模塊確定出對(duì)應(yīng)的有完整的 一組監(jiān)控信息的監(jiān)控信息輸出隊(duì)列 后,從隊(duì)列中依次提取出這一組監(jiān)控信息,具體為依次提取包含的各個(gè)字符串, 當(dāng)提取到設(shè)定結(jié)束符時(shí),則認(rèn)為提取到了一組完整的監(jiān)控信息。 步驟S24:判斷是否允許輸出該組監(jiān)控信息。每個(gè)CORE預(yù)先設(shè)置了允許輸出監(jiān)控信息的允許輸出標(biāo)志,通過(guò)更改設(shè)置 的允許輸出標(biāo)志改變各個(gè)CORE信息輸出狀態(tài)。即當(dāng)只需要監(jiān)控部分CORE 時(shí),則可以通過(guò)設(shè)置是否允許輸出各個(gè)CORE的監(jiān)控信息,以屏蔽其他不需要 監(jiān)控的CORE的監(jiān)控信息的輸出,以進(jìn)一步減少千擾,提高監(jiān)控的效率。
輸出主控模塊則根據(jù)是否有設(shè)置的允許輸出標(biāo)志判斷是否允許輸出該處 理核心的監(jiān)控信息。
當(dāng)允許時(shí),執(zhí)行步驟S25,否則,執(zhí)行步驟S26。
步驟S25:將一組監(jiān)控信息通過(guò)共用的串口輸出。
即每次有完整的一組監(jiān)控信息時(shí),才會(huì)一次性將這一組監(jiān)控信息完整輸 出。并且,雖輸出代理模塊10可以并行地將各處理核心的監(jiān)控信息暫存到監(jiān) 控信息輸出隊(duì)列,并且在監(jiān)控信息中包含監(jiān)控信息結(jié)束符時(shí)向輸出主控模塊30 發(fā)出通告消息,但輸出主控模塊30卻是串行地處理各個(gè)通告消息,因此,不 會(huì)造成各個(gè)CORE之間的監(jiān)控信息紊亂,即由于每個(gè)輸出隊(duì)列中只有一個(gè) CORE的監(jiān)控信息,因此不會(huì)造成一組完整的監(jiān)控信息中間穿插入其它CORE 的監(jiān)控信息的情況出現(xiàn)。
步驟S26:丟棄該組監(jiān)控信息。
本發(fā)明實(shí)施例提供的多核處理器復(fù)用串口的方法及串口復(fù)用裝置,在多核 處理器共用單個(gè)串口的情況下,實(shí)現(xiàn)對(duì)多個(gè)處理核心的監(jiān)控信息的方便而有效 地監(jiān)控和管理。
各個(gè)CORE輸出監(jiān)控信息到各自私有的監(jiān)控信息輸出隊(duì)列中,相互之間沒(méi) 有共享資源,不需要加鎖,避免了相互之間加鎖導(dǎo)致忙等待而造成效率低下, 從而避免了現(xiàn)有技術(shù)中通iii口鎖方式實(shí)現(xiàn)串口復(fù)用所帶來(lái)的系統(tǒng)性能損耗,并 很好的解決監(jiān)控輸出信息紊亂問(wèn)題,且可以方便的控制每個(gè)處理器核心的監(jiān)控 信息是否輸出,使得用戶(hù)及開(kāi)發(fā)人員對(duì)嵌入式系統(tǒng)的監(jiān)控效率得到很大程度的 提升。
由于各個(gè)CORE的監(jiān)控信息都是按照輸出順序進(jìn)入各自對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列的,通過(guò)串口輸出時(shí)也是按順序一次輸出一組完整的監(jiān)控信息,因此
不會(huì)導(dǎo)致各個(gè)CORE之間的監(jiān)控信息輸出紊亂。且通過(guò)結(jié)束符的設(shè)置,有效的 保證了各個(gè)處理核心輸出的一組監(jiān)控信息完整、正確。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局 限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易 想到的變化、替換或應(yīng)用到其他類(lèi)似的裝置,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之 內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書(shū)的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1、一種多核處理器復(fù)用串口的方法,其特征在于,預(yù)先設(shè)置若干監(jiān)控信息輸出隊(duì)列,所述監(jiān)控信息輸出隊(duì)列與所述多核處理器包含的多個(gè)處理核心一一對(duì)應(yīng);該方法包括獲取所述處理核心輸出的監(jiān)控信息,將所述監(jiān)控信息傳送到與所述處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存;當(dāng)確定所述監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控信息時(shí),將該組監(jiān)控信息通過(guò)共用的串口輸出。
2、 如權(quán)利要求1所述的方法,其特征在于,所述確定所述監(jiān)控信息輸出 隊(duì)列中暫存有一組監(jiān)控信息之后,還包括判斷是否允許輸出該組監(jiān)控信息, 當(dāng)允許時(shí)再執(zhí)行將該組監(jiān)控信息通過(guò)共用的串口輸出的步驟。
3、 如權(quán)利要求2所述的方法,其特征在于,預(yù)先設(shè)置用于控制是否允許 輸出所述處理核心的監(jiān)控信息的允許輸出標(biāo)志;所述判斷是否允許輸出該組監(jiān)控信息,具體包括檢查所述監(jiān)控信息所屬 的監(jiān)控信息輸出隊(duì)列所對(duì)應(yīng)的所述處理核心的允許輸出標(biāo)志,當(dāng)檢測(cè)到允許輸 出標(biāo)志時(shí)確認(rèn)允許輸出該組監(jiān)控信息。
4、 如權(quán)利要求1所述的方法,其特征在于,所述將所述監(jiān)控信息傳送到 與所述處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存;具體包括獲取輸出監(jiān)控信息的處理核心的ID號(hào);根據(jù)所述ID號(hào)確定與該處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列;將獲取到的監(jiān)控信息按順序暫存到確定出的所述監(jiān)控信息輸出隊(duì)列中。
5、 如權(quán)利要求1-4任一所述的方法,其特征在于,當(dāng)獲取到的監(jiān)控信息 中包含有設(shè)定的監(jiān)控信息結(jié)束符時(shí),確定發(fā)送該監(jiān)控信息的所屬處理核心所對(duì) 應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控信息。
6、 一種串口復(fù)用裝置,其特征在于,包括輸出代理模塊、輸出主控模塊和若干監(jiān)控信息輸出隊(duì)列,所述監(jiān)控信息輸出隊(duì)列與多核處理器包含的多個(gè)處理核心--7十應(yīng);輸出代理模塊,用于獲取所述處理核心輸出的監(jiān)控信息,將所述監(jiān)控信息 傳送到與所述處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存;所述監(jiān)控信息輸出隊(duì)列,用于暫存所述輸出代理模塊傳送的所述處理核心 輸出的監(jiān)控信息;所述輸出主控模塊,用于當(dāng)確定所述監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控 信息時(shí),將所述一組監(jiān)控信息通過(guò)共用的串口輸出。
7、 如權(quán)利要求6所述的裝置,其特征在于,所述輸出主控模塊,還用于 確定所述監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控信息之后,判斷是否允許輸出所 述一組監(jiān)控信息,當(dāng)允許時(shí)再執(zhí)行將該組監(jiān)控信息通過(guò)共用的串口輸出的步 驟。
8、 如權(quán)利要求6或7所述的裝置,其特征在于,所述輸出代理模塊,還 用于當(dāng)獲取到的監(jiān)控信息中包含有設(shè)定的監(jiān)控信息結(jié)束符時(shí),確定發(fā)送該監(jiān) 控信息的所屬處理核心所對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控信息,并 發(fā)送通告消息給所述輸出主控模塊;所述輸出主控才莫塊接收到所述通告消息時(shí),確定所述監(jiān)控信息輸出隊(duì)列中 暫存有一組監(jiān)控信息。
9、 如權(quán)利要求8所述的裝置,其特征在于,所述輸出代理模塊,具體包括獲取單元,用于獲取輸出監(jiān)控信息的處理核心的ID號(hào),根據(jù)所述ID號(hào)確 定與該處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列;暫存單元,用于將獲取到的監(jiān)控信息按順序暫存到確定出的所述監(jiān)控信息 輸出隊(duì)列中。
10、 如權(quán)利要求9所述的裝置,其特征在于,所述輸出代理模塊,還包括: 確定單元和通知單元;所述確定單元,用于根據(jù)獲取到的監(jiān)控信息中包含有設(shè)定的監(jiān)控信息結(jié)束 符,確定發(fā)送該監(jiān)控信息的所屬處理核心所對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中是否暫存有一組監(jiān)控信息;所述通知單元,用于當(dāng)所述確定單元確定出所述監(jiān)控信息輸出隊(duì)列中暫存 有一組監(jiān)控信息時(shí),發(fā)送通告消息給所述輸出主控才莫塊。
11、如權(quán)利要求8所述的裝置,其特征在于,所述輸出主控模塊,具體包括接收單元,用于接收所述輸出代理模塊發(fā)送的通告消息;判斷單元,用于才艮據(jù)所述接收單元接收到的所述通告消息,4全查所述一組監(jiān)控信息所屬的監(jiān)控信息輸出隊(duì)列所對(duì)應(yīng)的所述處理核心的允許輸出標(biāo)志,當(dāng)檢測(cè)到允許輸出標(biāo)志時(shí)確認(rèn)允許輸出該組監(jiān)控信息;輸出單元,用于當(dāng)所述判斷單元確定允許輸出監(jiān)控信息時(shí),將所述一組監(jiān)控信息通過(guò)共用的串口輸出。
全文摘要
本發(fā)明公開(kāi)了一種多核處理器復(fù)用串口的方法及串口復(fù)用裝置,該方法包括預(yù)先設(shè)置若干監(jiān)控信息輸出隊(duì)列,所述監(jiān)控信息輸出隊(duì)列與所述多核處理器包含的多個(gè)處理核心一一對(duì)應(yīng);對(duì)多核處理器進(jìn)行狀態(tài)監(jiān)控的流程包括獲取所述處理核心輸出的監(jiān)控信息,將所述監(jiān)控信息傳送到與所述處理核心對(duì)應(yīng)的監(jiān)控信息輸出隊(duì)列中暫存;當(dāng)確定所述監(jiān)控信息輸出隊(duì)列中暫存有一組監(jiān)控信息時(shí),將該組監(jiān)控信息通過(guò)共用的串口輸出。上述方法及裝置能夠?qū)崿F(xiàn)復(fù)用串口的多個(gè)處理核心的監(jiān)控信息的完整、正確的輸出,避免了輸出信息混亂,同時(shí)提高了監(jiān)控效率。
文檔編號(hào)G06F13/38GK101655826SQ20091017605
公開(kāi)日2010年2月24日 申請(qǐng)日期2009年9月25日 優(yōu)先權(quán)日2009年9月25日
發(fā)明者陳平平 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司