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

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于Linux平臺(tái)的天氣雷達(dá)高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于Linux平臺(tái)的天氣雷達(dá)高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

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

          2.1.2 設(shè)備接口函數(shù)

          設(shè)備接口函數(shù)為用戶提供與設(shè)備進(jìn)行交互的不同功能接口,主要完成用戶與設(shè)備的讀、寫及設(shè)備控制訪問(wèn)等功能,其數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)為:

          static const struct file_operations plx9054_fops = {

          .owner = THIS_MODULE,

          .open = plx9054_open, /*打開(kāi)設(shè)備*/

          .release = plx9054_close, /*釋放設(shè)備*/

          .ioctl = plx9054_ioctl, /*IO操作*/

          .read = plx9054_read, /*讀設(shè)備*/

          };

          這個(gè)數(shù)據(jù)結(jié)構(gòu)在設(shè)備裝載過(guò)程中,作為設(shè)備注冊(cè)的參數(shù)完成與設(shè)備掛接、使用戶在系統(tǒng)調(diào)用中能訪問(wèn)到上述關(guān)聯(lián)的設(shè)備接口函數(shù)。

          設(shè)備打開(kāi)函數(shù)plx9054_open完成以下操作:設(shè)備私有數(shù)據(jù)結(jié)構(gòu)內(nèi)存空間分配及初始化,DMA連續(xù)物理內(nèi)存空間申請(qǐng),為最大距離探測(cè)數(shù)據(jù)的大??;調(diào)用pci_map_single將分配的DMA內(nèi)存空間映射為用于DMA傳輸?shù)刂?;DMA數(shù)據(jù)緩沖區(qū)分配(容量為2 MB),緩沖區(qū)保存每次DMA傳輸中獲取的數(shù)據(jù);調(diào)用request_irq對(duì)中斷函數(shù)p9054_interrupt進(jìn)行中斷號(hào)申請(qǐng);對(duì)工作參數(shù)進(jìn)行缺省配置,啟動(dòng)雷達(dá)工作。設(shè)備釋放函數(shù)PLX9054_close完成的操作與設(shè)備打開(kāi)函數(shù)與PLX9054_open相反。IO操作函數(shù)PLX9054_ioctl通過(guò)sys_ioctl系統(tǒng)調(diào)用,完成用戶與設(shè)備的信息查詢、雷達(dá)工作參數(shù)配置與查詢,如驅(qū)動(dòng)軟件版本號(hào)、雷達(dá)當(dāng)前工作各參數(shù)配置和查詢,主要用于對(duì)FPGA中RAM內(nèi)存空間的雷達(dá)工作參數(shù)數(shù)據(jù)訪問(wèn)。由于這部分?jǐn)?shù)據(jù)對(duì)訪問(wèn)速度要求不高,使用IO操作能很好地滿足設(shè)計(jì)要求。讀設(shè)備函數(shù)PLX9054_read將驅(qū)動(dòng)DMA數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)實(shí)時(shí)讀取到用戶空間緩沖區(qū)內(nèi),完成數(shù)據(jù)從設(shè)備到用戶的讀取操作。

          2.1.3 中斷處理及DMA傳輸

          中斷處理及DMA傳輸是驅(qū)動(dòng)的核心部分,它的設(shè)計(jì)質(zhì)量直接影響到雷達(dá)數(shù)據(jù)能否正確、實(shí)時(shí)地從采集系統(tǒng)板傳送到設(shè)備驅(qū)動(dòng)緩沖區(qū),并實(shí)時(shí)被用戶獲取。中斷處理工作流程如圖2所示。

          2.jpg

          由于DMA數(shù)據(jù)緩沖區(qū)遠(yuǎn)大于每次DMA數(shù)據(jù)傳輸大小,這對(duì)于雷達(dá)數(shù)據(jù)采集中因用戶讀取數(shù)據(jù)延遲而導(dǎo)致的緩沖區(qū)溢出有較好的抑制作用,而相對(duì)于現(xiàn)有計(jì)算機(jī)平臺(tái),2 MB內(nèi)存容量已足夠。DMA數(shù)據(jù)緩沖區(qū)設(shè)計(jì)為循環(huán)緩沖區(qū),使用讀、寫指針維護(hù),在中斷處理中更新其寫指針,在PLX9054_read中更新其讀指針,采用溢出則覆蓋的機(jī)制,既方便管理,節(jié)省資源,同時(shí)又可對(duì)溢出進(jìn)行計(jì)數(shù),很方便進(jìn)行實(shí)時(shí)性能的測(cè)試。

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


          評(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); })();