專利名稱:一種多處理機(jī)復(fù)用外圍pci設(shè)備的方法
所屬領(lǐng)域本發(fā)明涉及嵌入式多處理機(jī)領(lǐng)域,特別是涉及大型嵌入式設(shè)備中多處理機(jī)系統(tǒng)的設(shè)計(jì),實(shí)現(xiàn)一種基于PCI網(wǎng)的多處理機(jī)復(fù)用外圍PCI設(shè)備的方法。
由于現(xiàn)行的嵌入式軟件開發(fā)平臺(tái)是通過網(wǎng)絡(luò)或串口調(diào)試目標(biāo)程序,如果沒有調(diào)試手段將給程序員編程和查錯(cuò)增加了很大的困難,特別是對(duì)大型嵌入式設(shè)備的軟件開發(fā)來說,沒有調(diào)試通道幾乎是不可能的。而目前的方法是為每個(gè)處理機(jī)增加一個(gè)串口作為調(diào)試的手段。但是這些串口在系統(tǒng)正常運(yùn)行時(shí)是空閑的,造成系統(tǒng)資源的浪費(fèi),而且串口通信的帶寬也限制了軟件調(diào)試進(jìn)度。
本發(fā)明提出一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,包括以下步驟步驟1,主處理機(jī)系統(tǒng)初始化1)初始化PCI總線上的所有的處理機(jī)和PCI設(shè)備,分配地址空間和中斷向量;2)主處理機(jī)加載所述PCI設(shè)備的驅(qū)動(dòng)程序;3)開放主處理機(jī)上的所述PCI設(shè)備中斷,啟動(dòng)所述PCI設(shè)備;4)向從處理機(jī)發(fā)送PCI設(shè)備已經(jīng)正常運(yùn)行的通知;步驟2,從處理機(jī)系統(tǒng)初始化1)接收PCI設(shè)備正常運(yùn)行通知;2)從處理機(jī)加載所述PCI設(shè)備的驅(qū)動(dòng)程序;3)關(guān)閉從主處理機(jī)上的所述PCI設(shè)備中斷,禁止從處理機(jī)使用所述PCI設(shè)備的驅(qū)動(dòng)程序;步驟3,PCI設(shè)備由源處理機(jī)使用切換到目的處理機(jī)使用1)目的處理機(jī)發(fā)送請(qǐng)求消息到源處理機(jī);2)停止所述PCI設(shè)備的運(yùn)行,屏蔽源處理機(jī)的PCI設(shè)備中斷,禁止驅(qū)動(dòng)程序發(fā)送數(shù)據(jù)到PCI設(shè)備的發(fā)送緩沖區(qū);3)向目的處理機(jī)發(fā)送請(qǐng)求成功消息;4)目的處理機(jī)啟動(dòng)PCI設(shè)備,并開放PCI設(shè)備中斷,允許使用PCI設(shè)備驅(qū)動(dòng)程序,完成切換。
采用本發(fā)明的多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,具有以下三個(gè)方面的優(yōu)點(diǎn)(1)由于不再需要為每個(gè)處理機(jī)配置串口,減少了系統(tǒng)中設(shè)備的數(shù)量,降低硬件成本;(2)由于不用將數(shù)據(jù)經(jīng)過主處理機(jī)進(jìn)行轉(zhuǎn)發(fā)而占用PCI總線的帶寬,可以提高多處理機(jī)系統(tǒng)中通信帶寬效率;(3)對(duì)每個(gè)處理機(jī)可以將PCI設(shè)備指定給其進(jìn)行調(diào)試,加快軟件調(diào)試進(jìn)度。
圖1現(xiàn)有技術(shù)多處理機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;圖2本發(fā)明的多處理機(jī)系統(tǒng)的結(jié)構(gòu)示意圖;圖3本發(fā)明的多處理機(jī)復(fù)用外圍PCI設(shè)備的方法流程圖;
而本發(fā)明的系統(tǒng)結(jié)構(gòu)(參考圖2所示)由于可以將PCI設(shè)備指定給單個(gè)處理機(jī)使用,這樣就不再需要增加專門的串口來調(diào)試單個(gè)處理機(jī);而且各處理機(jī)向外發(fā)送數(shù)據(jù)時(shí),可以直接通過PCI設(shè)備發(fā)送,不再需要經(jīng)過主處理器的轉(zhuǎn)發(fā)。
下面再就以PCI網(wǎng)卡為本發(fā)明的PCI設(shè)備,具體介紹如何實(shí)現(xiàn)多處理機(jī)復(fù)用PCI網(wǎng)卡。首先所有的處理機(jī)和網(wǎng)卡都連接在PCI總線上,其中的一個(gè)處理機(jī)是PCI總線的主設(shè)備,負(fù)責(zé)為其他的處理機(jī)和網(wǎng)卡分配PCI空間,為了讓所有的處理機(jī)都能使用同一個(gè)網(wǎng)卡,網(wǎng)卡的中斷申請(qǐng)線要同時(shí)連接上所有的處理機(jī)。參考圖3所示的實(shí)現(xiàn)流程圖系統(tǒng)設(shè)計(jì)主要涉及到PCI網(wǎng)卡驅(qū)動(dòng)的設(shè)計(jì),主處理機(jī)初始化PCI總線上的所有的處理機(jī)和PCI設(shè)備,分配PCI空間和I/O空間;其它的處理機(jī)都不做PCI初始化。為了達(dá)到處理機(jī)之間輪換使用網(wǎng)卡的目的,一般由主當(dāng)前使用網(wǎng)卡的處理機(jī)指定網(wǎng)卡新使用者,當(dāng)前使用網(wǎng)卡的處理機(jī)釋放網(wǎng)卡,新的使用者開始使用網(wǎng)卡。這就需要在主處理機(jī)與其他處理機(jī)之間有一種通信手段可以采用PCI共享內(nèi)存或PCI的消息機(jī)制(Message Unit)。具體過程如下1.初始化過程 系統(tǒng)啟動(dòng)時(shí),主處理機(jī)上的程序初始化PCI總線上的所有處理機(jī)和設(shè)備。 主處理機(jī)將為網(wǎng)卡驅(qū)動(dòng)程序分配初始化信息的空間、發(fā)送和接受描述符表、接受和發(fā)送緩沖區(qū)空間。 主處理機(jī)初始化以上空間中的信息,啟動(dòng)網(wǎng)卡運(yùn)行。 主處理機(jī)通過處理機(jī)之間的通信手段通告其他的處理機(jī),設(shè)備正常運(yùn)行。 其他的處理機(jī)接受到上面通告后,加載網(wǎng)卡驅(qū)動(dòng)程序;但是不啟動(dòng)網(wǎng)卡,禁止發(fā)送數(shù)據(jù)到網(wǎng)卡的發(fā)送緩沖區(qū),也不開放網(wǎng)卡的中斷。 所有的處理機(jī)網(wǎng)絡(luò)協(xié)議棧使用相同的IP地址。2.網(wǎng)卡切換過程 當(dāng)前使用網(wǎng)卡的處理機(jī)接受到網(wǎng)卡切換消息后,首先停止網(wǎng)卡的運(yùn)行,屏蔽網(wǎng)卡的中斷,禁止驅(qū)動(dòng)程序發(fā)送任何數(shù)據(jù)到網(wǎng)卡的發(fā)送緩沖區(qū)。 當(dāng)前使用網(wǎng)卡的處理機(jī)通過處理機(jī)之間通信的手段通告目的處理機(jī)請(qǐng)求成功。 目的處理機(jī)重新初始化一次網(wǎng)卡初始化信息的空間、發(fā)送和接受描述符表、接受和發(fā)送緩沖區(qū)空間。 目的處理機(jī)啟動(dòng)網(wǎng)卡運(yùn)行,允許發(fā)送數(shù)據(jù),開放網(wǎng)卡中斷。在單調(diào)某個(gè)處理機(jī)時(shí),程序員可以直接使用PCI網(wǎng)卡,并指定將該網(wǎng)卡配置給待調(diào)處理機(jī),通過網(wǎng)卡調(diào)試單個(gè)處理機(jī)上的程序,十分方便,還大大增加了軟件調(diào)試的帶寬,節(jié)省硬件投入。
當(dāng)某個(gè)處理機(jī)需要通過PCI網(wǎng)卡輸出數(shù)據(jù)時(shí),不再需要使用PCI總線將數(shù)據(jù)轉(zhuǎn)發(fā)使用網(wǎng)卡的主處理機(jī),再由其通過PCI網(wǎng)卡輸出,而是直接申請(qǐng)使用網(wǎng)卡進(jìn)行數(shù)據(jù)輸出,節(jié)省了PCI總線的帶寬。
權(quán)利要求
1.一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,其特征在于,包括以下步驟步驟1,主處理機(jī)系統(tǒng)初始化1)初始化PCI總線上的所有的處理機(jī)和PCI設(shè)備,分配地址空間和中斷向量;2)主處理機(jī)加載所述PCI設(shè)備的驅(qū)動(dòng)程序;3)開放主處理機(jī)上的所述PCI設(shè)備中斷,啟動(dòng)所述PCI設(shè)備;4)向從處理機(jī)發(fā)送PCI設(shè)備已經(jīng)正常運(yùn)行的通知;步驟2,從處理機(jī)系統(tǒng)初始化1)接收PCI設(shè)備正常運(yùn)行通知;2)從處理機(jī)加載所述PCI設(shè)備的驅(qū)動(dòng)程序;3)關(guān)閉從主處理機(jī)上的所述PCI設(shè)備中斷,禁止從處理機(jī)使用所述PCI設(shè)備的驅(qū)動(dòng)程序;步驟3,PCI設(shè)備由源處理機(jī)使用切換到目的處理機(jī)使用1)目的處理機(jī)發(fā)送請(qǐng)求消息到源處理機(jī);2)停止所述PCI設(shè)備的運(yùn)行,屏蔽源處理機(jī)的PCI設(shè)備中斷,禁止驅(qū)動(dòng)程序發(fā)送數(shù)據(jù)到PCI設(shè)備的發(fā)送緩沖區(qū);3)向目的處理機(jī)發(fā)送請(qǐng)求成功消息;4)目的處理機(jī)啟動(dòng)PCI設(shè)備,并開放PCI設(shè)備中斷,允許使用PCI設(shè)備驅(qū)動(dòng)程序,完成切換。
2.根據(jù)權(quán)利要求1所述的一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,其特征在于,所述主處理機(jī)與其他處理機(jī)之間采用PCI共享內(nèi)存的方式進(jìn)行通訊。
3.根據(jù)權(quán)利要求1所述的一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,其特征在于,所述主處理機(jī)與其他處理機(jī)之間采用PCI的消息機(jī)制(Message Unit)通訊。
4.根據(jù)權(quán)利要求1所述的一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,其特征在于,所述各處理機(jī)的網(wǎng)絡(luò)協(xié)議棧使用同一IP地址。
5.根據(jù)權(quán)利要求1所述的一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,其特征在于,所述的PCI設(shè)備是PCI網(wǎng)卡。
全文摘要
本發(fā)明公開了一種多處理機(jī)復(fù)用外圍PCI設(shè)備的方法,通過對(duì)主處理機(jī)和從處理機(jī)進(jìn)行系統(tǒng)初始化,使得每個(gè)處理機(jī)都加載一套PCI設(shè)備驅(qū)動(dòng)程序,而只有使用該P(yáng)CI設(shè)備的處理機(jī)的PCI設(shè)備中斷才給予開放,切換時(shí)通過處理機(jī)之間的消息交互機(jī)制通知源處理機(jī)先屏蔽中斷,再通知目的處理機(jī)開放PCI中斷,啟動(dòng)PCI設(shè)備。本發(fā)明廣泛適用于嵌入式多處理機(jī)系統(tǒng),尤其是大型嵌入式設(shè)備中。采用本發(fā)明的方法由于不再需要為每個(gè)處理機(jī)配置一串口用于調(diào)試,而是直接通過PCI設(shè)備進(jìn)行調(diào)試,節(jié)約了系統(tǒng)的成本,加快了調(diào)試速度;在處理機(jī)需要向外發(fā)送數(shù)據(jù)時(shí),可以直接通過PCI設(shè)備輸出,不需要經(jīng)過主處理機(jī)轉(zhuǎn)發(fā),提高了系統(tǒng)的帶寬利用率。
文檔編號(hào)G06F9/48GK1430144SQ0113809
公開日2003年7月16日 申請(qǐng)日期2001年12月31日 優(yōu)先權(quán)日2001年12月31日
發(fā)明者童小九, 張超峰, 鐘衛(wèi)東, 吳波 申請(qǐng)人:深圳市中興通訊股份有限公司上海第二研究所