新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的內(nèi)嵌PCI總線的衛(wèi)星信號仿真器設(shè)計(jì)方案

        基于DSP的內(nèi)嵌PCI總線的衛(wèi)星信號仿真器設(shè)計(jì)方案

        作者: 時(shí)間:2012-04-20 來源:網(wǎng)絡(luò) 收藏

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

        PCI端口通過3種基址寄存器可以完全訪問的存儲(chǔ)器映射。

        Base0:4 MB的可預(yù)存取空間,通過設(shè)置頁寄存器映射所有存儲(chǔ)器空間,預(yù)取讀使所有的字節(jié)有效。

        Base1:8 MB非預(yù)取地址映射對應(yīng)于所有的DSP存儲(chǔ)空間,非預(yù)取支持字節(jié)使能。

        Base2:PCI的16MB I/O包括I/O寄存器。

        這3種寄存器屬于PCI配置寄存器,PCI主機(jī)可以訪問映射在PCI存儲(chǔ)器空間4 MB的DSP存儲(chǔ)器,PCI端口包含一個(gè)PCI I/O寄存器(DSPP寄存器)從PCI地址到DSP地址的映射。當(dāng)DSP作為PCI本地總線從屬時(shí),使用該映射模式;當(dāng)DSP上的PCI基地址寄存器被配置成一個(gè)8 MB不可預(yù)取區(qū)域時(shí),該存儲(chǔ)空間映射為DSP內(nèi)存映射寄存器(0180 0000h)。PCI地址的22:0位與一個(gè)固定偏移相連,將Base 1訪問映射到內(nèi)存寄存器;基地址寄存器2配置16 B I/O空間,使PCI主機(jī)用于訪問PCI I/O寄存器。

        3 程序及驅(qū)動(dòng)程序的開發(fā)

        3.1 驅(qū)動(dòng)工具的選擇

        對于開發(fā)wDM型PCI驅(qū)動(dòng),常用的開發(fā)工具有三種。一是直接使用Windows DDK或者WDK工具;二是使用DriverStudio;三是使用WinDriver。第一種方式要求掌握Windows的體系結(jié)構(gòu)、設(shè)備驅(qū)動(dòng)的體系結(jié)構(gòu)等知識(shí),開發(fā)難度較大;第二種方式對DDK進(jìn)行了封裝,難度雖然降低了些,但依然不小,而且由于封裝問題,可能帶來一些Bug,有可能導(dǎo)致項(xiàng)目失敗;第三種方式克服了傳統(tǒng)開發(fā)工具開發(fā)驅(qū)動(dòng)周期長,效率低,需具有DDK和核心態(tài)程序開發(fā)經(jīng)驗(yàn)等缺點(diǎn),大大簡化了ISA-BUS,PCIBUS等硬件設(shè)備驅(qū)動(dòng)程序的開發(fā)過程,而且WinDriver還提供核心插件(Kerneal Plu-gin)功能,使開發(fā)者在用戶模式下調(diào)試代碼,然后將調(diào)試無誤的代碼搬到內(nèi)核模式(Kernel Mode)中,因而使用WinDriver,具有簡單、快速、高效的特點(diǎn)。

        3.2 WinDriver的工作原理

        圖5是WinDriver的體系結(jié)構(gòu)圖,陰影部分是WinDriver提供的組件。WinDriver提供以WinDrvr6.sys為底層的驅(qū)動(dòng)棧層,直接與硬件交互,避免了用戶對硬件操作的復(fù)雜性,用戶開發(fā)驅(qū)動(dòng)只需在應(yīng)用程序中調(diào)用WinDriver用戶模式的API函數(shù)。這些用戶模式的函數(shù)調(diào)用 WinDriver的Kernel Module函數(shù)實(shí)現(xiàn)對硬件的訪問。對于某些要求比較高的硬件驅(qū)動(dòng)(如要求響應(yīng)中斷的速度足夠快),如果用戶模式開發(fā)的驅(qū)動(dòng)無法達(dá)到要求,開發(fā)者可以將用戶模式下調(diào)試好的代碼放入到WinDriver的Kernel Plugin模塊中,使得驅(qū)動(dòng)開發(fā)可以在用戶模式下進(jìn)行,而開發(fā)的驅(qū)動(dòng)的效率完全可與內(nèi)核模式下的驅(qū)動(dòng)相媲美。

        圖6為用WinDriver開發(fā)PCI驅(qū)動(dòng)內(nèi)部的API函數(shù)調(diào)用關(guān)系。

        通常情況下,在應(yīng)用程序中不直接調(diào)用這些API函數(shù),而是通過二次開發(fā),將這些API函數(shù)封裝在動(dòng)態(tài)鏈接庫DLL中,然后應(yīng)用程序調(diào)用DLL中封裝好的函數(shù)。



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 江永县| 文成县| 海兴县| 怀化市| 任丘市| 山东省| 扬中市| 宣恩县| 定西市| 抚顺县| 建德市| 岳阳市| 获嘉县| 常宁市| 长岛县| 和龙市| 五莲县| 临沭县| 保德县| 和政县| 新邵县| 通化县| 酉阳| 花莲市| 南溪县| 冀州市| 罗田县| 高平市| 岳阳县| 昂仁县| 上虞市| 南澳县| 神木县| 潞城市| 阜新市| 章丘市| 射阳县| 西乌珠穆沁旗| 长白| 绥德县| 封开县|