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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于VxWorks的PCI總線多功能數(shù)據(jù)采集卡驅(qū)動(dòng)開(kāi)發(fā)

          基于VxWorks的PCI總線多功能數(shù)據(jù)采集卡驅(qū)動(dòng)開(kāi)發(fā)

          作者: 時(shí)間:2012-08-30 來(lái)源:網(wǎng)絡(luò) 收藏

          在前面的一節(jié)中提到過(guò),要訪問(wèn)一個(gè)設(shè)備,首先要知道它的廠商號(hào)和設(shè)備號(hào),在實(shí)際工作中,可以通過(guò)WinDriver這個(gè)在windows平臺(tái)下運(yùn)行的編寫的軟件獲得,這樣比較方便和直觀,通過(guò)它,得到7396的廠商號(hào)(Dev7396_VENDOR_ID)為0x144a,設(shè)備號(hào)Dev7396_DEVICE_ ID)為0x7396。知道廠商號(hào)和設(shè)備號(hào)后,就可以利用提供的函數(shù)pciFindDevice()獲得設(shè)備的號(hào)、設(shè)備編號(hào)和功能號(hào)。然后調(diào)用peiConfigInLong()獲得卡設(shè)備的配置空間、內(nèi)存空間、I/O空間的地址;pciConfigInByte得到設(shè)備中斷號(hào)。7396設(shè)備沒(méi)有要訪問(wèn)的內(nèi)存空間,所以沒(méi)有涉及到內(nèi)存的映射和操作。主要的實(shí)現(xiàn)代碼如下所示:
          d.JPG
          在讀取設(shè)備的基地址時(shí),要特別注意結(jié)合設(shè)備相關(guān)的說(shuō)明書進(jìn)行,在前面的章節(jié)中提到過(guò),7396設(shè)備包含3個(gè)寄存器空間(詳見(jiàn)2卡7396簡(jiǎn)介),所以讀出來(lái)的基地址空間有可能是3個(gè)里面的一個(gè)。
          e.JPG
          由于使用的是PENTIUM系列的CPU來(lái)進(jìn)行板卡,所以在邊接中斷向量的時(shí)候,中斷號(hào)要加上0x20。
          f.JPG
          特別要注意操作9050的控制寄存器的偏移為0x4c的地方的操作,它是要實(shí)現(xiàn)中斷必須要進(jìn)行的操作,沒(méi)有操作正確的話,中斷是不能夠正確運(yùn)行的,而且9050的這個(gè)寄存器的各個(gè)位和9052還是不一樣的,雖然都是PLX公司的產(chǎn)品。
          讀取完上面的I/O基地址和相應(yīng)的中斷后,就可以操作I/O空間了,這要根據(jù)相應(yīng)板卡說(shuō)明書上的基地址偏移來(lái)操作,而且還要注意設(shè)置端口是輸入端口還是輸出端口。中斷服務(wù)程序在下也有嚴(yán)格的要求,要注意。

          5 結(jié)束語(yǔ)
          文中結(jié)合具體的Adlink公司的7396卡,介紹了在下編寫設(shè)備的相關(guān)方法以及要注意的事項(xiàng),并介紹了VxWorks的I/O系統(tǒng)和驅(qū)動(dòng)相關(guān)的理論知識(shí),它們是驅(qū)動(dòng)的基礎(chǔ)。根據(jù)上面方法出的7396驅(qū)動(dòng)已經(jīng)在某綜合控制系統(tǒng)中穩(wěn)定地運(yùn)行。

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

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁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); })();