日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]VxWorks下數(shù)據(jù)采集卡驅(qū)動程序開發(fā)

1 引 言

隨著嵌入式技術的發(fā)展,數(shù)據(jù)采集廣泛應用于現(xiàn)場設備中。本文根據(jù)實際項目需求,開發(fā)了數(shù)據(jù)采集卡在VxWorks操作系統(tǒng)下的驅(qū)動程序,以方便應用程序開發(fā)。

本文采用的數(shù)據(jù)采集卡為盛博協(xié)同公司基于PC/104總線的ADT700采集卡,他通過總線與PC/104嵌入式系統(tǒng)構(gòu)成一個高性能的數(shù)據(jù)采集與控制系統(tǒng)。ADT700具有如下特點:

模擬輸入 16單端/8差分輸入;12位分辨率;100 kHz最大A/D采樣率;0~+10 V,-5~+5 V,-10~+10 V雙極性或單極性輸入量程;1,2,4,8倍可編程增益;DMA實現(xiàn)數(shù)據(jù)的高速傳輸。

模擬輸出 4通道輸出;-5~+5 V,-10~+10 V,0~5 V,0~10 V量程可選;通道單獨置數(shù)或4通道同時置數(shù)。

數(shù)字量I/O 可編程外圍接口,24通道TTL/CMOS兼容;I/O接口上拉或下拉限流電阻。

定時/計數(shù)器 6個16位、10 MHz(最大)定時/計

2 VxWorks及其字符設備驅(qū)動

VxWorks是一個基于搶占式的實時操作系統(tǒng),他以其高度的可靠性、優(yōu)秀的實時性、靈活的可裁性廣泛應用到許多行業(yè)中。在VxWorks中,I/O系統(tǒng)提供了與設備無關的用戶接口,應用程序可以通過標準的接口函數(shù)如:create(),remove(),open(),close(),read(),write(),ioctl()等來訪問設備驅(qū)動程序,而不用關心驅(qū)動程序是如何實現(xiàn)的。ADT700屬于字符型設備,他的驅(qū)動程序需要支持以上接口函數(shù)。

下面以字符設備中open()操作為例,說明字符設備驅(qū)動程序結(jié)構(gòu)。

如圖1所示,當應用程序調(diào)用fd=open("/xx0",ORDONLY,0)時,I/O系統(tǒng)根據(jù)文件名"/xx0"在設備列表中查找設備(設備是以文件形式存在的,文件名即設備名)(如①所示);查找到相應設備后根據(jù)驅(qū)動號定位到驅(qū)動表中(如②所示);I/O系統(tǒng)在文件描述表中預留一個表項fd=3(如③所示);然后I/O系統(tǒng)調(diào)用驅(qū)動程序中的xxoOpen()函數(shù),返回需要保留的值,即設備描述指針(如④所示);I/O系統(tǒng)將驅(qū)動號和驅(qū)動返回值填到文件描述符表中(如⑤所示);最后,I/O系統(tǒng)返回新opeh()的文件在文件描述符表中的索引,應用程序得到文件描述符fd=3(如⑥所示)。用戶可以通過操作文件來訪問I/O設備。

3驅(qū)動實現(xiàn)

3.1 功能分類

ADT700具有A/D,D/A轉(zhuǎn)換,數(shù)字I/O,定時/計數(shù)等功能,對其進行分析,可分為3類:

(1)A/D轉(zhuǎn)換為只讀,而D/A轉(zhuǎn)換為只寫;
(2)數(shù)字I/O既可讀又可寫;
(3)定時/計數(shù)器基本無需讀寫,只設置即可。

根據(jù)以上功能,得出需要實現(xiàn)3個驅(qū)動,分別為:

(1)adtDrv驅(qū)動,用于讀入A/D轉(zhuǎn)換后的數(shù)據(jù),寫出D/A轉(zhuǎn)換的數(shù)據(jù),設備描述符為"/adt";
(2)ppiDrv驅(qū)動,用于讀入或?qū)懗鰯?shù)字I/O的數(shù)字,設備描述符為"/ppi";
(3)pitDrv驅(qū)動,用于設置定時/計數(shù)器,設備描述符為"/pit"。

3.2基本流程

(1)安裝驅(qū)動

I/O系統(tǒng)的功能是將用戶的I/O請求轉(zhuǎn)換成對相應驅(qū)動程序具體操作函數(shù)的調(diào)用,他通過維護一個包括所有驅(qū)動程序操作函數(shù)的地址表來實現(xiàn)的。通過調(diào)用ios-DrvInstall()可以動態(tài)安裝驅(qū)動程序,該函數(shù)的參數(shù)就是7種基本I/O操作函數(shù)指針。iosDrvInstall()函數(shù)將這些地址寫入驅(qū)動表中的一塊空閑存儲區(qū)中,并返回這塊存儲區(qū)的編號,編號即驅(qū)動程序號,可被與驅(qū)動程序相關聯(lián)的設備使用。iosDrvInstall()的原型是:

int iosDrvtnstall(FUNCPTR pCreate,F(xiàn)UNCPTRpDelete, FUNCPTR pOpen, FUNCPTR pClose,F(xiàn)UNCPTR pRead,F(xiàn)UNCPTR pWrite,F(xiàn)UNCPTR pI-octl);

當調(diào)用iosDrvInstall()注冊I/O函數(shù)成功后,在shell下用iosDrvShow命令可以觀察驅(qū)動表中ADT700的驅(qū)動入口。

(2)創(chuàng)建設備

創(chuàng)建設備過程即是調(diào)用設備創(chuàng)建函數(shù)iosDevAdd()將此設備加入到I/O系統(tǒng)的設備列表中。iosDevAdd()的原型為:

STATUS iosDevAdd(DEV_HDR*pDevHdr,char*name,int drvnum);

其中:DEV_HDR是一個指向該設備的描述符指針;而DEV_HDR結(jié)構(gòu)中的第一項則指向下一個設備的描述符指針。

設備創(chuàng)建成功后,在shell下用devs命令可以觀察設備列表中ADT700的設備描述符。

以ADT700中adtDrv驅(qū)動為例,以上兩步的完成過程如圖2所示。

(3)實現(xiàn)I/O函數(shù)

安裝驅(qū)動和創(chuàng)建設備完成后,就需要實現(xiàn)I/O函數(shù),即填充驅(qū)動表中的函數(shù)了。對于字符型設備而言,打開設備操作與創(chuàng)建設備操作通常使用相同的函數(shù),底層驅(qū)動中都用xxOpen()完成;而設備驅(qū)動一旦安裝,就無需刪除,remove()無效,因此在底層驅(qū)動中xxRemove()為空。下面給出了ppiDrv驅(qū)動中ppiRead()的實現(xiàn)模板。

完成以上3步,就基本實現(xiàn)了驅(qū)動程序,此時,在應用程序中可以用標準接口函數(shù)進行操作了。以打開ADT700中定時/計數(shù)器(驅(qū)動為pitDrv)為例。

此時,在shell用iosFdShow命令可以觀察到新創(chuàng)建的文件描述符"/pit/timer"。

4 結(jié) 語

本文以數(shù)據(jù)采集卡驅(qū)動程序為例,詳細介紹了Vx-Works操作系統(tǒng)下字符設備驅(qū)動程序的開發(fā)過程。本驅(qū)動程序封裝了ADT700幾乎所有功能,支持標準的I/O系統(tǒng)接口函數(shù)。用戶可將ADT700當作文件,只需定義文件名建立文件描述符,而無需關心底層實現(xiàn),即可完成對他的操作,從而縮短了應用程序開發(fā)時間,提高了效率。

本站聲明: 本文章由作者或相關機構(gòu)授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

摘 要:從硬件與軟件方面介紹了基于PXI技術的1553B總線通訊模塊的設計,并對PXI總線接口設計、驅(qū)動程序的開發(fā)、 SDRAM存儲器的控制和1553B總線通信協(xié)議實現(xiàn)等關鍵技術進行了詳細的闡述,為航空領域測控系統(tǒng)開發(fā)P...

關鍵字: PXI技術 驅(qū)動程序 SDRAM存儲器 1553B總線

PnP全稱Plug-and-Play,譯文為即插即用。PnP的作用是自動配置低層計算機中的板卡和其他設備,然后告訴對應設備都做了什么。PnP的任務是把物理設備和軟件設備驅(qū)動程序相配合,并操作設備,在每個設備和它的驅(qū)動程序...

關鍵字: PnP 驅(qū)動程序 操作設備

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄kill命令和信號使用kill...

關鍵字: 信號 應用程序 驅(qū)動程序

驅(qū)動程序本質(zhì)上是軟件代碼,主要作用是計算機系統(tǒng)與硬件設備之間完成數(shù)據(jù)傳送的功能,只有借助驅(qū)動程序,兩者才能通信并完成特定的功能。

關鍵字: 驅(qū)動程序 硬件設備 UNIX

驅(qū)動程序(Device Driver)全稱為“設備驅(qū)動程序”,是一種可以使計算機和設備通信的特殊程序,可以說相當于硬件的接口,操作系統(tǒng)只能通過這個接口,才能控制硬件設備的工作,假如某設備的驅(qū)動程序未能正確安裝,便不能正常...

關鍵字: 驅(qū)動程序 聲卡 設備

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄API函數(shù)編寫驅(qū)動程序編寫應用...

關鍵字: 編寫 驅(qū)動程序 字符設備驅(qū)動

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄示例程序目標編寫驅(qū)動程序編寫應...

關鍵字: GPIO 編寫 驅(qū)動程序

打印機 在我們的辦公區(qū)域?qū)嵱眯允欠浅姷?,不僅可以提高辦公的效率,而且還能節(jié)省用戶時間,是一款非常不錯的辦公小助手。長時間使用, 打印機驅(qū)動程序無法使用 ,怎么回事呢?用戶一定要做出詳細了解,是否需要重新安裝,下面我們一...

關鍵字: 驅(qū)動程序 打印機驅(qū)動

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄混亂的API函數(shù)舊的API函數(shù)...

關鍵字: 驅(qū)動程序 字符設備驅(qū)動

作?者:道哥,10年嵌入式開發(fā)老兵,專注于:C/C、嵌入式、Linux。關注下方公眾號,回復【書籍】,獲取Linux、嵌入式領域經(jīng)典書籍;回復【PDF】,獲取所有原創(chuàng)文章(PDF格式)。目錄學習的困惑實踐環(huán)境編譯進內(nèi)核編...

關鍵字: 內(nèi)核 編譯 驅(qū)動程序

嵌入式軟件

15715 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉