新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > VxWorks操作系統下實現ComPactPCI總線驅動

        VxWorks操作系統下實現ComPactPCI總線驅動

        作者: 時間:2011-09-11 來源:網絡 收藏
        4 設備的配置技術

        本文引用地址:http://www.104case.com/article/150232.htm

          是專門為實時嵌人式系統設計開發的軟件,提供高效的實時任務調度、中斷管理、實時的系統資源分配以及實時的任務間通信。程序員可將主要精力放在應用程序本身,而不用關心對系統資源的管理。

          為闡明在下如何CompaetPCI設備的,需了解PCI設備的配置寄存器空間。PCI設備有3種物理存儲空間:配置寄存器空間、存儲器空間和I/O空間。PCI局部設備中配置寄存器空間是一容量為256 KB并具有特定記錄結構的地址空間,該空間分為頭標區和設備有關區兩部分,空間頭標區的定義如圖2所示。

          

          在配置空間中,只讀空間有設備標識、供應商代碼、修改版本、分類代碼以及頭標類型。其中供應商代碼用來標識設備供應商;設備標識用來標識某一特殊的設備;修改版本標識設備的版本號;分類代碼用來標識設備的種類;而頭標類型用來標識頭類型以及是否為多功能設備。除供應商代碼之外,其他字段的值由供應商分配。

          PCI設備可以在地址空間中重定位是其重要功能之一,使得系統可合理地分配資源,甚至完全相同的兩塊PCI卡也能夠在同一內工作而不會產生地址沖突。基地址寄存器的功能是分配PCI設備的系統地址空間,在基地址寄存器中,位0(最低位)均為只讀位并且用來標識是存儲器空間還是I/O地址空間。如果該位為0,表示映射到存儲器空間。映射到I/O空間的基址寄存器寬度總是32 bit,其中位0值為1 (用硬件),位1為保留位并且其讀出值必須為0,其余各位用來把設備映射到I/O空間。映射到存儲器空間的基址寄存器可以是32 bit寬度,也可以是64 bit寬度。其中位0也要用硬件方式使其恒為0。位2和位1兩位用來表示映射類型,其余各位用來將設備映射到存儲器空間。

          系統配置軟件通過向基址寄存器寫入全“1”后再讀回的方式確定設備要求的地址空間范圍,與地址空間無關的位其返回值為0。

          在CompactPCI總線設備的過程主要包括下面步驟:

          (1)查找CompaetPCI設備在VxWorks操作系統中通過函數peiFindDeviee()來實現,該函數可根據給定的設備標識和供應商代碼找到相應的設備。并返回總線號、設備號以及功能號。函數的定義如下:

          

          )

          (2)配置CompactPCI設備 通過操作系統提供的API函數訪問CompactPCI設備的配置空間,配置CompactPCI設備基址寄存器、中斷、ROM基地址寄存器等,可得到Compact-PCI的仔儲器空間和I/O地址空間映射、設備的中斷號等。在VxWorks操作系統中訪問CompactPCI設備配置空間的函數有pciConfigInLong()、pciConfigOutLong()等,它們分別完成對CompactPCI設備配置空間的讀寫操作。這一系列操作也稱為PCI設備枚舉。然后,根據CompactPCI設備的配置參數,對不同的設備編寫初始化程序、中斷服務程序以及對PCI設備存儲空間的訪問程序。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜良县| 斗六市| 佛冈县| 安西县| 珠海市| 林口县| 丁青县| 巴楚县| 库伦旗| 金乡县| 珠海市| 大渡口区| 阜新| 晋中市| 社会| 灌云县| 泗洪县| 弋阳县| 根河市| 临城县| 墨江| 万源市| 上蔡县| 泽州县| 丽江市| 大埔县| 鄂托克前旗| 平潭县| 武清区| 许昌县| 石林| 福安市| 昂仁县| 山东省| 遵义县| 洮南市| 汪清县| 福鼎市| 保康县| 英山县| 灌阳县|