VxWorks操作系統(tǒng)下實(shí)現(xiàn)ComPactPCI總線驅(qū)動(dòng)
VxWorks是專門為實(shí)時(shí)嵌人式系統(tǒng)設(shè)計(jì)開發(fā)的操作系統(tǒng)軟件,提供高效的實(shí)時(shí)任務(wù)調(diào)度、中斷管理、實(shí)時(shí)的系統(tǒng)資源分配以及實(shí)時(shí)的任務(wù)間通信。程序員可將主要精力放在應(yīng)用程序本身,而不用關(guān)心對(duì)系統(tǒng)資源的管理。
為闡明在VxWorks操作系統(tǒng)下如何實(shí)現(xiàn)CompaetPCI總線設(shè)備的驅(qū)動(dòng),需了解PCI設(shè)備的配置寄存器空間。PCI設(shè)備有3種物理存儲(chǔ)空間:配置寄存器空間、存儲(chǔ)器空間和I/O空間。PCI局部總線設(shè)備中配置寄存器空間是一容量為256 KB并具有特定記錄結(jié)構(gòu)的地址空間,該空間分為頭標(biāo)區(qū)和設(shè)備有關(guān)區(qū)兩部分,空間頭標(biāo)區(qū)的定義如圖2所示。
在配置空間中,只讀空間有設(shè)備標(biāo)識(shí)、供應(yīng)商代碼、修改版本、分類代碼以及頭標(biāo)類型。其中供應(yīng)商代碼用來標(biāo)識(shí)設(shè)備供應(yīng)商;設(shè)備標(biāo)識(shí)用來標(biāo)識(shí)某一特殊的設(shè)備;修改版本標(biāo)識(shí)設(shè)備的版本號(hào);分類代碼用來標(biāo)識(shí)設(shè)備的種類;而頭標(biāo)類型用來標(biāo)識(shí)頭類型以及是否為多功能設(shè)備。除供應(yīng)商代碼之外,其他字段的值由供應(yīng)商分配。
PCI設(shè)備可以在地址空間中重定位是其重要功能之一,使得系統(tǒng)可合理地分配資源,甚至完全相同的兩塊PCI卡也能夠在同一總線內(nèi)工作而不會(huì)產(chǎn)生地址沖突?;刂芳拇嫫鞯墓δ苁欠峙銹CI設(shè)備的系統(tǒng)地址空間,在基地址寄存器中,位0(最低位)均為只讀位并且用來標(biāo)識(shí)是存儲(chǔ)器空間還是I/O地址空間。如果該位為0,表示映射到存儲(chǔ)器空間。映射到I/O空間的基址寄存器寬度總是32 bit,其中位0值為1 (用硬件實(shí)現(xiàn)),位1為保留位并且其讀出值必須為0,其余各位用來把設(shè)備映射到I/O空間。映射到存儲(chǔ)器空間的基址寄存器可以是32 bit寬度,也可以是64 bit寬度。其中位0也要用硬件方式使其恒為0。位2和位1兩位用來表示映射類型,其余各位用來將設(shè)備映射到存儲(chǔ)器空間。
系統(tǒng)配置軟件通過向基址寄存器寫入全“1”后再讀回的方式確定設(shè)備要求的地址空間范圍,與地址空間無關(guān)的位其返回值為0。
在VxWorks操作系統(tǒng)下實(shí)現(xiàn)CompactPCI總線設(shè)備的驅(qū)動(dòng)過程主要包括下面步驟:
(1)查找CompaetPCI設(shè)備在VxWorks操作系統(tǒng)中通過函數(shù)peiFindDeviee()來實(shí)現(xiàn),該函數(shù)可根據(jù)給定的設(shè)備標(biāo)識(shí)和供應(yīng)商代碼找到相應(yīng)的設(shè)備。并返回總線號(hào)、設(shè)備號(hào)以及功能號(hào)。函數(shù)的定義如下:
)
(2)配置CompactPCI設(shè)備 通過操作系統(tǒng)提供的API函數(shù)訪問CompactPCI設(shè)備的配置空間,配置CompactPCI設(shè)備基址寄存器、中斷、ROM基地址寄存器等,可得到Compact-PCI的仔儲(chǔ)器空間和I/O地址空間映射、設(shè)備的中斷號(hào)等。在VxWorks操作系統(tǒng)中訪問CompactPCI設(shè)備配置空間的函數(shù)有pciConfigInLong()、pciConfigOutLong()等,它們分別完成對(duì)CompactPCI設(shè)備配置空間的讀寫操作。這一系列操作也稱為PCI設(shè)備枚舉。然后,根據(jù)CompactPCI設(shè)備的配置參數(shù),對(duì)不同的設(shè)備編寫初始化程序、中斷服務(wù)程序以及對(duì)PCI設(shè)備存儲(chǔ)空間的訪問程序。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論