<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > PCI接口擴展卡的快速開發(fā)方案

          PCI接口擴展卡的快速開發(fā)方案

          作者: 時間:2009-04-09 來源:網(wǎng)絡 收藏

            Local Address Space 0 Local Base Address(remap):設為0000 0001,表示將總線上的地址轉換為局部總線地址0x0000~0x001F。
            Chip Select 0 Base Address:設為0000 0011,表示在局部總線地址為0x0000~0x001F時,局部總線的片選信號有效,用于SJA1000的片選。
            Interrupt Control/Status: 設為0000 0041, 表示中斷使能,響應LINTi1上的中斷申請。
            CNTRL: 設為0060 0C80,表示USER0、USER1引腳用于輸入,USER2 、USER3引腳用于輸出,初始值分別為0、1,數(shù)據(jù)傳輸?shù)却瑫r長度為12個時鐘周期。
            根據(jù)標準和PLX9052的說明文檔,PCI連接器上所有的VCC、Vi/o 5V電源連接到一起,所有的GND端連接到一起,在盡可能靠近PLX9052電源引腳的地方放置高頻去耦電容。PCI總線的時鐘頻率為33MHz,不恰當?shù)牟季€會導致信號線之間的延時關系混亂,因此PCI協(xié)議對布線做了嚴格的規(guī)定,要求主時鐘PCI_CLK線的長度為2.5英寸,誤差應小于0.1英寸,其它引線短于1.5英寸,推薦使用四層板。設計中可以參考市面上的聲卡和網(wǎng)卡布線實例,如考慮成本等因素,也可只使用兩層板,雙面覆銅接地。經(jīng)實踐驗證該卡能夠穩(wěn)定工作。
          3 PCI卡驅動程序及軟件設計
            在DOS環(huán)境下,操作系統(tǒng)對應用程序開放所有權限,開發(fā)人員可以使用匯編指令、BIOS函數(shù)等任何方法操作硬件資源,此處不再贅述。
            在Windows系統(tǒng)中,為避免因不當?shù)挠布僮鞫鴮е孪到y(tǒng)崩潰,應用程序不再具有直接的硬件訪問權,如果要操作硬件,必須借助設備驅動程序。現(xiàn)有的Windows系列操作系統(tǒng)產(chǎn)品眾多,所使用的設備驅動程序結構也有所不同。其中,VxD型驅動程序最古老,適用于Win3.x、Win95、Win98等操作系統(tǒng);WinNT型驅動程序只適用于WinNT4.x以下版本的操作系統(tǒng);WDM型驅動程序是WinNT型驅動程序的升級版,適用于Win98、Win2000、WinXP等操作系統(tǒng),是今后幾年的應用主流。
            Microsoft為設備驅動程序的編寫提供了一些工具,如Windows Device Drivers Kit(簡稱DDK),它包含了驅動開發(fā)所需的各種類型的定義和內核函數(shù)庫。如果直接使用DDK,開發(fā)者需要了解整個系統(tǒng)體系結構和WDM規(guī)范,熟諳上千個DDK函數(shù)的功能和使用場合。用這種方法編制的驅動程序有很高的運行效率,但是開發(fā)難度大,測試流程繁瑣,一般用于有一定研發(fā)和生產(chǎn)需求的單位。
            為減輕開發(fā)者的負擔,很多第三方廠商提供了輔助軟件。如Numega公司的DriverStudio軟件,它將DDK函數(shù)按照邏輯功能組織,把很多常用功能封裝成類,建立了一個基于C++語言的面向對象的編程環(huán)境。開發(fā)者面對的不再是上千個復雜凌亂的DDK函數(shù),而是邏輯清晰的類庫,大大降低了開發(fā)難度和開發(fā)周期,獲得了廣泛的應用。
            對于速度要求不高、實時性要求不嚴的場合, Jungo公司的Windriver[3]軟件提供了一種更加快速簡潔的解決。它內置一個名為Wdpnp.sys的通用核心態(tài)WDM驅動程序,將一些基本的操作如存儲器讀寫、I/O端口讀寫、中斷服務、DMA操作等進行了封裝,開發(fā)者只需編寫一個外殼程序來調用這個驅動程序,就可以對硬件設備操作,如圖3所示,圖中灰色的部分表示W(wǎng)indriver已經(jīng)提供。

          本文引用地址:http://www.ex-cimer.com/article/202702.htm

          Windriver提供的驅動程序經(jīng)過充分優(yōu)化,功能完備,在通用性和高效性之間做了很好的平衡。另外,Windriver專門為PLX公司的芯片開發(fā)了軟件包,因此非常適合在本中使用。
            Windriver啟動后,會自行發(fā)現(xiàn)計算機上的所有即插即用設備,如圖4所示。其中“PCI:PLX PCI 9050 Target PCI Interface Chip”即指本卡。點擊“Generate.INF file'按鈕可以生成INF文件,系統(tǒng)

          用它提供的信息安裝Wdpnp.sys。

          為方便在用戶態(tài)驅動代碼中操作SJA1000 和PLX9052的寄存器,可以使用Windriver為已映射的存儲器地址命名,如圖5所示,圖中CAN_IR表示中斷寄存器,CAN_CR表示控制寄存器,等等。

          Windriver的核心態(tài)驅動程序內置了中斷服務函數(shù),它的作用有兩個:一是發(fā)送硬件清中斷指令,用戶在初始化階段告知Windriver如何清中斷(一般是對板卡上的某個寄存器進行讀寫),由核心驅動程序自動完成。二是通知應用程序有中斷到來,回調用戶程序的中斷響應函數(shù)。
            用Windriver可以生成一個基于C語言的應用程序函數(shù)庫,用戶通過這些庫函數(shù)控制內核驅動程序?,F(xiàn)以筆者編制的程序為例進行介紹,工程文件名取為CAN01。
            在初始化階段,先使用 WD_Open()打開驅動程序,再用CAN01_Open()設置驅動程序工作參數(shù),生成一個CAN01實例,最后用CAN01_IntEnable()設置用戶態(tài)中斷響應函數(shù)。
            在退出應用程序前,先清除所有未處理的中斷,釋放分配的內存,再用CAN01_Close()刪除CAN01,最后使用WD_Close()關閉驅動程序。
            對SJA1000和PLX9052的寄存器的操作通過兩個函數(shù)完成,可以實現(xiàn)CAN總線通信和數(shù)字量I/O等功能:
            讀操作CAN01_ReadByte(),
            寫操作CAN01_WriteByte()。
            本文根據(jù)筆者的實際經(jīng)驗,介紹了開發(fā)PCI總線的軟硬件流程,給出了一套快速可行的解決。該方案電路簡單、調試方便、編程高效、可以使技術人員迅速掌握PCI總線的開發(fā)技術,從而設計符合個性要求的多功能

          存儲器相關文章:存儲器原理


          晶振相關文章:晶振原理
          上拉電阻相關文章:上拉電阻原理

          上一頁 1 2 下一頁

          關鍵詞: PCI 接口 方案 擴展卡

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();