本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種PCIE設(shè)備的配置方法及裝置。
背景技術(shù):
VxWorks5.5操作系統(tǒng)適用于快速外設(shè)部件互連標(biāo)準(zhǔn)(Peripheral Component Interconnect Express,PCIE)設(shè)備,為PCIE設(shè)備提供資源管理等功能;具體地,VxWorks5.5操作系統(tǒng)運行于CPU上,包括PCIE總線驅(qū)動和PCIE庫函數(shù)。在實際應(yīng)用中,PCIE控制器配置在CPU上,PCIE設(shè)備與PCIE控制相連,如圖1所示,如圖1為PCIE控制器與PCIE設(shè)備的連接示意圖。
但是,由于VxWorks5.5操作系統(tǒng)向每個PCIE控制器分配的總線號均為0,使得運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序無法根據(jù)總線號區(qū)分每個PCIE控制器,這樣即便CPU有多個PCIE控制器,如果采用VxWorks5.5操作系統(tǒng),CPU也只能配置管理一個PCIE控制器。同時,由于每個PCIE控制器只能連接一個PCIE設(shè)備,當(dāng)需要使用采用VxWorks5.5操作系統(tǒng)的CPU控制至少兩個PCIE設(shè)備時,只能使第一個PCIE設(shè)備連接PCIE控制器,第二個PCIE設(shè)備通過專用的硬件設(shè)備與第一個PCIE設(shè)備串聯(lián),同理,其他PCIE設(shè)備均通過專用的硬件設(shè)備與前一個PCIE設(shè)備串聯(lián)連接,如圖2所示,圖2為PCIE控制器與多臺PCIE設(shè)備的連接示意圖。這樣,不僅增加了PCIE設(shè)備的配置成本,而且給PCIE設(shè)備的安裝及維護帶來了不便。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種PCIE設(shè)備的配置方法及裝置,能夠在一個CPU上配置至少兩個PCIE控制器,使至少兩臺PCIE設(shè)備能夠分別與所述PCIE控制器連接,以減少PCIE設(shè)備的配置成本。具體技術(shù)方案如下:
本發(fā)明的一種實施例公開了一種PCIE設(shè)備的配置方法,應(yīng)用于采用VxWorks5.5操作系統(tǒng)的CPU,所述CPU上配置有至少兩個PCIE控制器,所述方法包括:在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配真實總線號,以及向各所述PCIE設(shè)備分配所述真實總線號;根據(jù)所述真實總線號,向各所述PCIE控制器重新分配虛擬總線號,以及向各所述PCIE設(shè)備重新分配所述虛擬總線號;其中,各所述PCIE控制器與所述虛擬總線號是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述虛擬總線號是一一對應(yīng)的;在接收到針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作時,根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號;根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
優(yōu)選地,所述方法還包括:在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配對應(yīng)的存儲空間,以及向各所述PCIE設(shè)備分配對應(yīng)的存儲空間;其中,各所述PCIE控制器與所述存儲空間是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述存儲空間是一一對應(yīng)的。
優(yōu)選地,所述根據(jù)所述真實總線號,向各所述PCIE控制器重新分配虛擬總線號,以及向各所述PCIE設(shè)備重新分配所述虛擬總線號的步驟,包括:根據(jù)各所述PCIE控制器分別對應(yīng)的所述存儲空間和所述真實總線號,以及各所述PCIE設(shè)備分別對應(yīng)的所述存儲空間和所述真實總線號,按照從0依次往后的順序、依次向各所述PCIE控制器和各所述PCIE設(shè)備重新分配虛擬總線號。
優(yōu)選地,所述根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號的步驟,包括:根據(jù)所述真實總線號的最大值,將所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號分別轉(zhuǎn)換為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號。
優(yōu)選地,所述根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作的步驟,包括:根據(jù)所述真實總線號,確定所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述存儲空間;根據(jù)所述存儲空間,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
本發(fā)明的又一種實施例公開了一種PCIE設(shè)備的配置裝置,應(yīng)用于采用VxWorks5.5操作系統(tǒng)的CPU,所述CPU上配置有至少兩個PCIE控制器,所述裝置包括:第一分配單元,用于在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配真實總線號,以及向各所述PCIE設(shè)備分配所述真實總線號;第二分配單元,用于根據(jù)所述真實總線號,向各所述PCIE控制器重新分配虛擬總線號,以及向各所述PCIE設(shè)備重新分配所述虛擬總線號;其中,各所述PCIE控制器與所述虛擬總線號是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述虛擬總線號是一一對應(yīng)的;獲得單元,用于在接收到針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作時,根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號;讀寫單元,用于根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
優(yōu)選地,所述裝置還包括:第三分配單元,用于在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配對應(yīng)的存儲空間,以及向各所述PCIE設(shè)備分配對應(yīng)的存儲空間;其中,各所述PCIE控制器與所述存儲空間是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述存儲空間是一一對應(yīng)的。
優(yōu)選地,所述第二分配單元,具體用于根據(jù)各所述PCIE控制器分別對應(yīng)的所述存儲空間和所述真實總線號,以及各所述PCIE設(shè)備分別對應(yīng)的所述存儲空間和所述真實總線號,按照從0依次往后的順序,依次向各所述PCIE控制器和各所述PCIE設(shè)備重新分配虛擬總線號。
優(yōu)選地,所述獲得單元,具體用于根據(jù)所述真實總線號的最大值,將所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號分別轉(zhuǎn)換為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號。
優(yōu)選地,所述讀寫單元,包括確定子單元和讀寫子單元;所述確定子單元,用于根據(jù)所述真實總線號,確定所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述存儲空間;所述讀寫子單元,用于根據(jù)所述存儲空間,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
本發(fā)明實施例提供的一種PCIE設(shè)備的配置方法及裝置,應(yīng)用于采用VxWorks5.5操作系統(tǒng)的CPU,所述CPU上配置有至少一個PCIE控制器,本發(fā)明實施例能夠在檢測到至少兩個PCIE控制器連接PCIE設(shè)備時,分別向各PCIE控制器分配真實總線號,以及向各PCIE設(shè)備分配真實總線號;接下來,根據(jù)真實總線號,向各PCIE控制器重新分配虛擬總線號,以及向各PCIE設(shè)備重新分配虛擬總線號;由于PCIE讀寫函數(shù)需要依據(jù)真實總線號來對各PCIE控制器和各PCIE設(shè)備執(zhí)行讀寫操作,因此,PCIE讀寫函數(shù)在接收到針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作時,需要根據(jù)待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號,以執(zhí)行對所述待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作。這樣,在CPU上配置至少兩個PCIE控制器,使至少兩臺PCIE設(shè)備能夠分別直接與PCIE控制器連接的場景下,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序能夠根據(jù)虛擬總線號區(qū)分多個PCIE控制器和PCIE設(shè)備,而PCIE讀寫函數(shù)可以依據(jù)由虛擬總線號轉(zhuǎn)換后的真實總線號執(zhí)行讀寫操作,不僅降低了PCIE設(shè)備的配置成本,而且便于安裝及維護PCIE設(shè)備。當(dāng)然,實施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時達到以上所述的所有優(yōu)點。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為PCIE控制器與PCIE設(shè)備的連接示意圖;
圖2為PCIE控制器與多臺PCIE設(shè)備的連接示意圖;
圖3為本發(fā)明實施例的PCIE設(shè)備的配置方法的一種流程圖;
圖4為本發(fā)明實施例的CPU上配置兩個PCIE控制器的連接示意圖;
圖5為本發(fā)明實施例的PCIE設(shè)備的配置方法的又一種流程圖;
圖6為本發(fā)明實施例的PCIE設(shè)備的配置裝置的一種結(jié)構(gòu)圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例公開了一種PCIE設(shè)備的配置方法,應(yīng)用于采用VxWorks5.5操作系統(tǒng)的CPU,所述CPU上配置有至少兩個PCIE控制器。
參見圖3,圖3為本發(fā)明實施例的PCIE設(shè)備的配置方法的一種流程圖,包括如下步驟:
步驟301,在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配真實總線號,以及向各所述PCIE設(shè)備分配真實總線號;
其中,各所述PCIE控制器與所述真實總線號不是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述真實總線號也不是一一對應(yīng)的。
在本發(fā)明實施例中,CPU上可以配置至少兩個PCIE控制器,每個PCIE控制器下可以連接至少一個PCIE設(shè)備。比如,CPU上可以配置兩個PCIE控制器,每個PCIE控制器下可以連接一個PCIE設(shè)備,如圖4所示,圖4為本發(fā)明實施例的CPU上配置兩個PCIE控制器的連接示意圖。需要說明的是,本發(fā)明對CPU上配置PCIE控制器的個數(shù),以及每個PCIE控制器下連接的PCIE設(shè)備的個數(shù)不加以限制。
具體地,VxWorks5.5操作系統(tǒng)在檢測到至少兩個PCIE控制器連接PCIE設(shè)備時,向所有配置在CPU上的PCIE控制器、以及在PCIE控制器下連接的PCIE設(shè)備進行初始化配置。在實際應(yīng)用中,可以將一個PCIE控制器及所述PCIE控制器下連接的PCIE設(shè)備作為一個組,依次對每個PCIE控制器組進行初始化配置;其中,初始化配置包括向各PCIE控制器分配真實總線號、存儲空間,確定真實總線號和存儲空間之間的對應(yīng)關(guān)系,以及向各PCIE設(shè)備分配真實總線號、存儲空間,確定真實總線號和存儲空間之間的對應(yīng)關(guān)系。
需要說明的是,本步驟中對單個PCIE控制器或者單個PCIE控制器進行初始化配置的具體方法可以參考現(xiàn)有技術(shù)。
實際應(yīng)用中,在本發(fā)明的一種優(yōu)選實施例中,所述方法還包括:
在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配對應(yīng)的存儲空間,以及向各所述PCIE設(shè)備分配對應(yīng)的存儲空間;
其中,各所述PCIE控制器與所述存儲空間是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述存儲空間是一一對應(yīng)的。
具體地,VxWorks5.5操作系統(tǒng)在檢測到PCIE設(shè)備連接PCIE控制器后,可以向PCIE控制器以及在PCIE控制器下連接的PCIE設(shè)備分配的真實總線號和存儲空間,以及根據(jù)所述真實總線號與所述存儲空間,為PCIE控制器和PCIE設(shè)備掛接新的PCIE讀寫函數(shù),需要說明的是,可以通過為PCIE控制器和PCIE設(shè)備掛接新的PCIE讀寫函數(shù),確定PCIE控制器分別對應(yīng)的真實總線號與存儲空間之間的映射關(guān)系,以及PCIE設(shè)備分別對應(yīng)的真實總線號與存儲空間之間的映射關(guān)系。
但是,由于VxWorks5.5操作系統(tǒng)向每個PCIE控制器組分配的真實總線號均是從0開始依次排序,這樣,當(dāng)初始化配置完成后,所有的PCIE控制器被分配到的真實總線號均為0,所有的PCIE控制器下連接的第一個PCIE設(shè)備被分配到的真實總線號均為1;同理,其他PCIE控制器下連接的PCIE設(shè)備被分配到的真實總線號也是重復(fù)的。可以理解的,各PCIE控制器與被分配的真實總線號不是一一對應(yīng)的,以及各PCIE設(shè)備與被分配的真實總線號也不是一一對應(yīng)的。
需要說明的是,在實際應(yīng)用中,用戶通過運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序下發(fā)讀寫指令,PCIE讀寫函數(shù)接收并執(zhí)行讀寫指令。但是,在現(xiàn)有技術(shù)中,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序是根據(jù)真實總線號區(qū)分PCIE設(shè)備和PCIE控制器的,在采用VxWorks5.5操作系統(tǒng)的CPU上配置多個PCIE控制器的場景下,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序無法區(qū)分真實總線號相同的各PCIE控制器和真實總線號相同的各PCIE設(shè)備。
因此,為了避免對真實總線號相同的多個PCIE控制器或者PCIE設(shè)備進行誤操作,目前在采用VxWorks5.5操作系統(tǒng)的CPU中,只能配置一個PCIE控制器。同時,由于每個PCIE控制器只能直接連接一個PCIE設(shè)備,那么,當(dāng)需要使用采用VxWorks5.5操作系統(tǒng)的CPU控制至少兩個PCIE設(shè)備時,只能使第一個PCIE設(shè)備直接連接PCIE控制器,第二個PCIE設(shè)備通過專用的硬件設(shè)備與第一個PCIE設(shè)備串聯(lián),同理,其他PCIE設(shè)備均通過專用的硬件設(shè)備與前一個PCIE設(shè)備串聯(lián)連接,不僅增加了PCIE設(shè)備的配置成本,而且給PCIE設(shè)備的安裝及維護帶來了不便。
還需要說明的是,由于每個PCIE控制器對應(yīng)的存儲空間均是預(yù)先設(shè)置好的,且每個PCIE控制器下連接的PCIE設(shè)備對應(yīng)的存儲空間也是按照預(yù)設(shè)規(guī)則分配的,因此,每個PCIE設(shè)備對應(yīng)的存儲空間是唯一的,以及每個PCIE控制器對應(yīng)的存儲空間也是唯一的,也就是說,即使多個PCIE控制器的真實總線號相同,但每個PCIE控制器對應(yīng)的存儲空間是不同的。
比如,在采用VxWorks5.5操作系統(tǒng)的CPU上配置PCIE0控制器和PCIE1控制器,且PCIE0控制器下連接PCIE0設(shè)備,PCIE1控制器下連接PCIE1設(shè)備的場景下,VxWorks5.5操作系統(tǒng)向PCIE0控制器分配的真實總線號為0x00,存儲空間的首地址為0xB000 0000;向PCIE0設(shè)備分配的真實總線號為0x01,存儲空間的首地址為0xA000 0000;而向PCIE1控制器分配的真實總線號也為0x00,存儲空間的首地址為0xD000 0000;向PCIE1設(shè)備分配的真實總線號也為0x01,存儲空間的首地址為0xC000 0000;確定PCIE0控制器對應(yīng)的總線號和存儲空間之間的映射關(guān)系、PCIE0設(shè)備對應(yīng)的總線號和存儲空間之間的映射關(guān)系、PCIE1控制器對應(yīng)的總線號和存儲空間之間的映射關(guān)系、PCIE1設(shè)備對應(yīng)的總線號和存儲空間之間的映射關(guān)系,并將所述映射關(guān)系記錄在PCIE讀寫函數(shù)中。
步驟302,根據(jù)所述真實總線號,向各所述PCIE控制器重新分配虛擬總線號,以及向各所述PCIE設(shè)備重新分配所述虛擬總線號;
其中,各所述PCIE控制器與所述虛擬總線號是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述虛擬總線號是一一對應(yīng)的。
在本步驟中,VxWorks5.5操作系統(tǒng)可以根據(jù)真實總線號,向各PCIE控制器重新分配虛擬總線號,以及向各PCIE設(shè)備重新分配所述虛擬總線號。
在現(xiàn)有技術(shù)中,由于多個PCIE控制器和PCIE設(shè)備可能被分配了同一個真實總線號,而運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序只能根據(jù)真實總線號來區(qū)分各PCIE控制器或者各PCIE設(shè)備。因此,本發(fā)明實施例可以根據(jù)各PCIE控制器對應(yīng)的唯一存儲空間,向各PCIE控制器重新分配唯一的虛擬總線號;以及根據(jù)各PCIE設(shè)備對應(yīng)的唯一存儲空間,向各PCIE設(shè)備重新分配唯一的虛擬總線號。這樣,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序就能夠根據(jù)各PCIE控制器和各PCIE設(shè)備對應(yīng)的唯一虛擬總線號,準(zhǔn)確區(qū)分各PCIE控制器和各PCIE設(shè)備。
在實際應(yīng)用中,通過VxWorks5.5操作系統(tǒng)注冊的PCIE讀寫函數(shù)可以根據(jù)各PCIE控制器對應(yīng)的唯一存儲空間,以及各PCIE設(shè)備對應(yīng)的唯一存儲空間,按照預(yù)設(shè)的分配規(guī)則,分別為各PCIE控制器重新分配唯一的虛擬總線號,以及向各PCIE設(shè)備重新分配唯一的虛擬總線號。
在本發(fā)明的又一種優(yōu)選實施例中,所述步驟302具體可以包括:
根據(jù)各所述PCIE控制器分別對應(yīng)的所述存儲空間和所述真實總線號,以及各所述PCIE設(shè)備分別對應(yīng)的所述存儲空間和所述真實總線號,按照從0依次往后的順序,依次向各所述PCIE控制器和各所述PCIE設(shè)備重新分配虛擬總線號。
當(dāng)然,在保證各PCIE控制器對應(yīng)的虛擬總線號是唯一的,以及各PCIE設(shè)備對應(yīng)的虛擬總線號是唯一的前提下,也可以按照其他分配規(guī)則分配虛擬總線號,本發(fā)明向為PCIE控制器和PCIE設(shè)備分配虛擬總線號的分配規(guī)則不加以限制。
比如,在采用VxWorks5.5操作系統(tǒng)的CPU上配置PCIE0控制器和PCIE1控制器,且PCIE0控制器下連接PCIE0設(shè)備,PCIE1控制器下連接PCIE1設(shè)備的場景下,PCIE讀寫函數(shù)可以按照從0開始依次往后的順序為PCIE0控制器、PCIE0設(shè)備、PCIE1控制器和PCIE1設(shè)備分配的虛擬總線號分別為0x00、0x01、0x02和0x03。
步驟303,在接收到針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作時,根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號;
在本步驟中,PCIE讀寫函數(shù)在接收到來自VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序下發(fā)的、針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫指令時,可以根據(jù)待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號。
在本發(fā)明實施例中,由于各PCIE控制器和各PCIE設(shè)備均對應(yīng)唯一的虛擬總線號,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序可以根據(jù)虛擬總線號,區(qū)分各PCIE控制器和各PCIE設(shè)備。這樣,在采用VxWorks5.5操作系統(tǒng)的CPU上配置多個PCIE控制器時,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序能夠針對各PCIE控制器或者各PCIE設(shè)備下發(fā)讀寫指令,以使PCIE讀寫函數(shù)對各PCIE控制器和各PCIE設(shè)備執(zhí)行讀寫。
需要說明的是,虛擬總線號只用于使運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序能夠區(qū)分各PCIE控制器和各PCIE設(shè)備,以使用戶能夠通過VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序,調(diào)用PCIE讀寫函數(shù)對各PCIE控制器和各PCIE設(shè)備下發(fā)讀寫指令。但是,PCIE讀寫函數(shù)仍然需要依據(jù)在初始化配置中分配的真實總線號來對各PCIE控制器和各PCIE設(shè)備執(zhí)行讀寫操作。因此,本發(fā)明實施例在PCIE讀寫函數(shù)中增加了將虛擬總線號轉(zhuǎn)換為初始化配置中分配的真實總線號的處理過程。
步驟304:根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
在本步驟中,PCIE讀寫函數(shù)能夠?qū)⑻摂M總線號轉(zhuǎn)換得到的真實總線號,進而根據(jù)真實總線號對各PCIE控制器和各PCIE設(shè)備執(zhí)行讀寫操作。
比如,在采用VxWorks5.5操作系統(tǒng)的CPU上配置PCIE0控制器和PCIE1控制器的場景下,PCIE0控制器、PCIE0設(shè)備、PCIE1控制器和PCIE1設(shè)備分別對應(yīng)的虛擬總線號為0x00、0x01、0x02和0x03,PCIE0控制器、PCIE0設(shè)備、PCIE1控制器和PCIE1設(shè)備分別對應(yīng)的初始化配置中分配的總線號為0x00、0x01、0x00、0x01。此時,當(dāng)用戶通過運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序?qū)Ω鱌CIE控制器和各PCIE設(shè)備下發(fā)讀寫操作的指令時,PCIE讀寫函數(shù)可以將虛擬總線號分別轉(zhuǎn)換為初始化配置中分配的真實總線號,以使得VxWorks5.5操作系統(tǒng)能夠識別各PCIE控制器和各PCIE設(shè)備。
可見,本發(fā)明實施例能夠在系統(tǒng)中采用至少兩個PCIE控制器連接PCIE設(shè)備時,向各PCIE控制器分配真實總線號以及向各PCIE設(shè)備分配真實總線號;接下來,根據(jù)真實總線號,向各PCIE控制器重新分配虛擬總線號,以及向各PCIE設(shè)備重新分配虛擬總線號;由于PCIE讀寫函數(shù)需要依據(jù)真實總線號來對各PCIE控制器和各PCIE設(shè)備執(zhí)行讀寫操作,因此,在接收到來自運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫指令時,可以根據(jù)虛擬總線號,獲得待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號;那么,PCIE讀寫函數(shù)就能夠根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。這樣,在CPU上配置至少兩個PCIE控制器,使至少兩臺PCIE設(shè)備能夠分別直接與PCIE控制器連接的場景下,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序能夠根據(jù)虛擬總線號區(qū)分多個PCIE控制器和PCIE設(shè)備,而PCIE讀寫函數(shù)也可以依據(jù)由虛擬總線號轉(zhuǎn)換后的真實總線號執(zhí)行讀寫操作,不僅降低了PCIE設(shè)備的配置成本,而且便于安裝及維護PCIE設(shè)備。
進一步地,在本發(fā)明的一種優(yōu)選實施例中,步驟304中所述根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作的步驟,包括:
根據(jù)所述真實總線號,確定所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述存儲空間;
根據(jù)所述存儲空間,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
需要說明的是,PCIE控制器的功能可以理解為是配置在CPU上的、可以連接PCIE設(shè)備的專用接口,需要通過PCIE控制器,對PCIE設(shè)備執(zhí)行讀寫操作。因此,需要獲取PCIE控制器和PCIE設(shè)備的存儲空間,以便通過PCIE控制器對PCIE設(shè)備執(zhí)行讀寫操作。
在本發(fā)明的另一種優(yōu)選實施例中,步驟303中所述根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號的步驟,具體可以包括:
根據(jù)所述真實總線號的最大值,將所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號分別轉(zhuǎn)換為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號。
進一步的,在本發(fā)明的一種應(yīng)用實施例中,所述根據(jù)所述真實總線號的最大值,將所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號分別轉(zhuǎn)換為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號的步驟,具體可以包括:
首先,判斷所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號是否大于所述真實總線號的最大值;若為是,則將所述虛擬總線號確定為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號;若為否,從所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號中減去所述真實總線號的最大值,得到所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的臨時總線號;
接下來,判斷所述臨時總線號是否大于所述真實總線號的最大值;若為是,則返回所述從所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號中減去根據(jù)所述真實總線號的最大值的步驟;若為否,則將所述臨時總線號確定為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號。
在實際應(yīng)用中,可以先確定真實總線號的最大值,也就是將一個PCIE控制器及所述一個PCIE控制器下連接的多個PCIE設(shè)備作為一個PCIE控制器組,需要說明的是,一般情況下,每個PCIE控制器組中的PCIE控制器和PCIE設(shè)備的個數(shù)是相同的,這樣,每個PCIE控制器組中的最大真實總線號就是真實總線號的最大值。
下面舉例說明將三個PCIE控制器組中的各PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號分別轉(zhuǎn)換為真實總線號的過程:
首先,分別判斷三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的虛擬總線號是否大于真實總線號的最大值;判斷結(jié)果為第一個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的虛擬總線號不大于真實總線號的最大值,第二個和第三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的虛擬總線號均大于真實總線號的最大值,那么,可以將第一個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)虛擬總線號確定為真實總線號;
接下來,從第二個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的虛擬總線號中、減去真實總線號的最大值,得到第一臨時總線號;判斷所述第一臨時總線號是否大于真實總線號的最大值;判斷結(jié)果為所述第一臨時總線號不大于真實總線號的最大值,那么可以將所述第一臨時總線號確定為第二個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的真實總線號;
同時,從第三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的虛擬總線號中減去真實總線號,得到第三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的第二臨時總線號,判斷所述第二臨時總線號是否大于真實總線號的最大值;判斷結(jié)果為所述第二臨時總線號仍大于真實總線號的最大值,那么,可以再次從所述第二臨時總線號中減去真實總線號的最大值,得到第三臨時總線號;判斷所述第三臨時總線號是否大于真實總線號;判斷結(jié)果為所述第三臨時總線號不大于真實總線號,這樣就可以將所述第三臨時總線號確定為真實總線號,得到第三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的真實總線號。其他PCIE控制器組的虛擬總線號的轉(zhuǎn)換過程類似,這樣就可以將各PCIE控制器組對應(yīng)的虛擬總線號轉(zhuǎn)換為真實總線號。
舉例說明,如圖5所示,圖5為本發(fā)明實施例的PCIE設(shè)備的配置方法的又一種流程圖,在CPU上配置兩個PCIE控制器時,PCIE讀寫函數(shù)將虛擬總線號轉(zhuǎn)換為初始化配置中分配的真實總線號的步驟如下所示:
步驟501,PCIE讀寫函數(shù)接收到來自VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序下發(fā)的讀寫指令,開始將讀寫指令中的虛擬總線號轉(zhuǎn)換為初始化配置中分配的真實總線號;
步驟502,判斷待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號是否為0或者1;若為是,則執(zhí)行步驟503;若為否,則執(zhí)行步驟507;
步驟503,確定所述待處理的PCIE控制器或者PCIE設(shè)備為PCIE0控制器或者PCIE1設(shè)備;
步驟504,判斷所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號是否為0;若為是,則執(zhí)行步驟505;若為否,則執(zhí)行步驟506;
步驟505,確定所述待處理的PCIE控制器或者PCIE設(shè)備為PCIE0控制器,并得到PCIE0控制器對應(yīng)的存儲空間的首地址;執(zhí)行步驟512;
具體地,可以在寄存器的地址上加上PCIE0控制器的基地址,得到PCIE0控制器對應(yīng)的存儲空間的首地址。
步驟506,確定所述待處理的PCIE控制器或者PCIE設(shè)備為PCIE1設(shè)備,并得到PCIE1設(shè)備對應(yīng)的存儲空間的首地址;執(zhí)行步驟512;
具體地,可以在預(yù)設(shè)寄存器的地址上加上PCIE1設(shè)備的基地址,得到PCIE1設(shè)備對應(yīng)的存儲空間的首地址。
步驟507,確定所述待處理的PCIE控制器或者PCIE設(shè)備為PCIE2控制器或者PCIE3設(shè)備;
步驟508,將所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號減去2,得到所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號;
步驟509,判斷待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號是否為0;若為是,則執(zhí)行步驟510;若為否,則執(zhí)行步驟511;
步驟510,確定所述待處理的PCIE控制器或者PCIE設(shè)備為PCIE2控制器,并得到PCIE2控制器對應(yīng)的存儲空間的首地址;執(zhí)行步驟512;
具體地,可以在CPU上的寄存器地址上加上PCIE2控制器的基地址,得到PCIE2控制器對應(yīng)的存儲空間的首地址。
步驟511,確定所述待處理的PCIE控制器或者PCIE設(shè)備為PCIE3設(shè)備,并得到PCIE3設(shè)備對應(yīng)的存儲空間的首地址;執(zhí)行步驟512;
具體地,可以在CPU上的寄存器地址上加上PCIE3設(shè)備的基地址,得到PCIE3設(shè)備對應(yīng)的存儲空間的首地址。
步驟512,根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的存儲空間的首地址,對所述待處理的PCIE控制器或者PCIE設(shè)備進行讀寫操作。
另外,在CPU上配置有三個PCIE控制器的場景下,對于第三個PCIE控制器:首先,在判斷虛擬總線號大于真實總線號的最大值后,先從第三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的虛擬總線號中減去真實總線號,得到第一臨時總線號;接下來,判斷第一臨時總線號仍大于真實總線號的最大值,那么,需要再從第一臨時總線號中減去真實總線號的最大值,得到第二臨時總線號;然后,繼續(xù)判斷第二臨時總線號是否大于真實總線號,得到第二臨時總線號不大于真實總線號的最大值,此時,可以將第二臨時總線號確定為真實總線號,得到第三個PCIE控制器組中的PCIE控制器或者PCIE設(shè)備分別對應(yīng)的真實總線號。
此外,在本發(fā)明的又一種應(yīng)用實施例中,步驟303中所述根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號的步驟,具體還可以通過在PCIE讀寫函數(shù)中記錄同一個PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號和真實總線號之間的對應(yīng)關(guān)系,來實現(xiàn)虛擬總線號和真實總線號之間的轉(zhuǎn)換,詳細描述如下:
首先,可以在步驟302中根據(jù)所述真實總線號,分別向各所述PCIE控制器重新分配虛擬總線號,以及分別向各所述PCIE設(shè)備重新分配所述虛擬總線號之后,在PCIE讀寫函數(shù)中分別保存各所述PCIE控制器的虛擬總線號與真實總線號之間的對應(yīng)關(guān)系,以及分別保存各所述PCIE設(shè)備的虛擬總線號與真實總線號之間的對應(yīng)關(guān)系;
接下來,可以在步驟303接收到針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作時,根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,查詢PCIE讀寫函數(shù)中保存的虛擬總線號與真實總線號之間的對應(yīng)關(guān)系,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號。
這樣,PCIE讀寫函數(shù)就可以將虛擬總線號分別轉(zhuǎn)換為真實總線號,以實現(xiàn)對各PCIE控制器和各PCIE設(shè)備的讀寫操作。
本發(fā)明實施例還提供了一種PCIE設(shè)備的配置裝置。以下裝置實施例中描述,可以參見上述方法實施例中的描述,在此不再贅述。
如圖6所示,圖6為本發(fā)明實施例的PCIE設(shè)備的配置裝置的一種結(jié)構(gòu)圖,所述裝置包括:
第一分配單元601,用于在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配真實總線號,以及向各所述PCIE設(shè)備分配所述真實總線號;
第二分配單元602,用于根據(jù)所述真實總線號,向各所述PCIE控制器重新分配虛擬總線號,以及向各所述PCIE設(shè)備重新分配所述虛擬總線號;其中,各所述PCIE控制器與所述虛擬總線號是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述虛擬總線號是一一對應(yīng)的;
獲得單元603,用于在接收到針對待處理的PCIE控制器或者PCIE設(shè)備的讀寫操作時,根據(jù)所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號,獲得所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述真實總線號;
讀寫單元604,用于根據(jù)所述真實總線號,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
可見,本發(fā)明裝置實施例能夠?qū)崿F(xiàn)在CPU上配置至少兩個PCIE控制器,使至少兩臺PCIE設(shè)備能夠分別直接與PCIE控制器連接,并且,運行于VxWorks5.5操作系統(tǒng)之上的應(yīng)用程序能夠根據(jù)虛擬總線號區(qū)分多個PCIE控制器和PCIE設(shè)備,而PCIE讀寫函數(shù)也可以依據(jù)由虛擬總線號轉(zhuǎn)換后的真實總線號執(zhí)行讀寫操作,不僅降低了PCIE設(shè)備的配置成本,而且便于安裝及維護PCIE設(shè)備。
在本發(fā)明的一種優(yōu)選實施例中,所述裝置還包括:
第三分配單元,用于在檢測到至少兩個所述PCIE控制器連接PCIE設(shè)備時,向各所述PCIE控制器分配對應(yīng)的存儲空間,以及向各所述PCIE設(shè)備分配對應(yīng)的存儲空間;其中,各所述PCIE控制器與所述存儲空間是一一對應(yīng)的,以及各所述PCIE設(shè)備與所述存儲空間是一一對應(yīng)的。
在本發(fā)明的又一種優(yōu)選實施例中,所述第二分配單元602,具體用于根據(jù)各所述PCIE控制器分別對應(yīng)的所述存儲空間和所述真實總線號,以及各所述PCIE設(shè)備分別對應(yīng)的所述存儲空間和所述真實總線號,按照從0依次往后的順序,依次向各所述PCIE控制器和各所述PCIE設(shè)備重新分配虛擬總線號。
在本發(fā)明的另一種優(yōu)選實施例中,所述獲得單元603,具體用于根據(jù)所述真實總線號的最大值,將所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的虛擬總線號分別轉(zhuǎn)換為所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的真實總線號。
在本發(fā)明的再一種優(yōu)選實施例中,所述讀寫單元604,包括確定子單元和讀寫子單元;
所述確定子單元,用于根據(jù)所述真實總線號,確定所述待處理的PCIE控制器或者PCIE設(shè)備對應(yīng)的所述存儲空間;
所述讀寫子單元,用于根據(jù)所述存儲空間,對所述待處理的PCIE控制器或者PCIE設(shè)備執(zhí)行讀寫操作。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關(guān)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。