專利名稱:一種軟件加載方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種軟件加載方法及裝置。
背景技術(shù):
快速輸入輸出(Rapid 10)總線,是近年來發(fā)展迅速的一種新型的高速數(shù)據(jù)互聯(lián)總線。特別是串行Rapid IO(SRIO)傳輸方式,由于僅使用很少的連線就可以達到很高的傳輸速率,該技術(shù)目前正被廣泛用于通信基礎(chǔ)設(shè)施的芯片間,使得板間高速互聯(lián)。在現(xiàn)有Rapid IO網(wǎng)絡(luò)中,各處理器所使用的SRIO控制器的器件ID—般都是事先規(guī)劃好的,在初始化階段配置到器件ID寄存器,如果某個處理器中有多個SRIO控制器或者多個SRIO端口,則需要為每個控制器或端口指定器件ID,而網(wǎng)絡(luò)中的主控處理器則根據(jù)這些規(guī)劃好的器件ID和端口對應(yīng)關(guān)系生成路由表,在交換結(jié)構(gòu)模塊上電后通過系統(tǒng)集成電路間(Inter Integrated Circuit, I2C)接口配置到交換結(jié)構(gòu)模塊上。由于開始時網(wǎng)絡(luò)內(nèi)各處理器都沒有設(shè)定器件ID,彼此之間無法直接通信,因此這些處理器的加載工作通常都不是通過Rapid IO鏈路完成,而是通過其他鏈路進行,例如大部分數(shù)字信號處理器(Digital Signal I^rocessor,DSP)處理器都是使用以太鏈路或者I2C 鏈路完成加載,在初始化程序中才對SRIO控制器進行配置,使其正常工作。通過以太鏈路加載從處理器時,主控處理器一方通常無法直接操作對端的寄存器,因此一般不能在加載前初始化對端的雙向數(shù)據(jù)速率存儲器(Double Data Rate, DDR) 控制器,這要求在加載程序前,需要通過其他方式使其DDR控制器完成初始化工作,例如利用電子可擦除可編程型只讀存儲器(Electrically Erasable Programmable Read-only Memory, EEPR0M)來存儲復位控制字,由硬件復位后經(jīng)I2C總線讀取這些控制字來初始化 DDR控制器,等待接收待加載的代碼,或者首先加載一段小程序到DSP側(cè)的片上內(nèi)存中,利用這段小程序完成DDR控制器初始化工作,再繼續(xù)加載實際應(yīng)用代碼,常見的以太鏈路加載從處理器的流程如圖1所示。Rapid 10協(xié)議提供了一種操作維護包類型,協(xié)議中規(guī)定事務(wù)類型為TypeS。這種類型的Rapid 10包可以對處理器或交換結(jié)構(gòu)模塊中的Rapid 10寄存器地址空間進行操作, 訪問時僅通過包頭信息中的跳數(shù)字段,區(qū)分當前訪問的器件是否為實際目的器件,如果跳數(shù)為0,表示當前器件即為待訪問器件,否則跳數(shù)減1,將包轉(zhuǎn)發(fā)給下一級器件,以此類推。 由于不需要了解目的端的器件ID,因此這種操作維護包非常適合用在系統(tǒng)初始化階段,對交換結(jié)構(gòu)模塊或者處理器中尚未分配器件ID的SRIO器件進行配置。在原有的Rapid 10網(wǎng)絡(luò)中,通常都是借助其他鏈路完成系統(tǒng)的初始化配置和軟件加載,并在系統(tǒng)的初始化過程中,根據(jù)規(guī)劃好的器件ID和端口映射關(guān)系,初始化SRIO控制器和交換結(jié)構(gòu)模塊,然而這種方案存在如下缺點Rapid 10網(wǎng)絡(luò)中的處理器數(shù)目常常是變化的,各處理器與交換結(jié)構(gòu)模塊相連的端口具有不確定性,一些板型和功能類似的板卡,處理器數(shù)目、所使用的交換結(jié)構(gòu)模塊端口排布往往不同,軟件設(shè)計為其規(guī)劃的器件ID和端口號對應(yīng)關(guān)系不能做到自適應(yīng);
在以Rapid IO網(wǎng)絡(luò)為主要傳輸鏈路的互聯(lián)系統(tǒng)中,以太網(wǎng)絡(luò)的作用往往大大降低,常常僅用于系統(tǒng)初始化階段的軟件加載工作,為此還需要保留以太交換芯片,浪費較大;在軟件加載過程中,為保證DDR控制器可用,需要配置EEPROM等外設(shè),供其復位后初始化硬件使用,增加了硬件生產(chǎn)成本。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種Rapid IO網(wǎng)絡(luò)中的軟件加載方法及裝置,用以自動發(fā)現(xiàn) Rapid IO網(wǎng)絡(luò)中各處理器上的SRIO控制器并對其進行初始化,進而實現(xiàn)處理器軟件加載的過程。本發(fā)明實施例提供的一種Rapid IO網(wǎng)絡(luò)中的軟件加載方法包括快速輸入輸出Rapid IO網(wǎng)絡(luò)中的主處理器,確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;主處理器為每一 SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;主處理器對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化, 并為該從處理器加載軟件。本發(fā)明實施例提供的一種Rapid IO網(wǎng)絡(luò)中的軟件加載裝置,位于Rapid IO網(wǎng)絡(luò)中的主處理器上,該裝置包括系統(tǒng)發(fā)現(xiàn)單元,用于確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;以及,為每一 SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;系統(tǒng)加載單元,用于對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件。本發(fā)明實施例,通過快速輸入輸出Rapid IO網(wǎng)絡(luò)中的主處理器,確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;主處理器為每一 SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;主處理器對Rapid IO 網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件,從而實現(xiàn)了自動發(fā)現(xiàn)Rapid IO網(wǎng)絡(luò)中各處理器上的SRIO控制器并對其進行初始化,進而實現(xiàn)了處理器軟件加載的過程。
圖1為以太網(wǎng)絡(luò)中的處理器加載軟件的流程示意圖;圖2為本發(fā)明實施例提供的Rapid IO網(wǎng)絡(luò)中的軟件加載方法的流程示意圖;圖3為本發(fā)明實施例提供的Rapid IO網(wǎng)絡(luò)中系統(tǒng)發(fā)現(xiàn)及加載的原理示意圖;圖4為本發(fā)明實施例提供的系統(tǒng)發(fā)現(xiàn)階段的流程示意圖;圖5為本發(fā)明實施例提供的主處理器配置從處理器的器件ID的示意圖;圖6為本發(fā)明實施例提供的系統(tǒng)加載階段的流程示意圖;圖7為本發(fā)明實施例提供的系統(tǒng)加載階段的流程示意圖;圖8為本發(fā)明實施例提供的系統(tǒng)加載階段的流程示意圖9為本發(fā)明實施例提供的系統(tǒng)加載階段的流程示意圖;圖10為本發(fā)明實施例提供的Rapid IO網(wǎng)絡(luò)中的軟件加載裝置的結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明實施例一種Rapid IO網(wǎng)絡(luò)中的軟件加載方法及裝置,用以自動發(fā)現(xiàn)Rapid IO網(wǎng)絡(luò)中各處理器上的SRIO控制器并對其進行初始化,進而實現(xiàn)處理器軟件加載的過程。本發(fā)明實施例提出的技術(shù)方案,是一種SRIO系統(tǒng)的自枚舉配置方案,針對單個交換結(jié)構(gòu)模塊的Rapid IO網(wǎng)絡(luò)拓撲結(jié)構(gòu),可以自動發(fā)現(xiàn)Rapid IO網(wǎng)絡(luò)中各處理器上SRIO控制器并對其進行初始化,進而實現(xiàn)處理器軟件加載運行等流程。本發(fā)明實施例可以根據(jù)Rapid IO網(wǎng)絡(luò)中處理器數(shù)量及排布變化進行自適應(yīng)調(diào)整, 無需重新規(guī)劃Rapid IO器件ID等信息。另一方面,由于軟件加載不再需要其他鏈路參與, 本發(fā)明實施例還可以完全省去系統(tǒng)中諸如以太交換芯片、EEPROM芯片等硬件,達到節(jié)約成本的目的。下面給出本發(fā)明實施例提供的技術(shù)方案的詳細說明。參見圖2,本發(fā)明實施例提供的一種快速輸入輸出Rapid IO網(wǎng)絡(luò)中的軟件加載方法,包括步驟S101、快速輸入輸出Rapid IO網(wǎng)絡(luò)中的主處理器,確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;主處理器為每一 SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;S102、主處理器對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件。較佳地,所述主處理器確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器,包括主處理器對自身的SRIO控制器進行初始化,并為該SRIO控制器設(shè)定器件ID ;主處理器通過操作維護包,檢測所述交換結(jié)構(gòu)模塊,并確定所述交換結(jié)構(gòu)模塊的 fn息;主處理器根據(jù)所述交換結(jié)構(gòu)模塊的信息,確定與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器。較佳地,所述主處理器為每一 SRIO控制器分配器件ID后,還包括主處理器記錄SRIO控制器所在的處理器與交換結(jié)構(gòu)模塊相連的端口的端口號, 與該SRIO控制器的器件ID的映射關(guān)系。較佳地,所述主處理器將為每一 SRIO控制器分配的器件ID配置給該SRIO控制器所在的從處理器,包括主處理器在交換結(jié)構(gòu)模塊與主處理器相連的端口 m上,添加交換結(jié)構(gòu)模塊與從處理器相連的端口 η和該從處理器的SRIO控制器的器件ID的缺省值的路由關(guān)系;主處理器在交換結(jié)構(gòu)模塊與從處理器相連的端口 η上,添加端口 m和主處理器的 SRIO控制器的器件ID的路由關(guān)系;主處理器通過交換結(jié)構(gòu)模塊,將為從處理器的SRIO控制器分配的器件ID,配置給該從處理器;
主處理器調(diào)整端口 m上的與端口 η對應(yīng)的從處理器的SRIO控制器的器件ID的缺省值為主處理為該從處理器的SRIO控制器分配的器件ID。較佳地,所述主處理器將為每一 SRIO控制器分配的器件ID配置給該SRIO控制器所在的從處理器之后,還包括主處理器讀取每一從處理器的信息,當成功讀取到該從處理器的信息時,確認該從處理器的SRIO控制器的器件ID已經(jīng)配置生效,并將該從處理器的信息存儲在數(shù)據(jù)庫中。較佳地,所述主處理器對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件,包括主處理器根據(jù)從處理器的信息,確定從處理器的類型,并選擇該類型對應(yīng)的軟件;主處理器初始化從處理器的本地配置空間基地址寄存器,使得主處理器能夠訪問從處理器的整個外設(shè)寄存器地址空間;主處理器初始化從處理器的DDR控制器;主處理器當確定從處理器的BOOT工作準備就緒時,將所述軟件下載到該從處理器的存儲區(qū)。較佳地,所述主處理器將軟件下載到從處理器的存儲區(qū)之后,還包括主處理器將Rapid IO網(wǎng)絡(luò)中所有從處理器的SRIO控制器的器件ID與交換結(jié)構(gòu)模塊的端口號的映射關(guān)系,發(fā)送給從處理器。較佳地,當主處理器完成向從處理器下載軟件以后,還包括主處理器通知從處理器軟件下載完成。下面給出具體實施例的說明。本發(fā)明實施例中提出的SRIO系統(tǒng)自枚舉配置方案如圖3所示,主要應(yīng)用于當前 Rapid IO網(wǎng)絡(luò)中僅具有單個交換結(jié)構(gòu)模塊的情況,網(wǎng)絡(luò)內(nèi)各處理器通過該交換結(jié)構(gòu)模塊相互連接。本發(fā)明實施例提供的軟件加載方法,具體包含系統(tǒng)發(fā)現(xiàn)和系統(tǒng)加載兩個步驟一、系統(tǒng)發(fā)現(xiàn)階段的工作,如圖4所示,包括步驟S201、主處理器首先完成自身的SRIO控制器初始化工作,并為該控制器設(shè)定一個器件ID,作為整個系統(tǒng)的器件ID的基值,例如配置為1。S202、主處理器開始Rapid IO枚舉,首先利用操作維護包檢測與主處理器相連的交換結(jié)構(gòu)模塊的信息,其中包括廠商信息、端口個數(shù)、各端口工作模式以及交換結(jié)構(gòu)模塊與主處理器相連的端口編號等等。其中,在確認交換結(jié)構(gòu)模塊與其主處理器相連的端口編號值時,主處理器可以通過讀取交換結(jié)構(gòu)模塊各端口的收發(fā)包統(tǒng)計信息或者底層包確認ID信息來判斷,如果某個端口的上述信息在讀取交換結(jié)構(gòu)模塊的信息后有所變化,則該端口即為交換結(jié)構(gòu)模塊與主處理器相連的端口。S203、主處理器從交換結(jié)構(gòu)模塊的端口 0開始,逐一確認端口狀態(tài)是否就緒,以確認該端口是否存在與之相連的從處理器的SRIO控制器。S204、主處理器為每一個確認相連的從處理器的SRIO控制器分配器件ID,以主處理器的SRIO控制器的器件ID為基值逐漸遞增,同時記錄交換結(jié)構(gòu)模塊的端口號與從處理器的SRIO控制器的器件ID的映射關(guān)系。S205、主處理器將通過枚舉產(chǎn)生的從處理器的SRIO控制器的器件ID,利用操作維護包配置到該從處理器上,然后將主處理器與交換結(jié)構(gòu)模塊相連的端口的端口號和主處理器的SRIO控制器的器件ID的映射關(guān)系,配置到從處理器與交換結(jié)構(gòu)模塊相連的路由表上。通常,從處理器在上電后,從處理器的SRIO控制器的器件ID的缺省值為OxFFFF, 或者為OxFF,具體為什么值,是根據(jù)Rapid IO網(wǎng)絡(luò)內(nèi)器件ID地址模式確定的,大模式是16 位地址的OxFFFF,小模式則是8位地址的OxFF。主處理器可以利用從處理器的SRIO控制器的器件ID的缺省值,配置交換結(jié)構(gòu)模塊的路由表,保證交換結(jié)構(gòu)模塊將操作維護包準確路由到指定的從處理器上。步驟S205的具體的配置流程包括(a)、參見圖5,主處理器在交換結(jié)構(gòu)模塊與主處理器相連的端口 m上,添加交換結(jié)構(gòu)模塊與從處理器相連的端口 n和該從處理器的SRIO控制器的器件ID的缺省值OxFFFF 的路由關(guān)系。(b)、參見圖6,主處理器在交換結(jié)構(gòu)模塊與從處理器相連的端口 η上,添加端口 m 和主處理器的SRIO控制器的器件ID的路由關(guān)系,例如主處理器的SRIO控制器的器件ID 為1。(C)、參見圖7,主處理器通過交換結(jié)構(gòu)模塊配置從處理器的SRIO控制器的器件 ID,例如為X。(d)、參見圖8,主處理器調(diào)整端口 m上的路由關(guān)系,將端口 η對應(yīng)的器件ID由 OxFFFF修改為上一步驟配置的器件ID值X。需要說明的是,如果從處理器有多個SRIO端口與交換結(jié)構(gòu)模塊相連,僅通過端口 0配置從處理器的器件ID,對于其他端口則不再配置,避免配置值與此前內(nèi)容發(fā)生沖突。此外,主處理器需要標記從處理器的端口 0,用于此后加載軟件版本時使用。S206、主處理器通過讀取從處理器的廠商信息確認器件ID已經(jīng)配置生效,并將這些廠商信息存儲在數(shù)據(jù)庫中,用于判斷從處理器的類型,例如是PowerPC (Power Personal Compter)還是DSP處理器、芯片具體型號等等,根據(jù)不同的處理器類型選擇相應(yīng)的軟件程序加載。S207、主處理器繼續(xù)枚舉交換結(jié)構(gòu)模塊的下一個端口,重復步驟S203-步驟S206, 直到遍歷所有與交換結(jié)構(gòu)模塊相連的從處理器的SRIO控制器。二、系統(tǒng)加載階段的工作,如圖9所示,包括步驟S301、主處理器從交換結(jié)構(gòu)模塊的端口 0開始,對存在SRIO控制器的從處理器執(zhí)行加載工作,首先從主處理器的數(shù)據(jù)庫中根據(jù)交換結(jié)構(gòu)模塊的端口號查詢從處理器的類型和已標記的SRIO端口,選擇相應(yīng)的軟件執(zhí)行加載流程。S302、主處理器一般需要通過操作維護包修改從處理器的本地配置空間基地址寄存器(LCSBA1CSR),該寄存器的主要作用是擴大Rapid 10包可訪問的地址空間,例如配置為允許訪問整個外設(shè)寄存器空間。S303、主處理器在獲得訪問從處理器整個外設(shè)寄存器空間的權(quán)限后,開始為該從處理器加載軟件進行準備工作,例如配置從處理器的DDR控制器的相關(guān)寄存器,用于初始化DDR控制器(因為只有當上述寄存器配置完成后,DDR芯片才能正常用于存儲數(shù)據(jù)信息),其中,所述DDR控制器的相關(guān)寄存器,例如包括DDR芯片的片選寄存器、時鐘模式寄存器、工作模式寄存器以及尋址范圍寄存器等等。有些廠商的SRIO控制器為實現(xiàn)全地址空間的讀寫還需要配置呼入地址轉(zhuǎn)換寄存器,用來將Rapid IO的29bit地址轉(zhuǎn)換為本地存儲器地址。S304、主處理器可以通過查詢從處理器的某些狀態(tài)寄存器,來判斷從處理器的BOOT工作是否已經(jīng)準備就緒。這些狀態(tài)寄存器在各種處理器上的實現(xiàn)不同,例如 Freescale的8156 DSP規(guī)定片內(nèi)多核共享的一段32bit的空間作為該狀態(tài)寄存器,如果該段空間在上電后變?yōu)轭A設(shè)的值(如0x17171717),標志著該處理器已經(jīng)準備就緒,否則說明并未就緒。S305、如果從處理器的BOOT工作已經(jīng)準備就緒,則主處理器可以將主處理器存儲的軟件分塊下載到從處理器的存儲區(qū)。下載的軟件內(nèi)容包括程序段和數(shù)據(jù)段,格式一般為起始地址、數(shù)據(jù)長度和數(shù)據(jù)內(nèi)容三部分。S306、主處理器還應(yīng)將本地存儲的整個Rapid IO網(wǎng)絡(luò)中的從處理器的SRIO控制器的器件ID和交換結(jié)構(gòu)模塊的端口號的映射關(guān)系,發(fā)送給從處理器指定存儲區(qū),該指定存儲區(qū)例如可以是片內(nèi)的多核共享存儲區(qū)或者片外DDR上指定空間(一般在設(shè)計從處理器的程序時會事先規(guī)劃出這片空間,比如定義一個起始地址確定的全局變量,用于存放映射關(guān)系,代碼運行后從這個全局變量讀取即可),用于從處理器在初始化程序中初始化自身的路由表。S307、當主處理器完成向從處理器下載軟件以后,主處理器通知從處理器軟件下載完成,具體可以通過配置從處理器的指定寄存器,表明軟件的程序段和數(shù)據(jù)段已經(jīng)下載完成。其中,所述指定寄存器同樣參照Freescale的8156 DSP來介紹,仍舊是上述的32bit 空間,主處理器在下載完成后將原始值修改為新內(nèi)容(例如0xa5a5a5a5),該內(nèi)容也是處理器加載流程中約定好的,硬件檢查到這32bit的存儲空間中內(nèi)容更新為新內(nèi)容,即判斷數(shù)據(jù)和程序段均已下載完成,開始執(zhí)行BOOT代碼。從處理器確認軟件下載完成后,從處理器的BOOT代碼開始運行,完成BOOT后,跳轉(zhuǎn)到指定地址開始執(zhí)行用戶代碼。所述的指定地址,例如可以是用戶代碼段定義的main函數(shù)的所在地址。從處理器中的用戶代碼在初始化階段讀取指定存儲區(qū)中存放的Rapid 10網(wǎng)絡(luò)路由信息,初始化自身的路由表,如果該從處理器擁有多個SRIO端口,還應(yīng)初始化除端口 0以外其他端口的轉(zhuǎn)換器件ID ( 一個Rapid 10控制器一般只有一個器件ID,如果該控制器上有多個端口,一般都是端口 0使用這個器件ID,而其他端口需要配置一個轉(zhuǎn)換器件 ID (Alternate Device ID, ADID),為 Rapid 10 協(xié)議規(guī)定)。同理,主處理器繼續(xù)加載Rapid 10網(wǎng)絡(luò)中的其他從處理器,重復步驟S301-步驟 S307,直到完成Rapid 10網(wǎng)絡(luò)中所有從處理器的加載和初始化。參見圖10,本發(fā)明實施例提供的一種快速輸入輸出Rapid 10網(wǎng)絡(luò)中的軟件加載裝置,位于Rapid 10網(wǎng)絡(luò)中的主處理器上,該裝置包括系統(tǒng)發(fā)現(xiàn)單元11,用于確定Rapid 10網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;以及,為每一 SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;
系統(tǒng)加載單元12,用于對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件。較佳地,所述系統(tǒng)發(fā)現(xiàn)單元11,對自身的SRIO控制器進行初始化,并為該SRIO控制器設(shè)定器件ID ;通過操作維護包,檢測所述交換結(jié)構(gòu)模塊,并確定所述交換結(jié)構(gòu)模塊的信息;根據(jù)所述交換結(jié)構(gòu)模塊的信息,確定與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器。較佳地,所述系統(tǒng)發(fā)現(xiàn)單元11,為每一 SRIO控制器分配器件ID后,進一步記錄 SRIO控制器所在的處理器與交換結(jié)構(gòu)模塊相連的端口的端口號,與該SRIO控制器的器件 ID的映射關(guān)系。較佳地,所述系統(tǒng)發(fā)現(xiàn)單元11,在交換結(jié)構(gòu)模塊與主處理器相連的端口 m上,添加交換結(jié)構(gòu)模塊與從處理器相連的端口 η和該從處理器的SRIO控制器的器件ID的缺省值的路由關(guān)系;在交換結(jié)構(gòu)模塊與從處理器相連的端口 η上,添加端口 m和主處理器的SRIO控制器的器件ID的路由關(guān)系;通過交換結(jié)構(gòu)模塊,將為從處理器的SRIO控制器分配的器件 ID,配置給該從處理器;調(diào)整端口 m上的與端口 η對應(yīng)的從處理器的SRIO控制器的器件ID 的缺省值為主處理為該從處理器的SRIO控制器分配的器件ID。較佳地,所述系統(tǒng)發(fā)現(xiàn)單元11,將為每一 SRIO控制器分配的器件ID配置給該 SRIO控制器所在的從處理器之后,進一步讀取每一從處理器的信息,當成功讀取到該從處理器的信息時,確認該從處理器的SRIO控制器的器件ID已經(jīng)配置生效,并將該從處理器的信息存儲在數(shù)據(jù)庫中。較佳地,所述系統(tǒng)加載單元12,根據(jù)從處理器的信息,確定從處理器的類型,并選擇該類型對應(yīng)的軟件;初始化從處理器的本地配置空間基地址寄存器,使得主處理器能夠訪問從處理器的整個外設(shè)寄存器地址空間;初始化從處理器的DDR控制器;當確定從處理器的BOOT工作準備就緒時,將所述軟件下載到該從處理器的存儲區(qū)。較佳地,所述系統(tǒng)加載單元12,將軟件下載到從處理器的存儲區(qū)之后,進一步將 Rapid IO網(wǎng)絡(luò)中所有從處理器的SRIO控制器的器件ID與交換結(jié)構(gòu)模塊的端口號的映射關(guān)系,發(fā)送給從處理器。較佳地,所述系統(tǒng)加載單元12,當完成向從處理器下載軟件以后,進一步通知從處理器軟件下載完成。綜上所述,本發(fā)明實施例利用Rapid IO協(xié)議中的操作維護包,自枚舉發(fā)現(xiàn)Rapid IO網(wǎng)絡(luò)中各處理器的SRIO控制器并對其進行初始化,進而實現(xiàn)處理器軟件加載運行等流程,在系統(tǒng)發(fā)現(xiàn)階段,通過Rapid IO協(xié)議規(guī)定的操作維護包進行枚舉,發(fā)現(xiàn)網(wǎng)絡(luò)中各處理器的SRIO控制器,配置相應(yīng)的器件ID。主處理器在通過交換結(jié)構(gòu)模塊配置從處理器的器件ID 時所采用的流程中,首先調(diào)整交換結(jié)構(gòu)模塊上與主處理器和從處理器相連的端口上的路由關(guān)系,然后進行配置,配置完成后,將與主處理器相連端口的路由關(guān)系調(diào)整為對端實際器件 ID。在軟件加載前,通過操作維護包初始化從處理器的本地配置空間基地址寄存器,允許外部訪問整個外設(shè)寄存器地址空間。在軟件加載前,通過SRIO配置從處理器的DDR控制器相關(guān)寄存器,用于初始化DDR控制器。從而本發(fā)明實施例利用Rapid IO鏈路即可完成網(wǎng)絡(luò)內(nèi)各處理器的軟件加載,此后的處理器間通信即可使用Rapid IO—種鏈路傳輸完成,省去諸如千兆以太其他鏈路所需的硬件資源。如果Rapid IO網(wǎng)絡(luò)內(nèi)處理器數(shù)量以及與交換結(jié)構(gòu)模塊連接端口發(fā)生變化,不必修改軟件重新規(guī)劃映射關(guān)系,只需重新枚舉即可。利用Rapid IO鏈路在軟件加載以前初始化處理器的DDR控制器等外設(shè),可以節(jié)省EEPROM等資源存儲硬件復位控制字等信息。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種快速輸入輸出Rapid IO網(wǎng)絡(luò)中的軟件加載方法,其特征在于,該方法包括 快速輸入輸出Rapid IO網(wǎng)絡(luò)中的主處理器,確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;主處理器為每一 SRIO控制器分配器件 ID,并配置給該SRIO控制器所在的從處理器;主處理器對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主處理器確定RapidIO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器,包括主處理器對自身的SRIO控制器進行初始化,并為該SRIO控制器設(shè)定器件ID ; 主處理器通過操作維護包,檢測所述交換結(jié)構(gòu)模塊,并確定所述交換結(jié)構(gòu)模塊的信息;主處理器根據(jù)所述交換結(jié)構(gòu)模塊的信息,確定與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述主處理器為每一SRIO控制器分配器件ID后,還包括主處理器記錄SRIO控制器所在的處理器與交換結(jié)構(gòu)模塊相連的端口的端口號,與該 SRIO控制器的器件ID的映射關(guān)系。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述主處理器將為每一SRIO控制器分配的器件ID配置給該SRIO控制器所在的從處理器,包括主處理器在交換結(jié)構(gòu)模塊與主處理器相連的端口 m上,添加交換結(jié)構(gòu)模塊與從處理器相連的端口 η和該從處理器的SRIO控制器的器件ID的缺省值的路由關(guān)系;主處理器在交換結(jié)構(gòu)模塊與從處理器相連的端口 η上,添加端口 m和主處理器的SRIO 控制器的器件ID的路由關(guān)系;主處理器通過交換結(jié)構(gòu)模塊,將為從處理器的SRIO控制器分配的器件ID,配置給該從處理器;主處理器調(diào)整端口 m上的與端口 η對應(yīng)的從處理器的SRIO控制器的器件ID的缺省值為主處理為該從處理器的SRIO控制器分配的器件ID。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述主處理器將為每一SRIO控制器分配的器件ID配置給該SRIO控制器所在的從處理器之后,還包括主處理器讀取每一從處理器的信息,當成功讀取到該從處理器的信息時,確認該從處理器的SRIO控制器的器件ID已經(jīng)配置生效,并將該從處理器的信息存儲在數(shù)據(jù)庫中。
6.根據(jù)權(quán)利要求1-5任一權(quán)項所述的方法,其特征在于,所述主處理器對RapidIO 網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件,包括主處理器根據(jù)從處理器的信息,確定從處理器的類型,并選擇該類型對應(yīng)的軟件; 主處理器初始化從處理器的本地配置空間基地址寄存器,使得主處理器能夠訪問從處理器的整個外設(shè)寄存器地址空間;主處理器初始化從處理器的DDR控制器;主處理器當確定從處理器的BOOT工作準備就緒時,將所述軟件下載到該從處理器的存儲區(qū)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述主處理器將軟件下載到從處理器的存儲區(qū)之后,還包括主處理器將Rapid IO網(wǎng)絡(luò)中所有從處理器的SRIO控制器的器件ID與交換結(jié)構(gòu)模塊的端口號的映射關(guān)系,發(fā)送給從處理器。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,當主處理器完成向從處理器下載軟件以后,還包括主處理器通知從處理器軟件下載完成。
9.一種快速輸入輸出Rapid IO網(wǎng)絡(luò)中的軟件加載裝置,位于Rapid IO網(wǎng)絡(luò)中的主處理器上,其特征在于,該裝置包括系統(tǒng)發(fā)現(xiàn)單元,用于確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;以及,為每一 SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;系統(tǒng)加載單元,用于對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述系統(tǒng)發(fā)現(xiàn)單元,對自身的SRIO控制器進行初始化,并為該SRIO控制器設(shè)定器件ID ;通過操作維護包,檢測所述交換結(jié)構(gòu)模塊, 并確定所述交換結(jié)構(gòu)模塊的信息;根據(jù)所述交換結(jié)構(gòu)模塊的信息,確定與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述系統(tǒng)發(fā)現(xiàn)單元,為每一SRIO控制器分配器件ID后,進一步記錄SRIO控制器所在的處理器與交換結(jié)構(gòu)模塊相連的端口的端口號,與該SRIO控制器的器件ID的映射關(guān)系。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述系統(tǒng)發(fā)現(xiàn)單元,在交換結(jié)構(gòu)模塊與主處理器相連的端口 m上,添加交換結(jié)構(gòu)模塊與從處理器相連的端口 η和該從處理器的 SRIO控制器的器件ID的缺省值的路由關(guān)系;在交換結(jié)構(gòu)模塊與從處理器相連的端口 η上, 添加端口 m和主處理器的SRIO控制器的器件ID的路由關(guān)系;通過交換結(jié)構(gòu)模塊,將為從處理器的SRIO控制器分配的器件ID,配置給該從處理器;調(diào)整端口 m上的與端口 η對應(yīng)的從處理器的SRIO控制器的器件ID的缺省值為主處理為該從處理器的SRIO控制器分配的器件ID。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述系統(tǒng)發(fā)現(xiàn)單元,將為每一SRIO控制器分配的器件ID配置給該SRIO控制器所在的從處理器之后,進一步讀取每一從處理器的信息,當成功讀取到該從處理器的信息時,確認該從處理器的SRIO控制器的器件ID已經(jīng)配置生效,并將該從處理器的信息存儲在數(shù)據(jù)庫中。
14.根據(jù)權(quán)利要求9-13任一權(quán)項所述的裝置,其特征在于,所述系統(tǒng)加載單元,根據(jù)從處理器的信息,確定從處理器的類型,并選擇該類型對應(yīng)的軟件;初始化從處理器的本地配置空間基地址寄存器,使得主處理器能夠訪問從處理器的整個外設(shè)寄存器地址空間;初始化從處理器的DDR控制器;當確定從處理器的BOOT工作準備就緒時,將所述軟件下載到該從處理器的存儲區(qū)。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述系統(tǒng)加載單元,將軟件下載到從處理器的存儲區(qū)之后,進一步將Rapid IO網(wǎng)絡(luò)中所有從處理器的SRIO控制器的器件ID與交換結(jié)構(gòu)模塊的端口號的映射關(guān)系,發(fā)送給從處理器。
16.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述系統(tǒng)加載單元,當完成向從處理器下載軟件以后,進一步通知從處理器軟件下載完成。
全文摘要
本發(fā)明公開了一種Rapid IO網(wǎng)絡(luò)中的軟件加載方法及裝置,用以自動發(fā)現(xiàn)Rapid IO網(wǎng)絡(luò)中各處理器上的SRIO控制器并對其進行初始化,進而實現(xiàn)處理器軟件加載的過程。本發(fā)明提供的一種Rapid IO網(wǎng)絡(luò)中的軟件加載方法包括快速輸入輸出Rapid IO網(wǎng)絡(luò)中的主處理器,確定Rapid IO網(wǎng)絡(luò)中與交換結(jié)構(gòu)模塊相連的從處理器的串行快速輸入輸出SRIO控制器;主處理器為每一SRIO控制器分配器件ID,并配置給該SRIO控制器所在的從處理器;主處理器對Rapid IO網(wǎng)絡(luò)中的與交換結(jié)構(gòu)模塊相連的每一從處理器進行初始化,并為該從處理器加載軟件。
文檔編號G06F9/445GK102508679SQ201110340548
公開日2012年6月20日 申請日期2011年11月1日 優(yōu)先權(quán)日2011年11月1日
發(fā)明者王林 申請人:大唐移動通信設(shè)備有限公司