亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2012-01-29 07:19:48鄒程帥
        電子設(shè)計(jì)工程 2012年12期
        關(guān)鍵詞:采集卡驅(qū)動(dòng)程序字節(jié)

        張 原,鄒程帥,張 帥,宋 鵬

        (西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710129)

        VxWorks是一種高性能的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),它由WindRiver公司開發(fā),具有小巧的內(nèi)核,可根據(jù)需要進(jìn)行裁減;它還獲得廣泛的硬件支持,像X86系列的CPU,Motorola 68K系列的CPU,Motorola/IBM Power PC等等;它還具有很高的可靠性和實(shí)時(shí)性,像美國(guó)登陸的火星探測(cè)器使用的就是VxWorks操作系統(tǒng);它還有其它的很多優(yōu)點(diǎn),因此被廣泛地使用在通信、軍事、航空、控制等高精尖技術(shù)以及實(shí)時(shí)性要求極高的領(lǐng)域中。

        PCI總線由于其即插即用、獨(dú)立于微處理器、通用性好、具有很高的兼容性等等優(yōu)良的特點(diǎn),使得它成為運(yùn)用最廣泛的局部總線標(biāo)準(zhǔn),而且具有很大的發(fā)展?jié)摿ΑJ顾蔀榫哂泻芎冒l(fā)展?jié)摿Φ木植靠偩€標(biāo)。多功能數(shù)據(jù)采集卡在工業(yè)控制中有著廣泛的運(yùn)用,它是信號(hào)和嵌入式處理器的有效交互的工業(yè)控制系統(tǒng)中的重要環(huán)節(jié),特別是它的中斷功能能提供很有效的實(shí)時(shí)性。在VxWorks下,一個(gè)重要的問題就是如何開發(fā)出高效率的數(shù)據(jù)采集卡驅(qū)動(dòng),只有驅(qū)動(dòng)穩(wěn)定了,才能使系統(tǒng)高效地運(yùn)轉(zhuǎn)。文中結(jié)合Adlink公司的7396芯片,探討在VxWorks下基于PENTIUM CPU的PCI多功能數(shù)據(jù)采集卡的驅(qū)動(dòng)開發(fā)。

        1 VxWorks下的設(shè)備驅(qū)動(dòng)程序

        1.1 VxWorks下的I/O系統(tǒng)

        I/O系統(tǒng)全稱為(Input/Output)輸入輸出系統(tǒng),在VxWorks系統(tǒng)中,I/O系統(tǒng)向用戶屏蔽了硬件層,為用戶提供了一個(gè)統(tǒng)一的標(biāo)準(zhǔn)接口,使得應(yīng)用層的用戶只要了解I/O系統(tǒng)的標(biāo)準(zhǔn)接口使用方法,就可以正確地操作外部設(shè)備[1]。I/O系統(tǒng)為設(shè)備提供了7個(gè)標(biāo)準(zhǔn)的I/O接口函數(shù):creat(...)、delete(...)、open(...)、close(...)、read(...)、write(...)、ioctl(...)。驅(qū)動(dòng)程序設(shè)計(jì)者只要根據(jù)實(shí)際項(xiàng)目、工程的需要設(shè)計(jì)完成相應(yīng)功能的接口函數(shù),然后在使用時(shí)I/O系統(tǒng)就可以把應(yīng)用程序的I/O請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的設(shè)計(jì)好的設(shè)備驅(qū)動(dòng)程序進(jìn)行處理。在VxWorks系統(tǒng)中I/O系統(tǒng)是通過維護(hù)文件描述符表、設(shè)備描述符表和驅(qū)動(dòng)程序列表這3張表格來實(shí)現(xiàn)對(duì)驅(qū)動(dòng)程序的管理的。

        1.2 VxWorks設(shè)備驅(qū)動(dòng)程序的分類

        在VxWorks系統(tǒng)中,輸入/輸出設(shè)備從宏觀上分為3種類型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。依據(jù)設(shè)備的類型,VxWorks下設(shè)備驅(qū)動(dòng)程序的管理也被劃分成3種模塊:字符設(shè)備驅(qū)動(dòng)程序模塊、塊設(shè)備驅(qū)動(dòng)程序模塊、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序模塊[2]。從架構(gòu)上說,字符設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)相對(duì)來說是最簡(jiǎn)單的,它向上只是與I/O系統(tǒng)接口,所以只需要提供內(nèi)個(gè)接口就可以了。塊設(shè)備驅(qū)動(dòng)程序相對(duì)于字符設(shè)備來說相對(duì)的復(fù)雜,它還要與中間的文件系統(tǒng)相連,為文件系統(tǒng)提供服務(wù),塊設(shè)備的最大特點(diǎn)就是以“塊”為單位進(jìn)行操作,在讀取其中的數(shù)據(jù)時(shí),必須將所在塊的數(shù)據(jù)完全讀出。網(wǎng)絡(luò)設(shè)備則提供了另外的接口,相對(duì)于字符設(shè)備和塊設(shè)備來說,處于相對(duì)底層,這是由網(wǎng)絡(luò)協(xié)議的復(fù)雜性決定的。為了更好地支持網(wǎng)絡(luò)設(shè)備,VxWorks在網(wǎng)絡(luò)協(xié)議層和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序之間增加了 MUX接口[3]。

        1.3 驅(qū)動(dòng)程序和I/O系統(tǒng)

        驅(qū)動(dòng)程序的結(jié)構(gòu)包括3個(gè)部分:初始化部分,函數(shù)功能部分和中斷服務(wù)程序ISR。初始化部分主要是初始化硬件,分配硬件所需要的系統(tǒng)資源。函數(shù)功能主要是根據(jù)實(shí)際的需要,完成系統(tǒng)指定的功能。中斷服務(wù)程序主要是響應(yīng)外部中斷,使系統(tǒng)能夠快速地對(duì)外部交互作出反應(yīng),由于中斷服務(wù)程序要求盡可能地反應(yīng)快,所以中斷服務(wù)程序應(yīng)該盡可能簡(jiǎn)單。

        VxWorks中設(shè)備驅(qū)動(dòng)程序與I/O系統(tǒng)的關(guān)系非常簡(jiǎn)單。對(duì)于塊設(shè)備來說,應(yīng)用程序通過I/O系統(tǒng)訪問文件系統(tǒng),而后由文件系統(tǒng)調(diào)用驅(qū)動(dòng)程序訪問設(shè)備。而其它的非塊設(shè)備則是I/O系統(tǒng)直接調(diào)用驅(qū)動(dòng)程序訪問設(shè)備。圖1顯示了應(yīng)用程序、I/O系統(tǒng)和設(shè)備驅(qū)動(dòng)程序之間的關(guān)系。

        圖1 應(yīng)用程序、I/O系統(tǒng)和設(shè)備驅(qū)動(dòng)程序之間關(guān)系Fig.1 Relationship of Application,the I/O systems and device drivers

        2 多功能數(shù)據(jù)采集卡7396簡(jiǎn)介

        PCI-7396是專門為工業(yè)應(yīng)用而設(shè)計(jì)的96位并行數(shù)字輸入/輸出(DIO)卡。PCI-7396是模擬4個(gè)8255可編程外圍 接口(PPI)芯片。每個(gè)PPI提供3個(gè)8位可同步訪問的DIO端口??偣灿?2個(gè)可獨(dú)立配置為輸入或輸出的端口。

        PCI-7396產(chǎn)品具有通過外部觸發(fā)來鎖定數(shù)字輸入數(shù)據(jù)的特點(diǎn),同時(shí)提供狀態(tài)改變(COS)中斷,這意味著當(dāng) 任何數(shù)字輸入狀態(tài)改變的時(shí)候,中斷就會(huì)發(fā)生。用戶可以通過用跳線設(shè)置上拉/下拉電阻輕松地以用戶自定義 狀態(tài)(高或低)來設(shè)定PCI-7396數(shù)字I/O上電狀態(tài)。

        7396有3種類型的寄存器:PCI配置寄存器,它是要實(shí)現(xiàn)板卡的功能所要訪問和操作的寄存器;本地配置寄存器,其是它就是操作9050所要訪問的寄存器;還有一個(gè)是PCI-6308寄存器。

        3 PCI配置空間

        PCI(Peripheral Component Interconnect),外部 設(shè)備互聯(lián)標(biāo)準(zhǔn),是由Intel公司提出的一種局部總線標(biāo)準(zhǔn)。每個(gè)PCI設(shè)備有3種物理空間:配置空間、存儲(chǔ)器空間和I/O空間。配置空間是長(zhǎng)度256字節(jié)的一段連續(xù)空間(16個(gè)32位寄存器)其中前64個(gè)字節(jié)為頭標(biāo),其余192字節(jié)為設(shè)備相關(guān)信息。在64字節(jié)的頭標(biāo)中,前16字節(jié)的定義是確定的,后48字節(jié)的具體含義因設(shè)備而異。配置空間頭標(biāo)區(qū)如圖2所示。配置空間中的一個(gè)重要部分是基地址寄存器(BaseAddresss Register),它的內(nèi)容是 PCI設(shè)備的地址空間映射到系統(tǒng)地址空間的起始物理地址。其中,bit0=1表示IO空間映射,bit0=0表示存儲(chǔ)器空間映射。所有PCI設(shè)備必須實(shí)現(xiàn)存儲(chǔ)器空間映射。通過向BAR寫全1即可確定所需地址空間的大小[4]。在VxWorks下要訪問一個(gè)PCI設(shè)備,只需要知道該設(shè)備的廠商號(hào)和設(shè)備號(hào)。

        圖2 PCI配置頭空間Fig.2 PCI configuration header space

        4 數(shù)據(jù)采集卡設(shè)備驅(qū)動(dòng)的實(shí)現(xiàn)

        Adlink公司的7396數(shù)據(jù)采集卡是PCI設(shè)備,PCI設(shè)備驅(qū)動(dòng)程序?qū)儆赩xWorks體系結(jié)構(gòu)中的I/O系統(tǒng)部分,它往上為應(yīng)用程序提供API接口,往下通過BSP訪問PCI設(shè)備[5]?;赩xWorks的PCi設(shè)備驅(qū)動(dòng)程序開發(fā)流程如圖3所示。分為4個(gè)步驟:①創(chuàng)建設(shè)備;②根據(jù)PCI設(shè)備的配置參數(shù),對(duì)PCI設(shè)備編寫功能函數(shù)程序;③編寫測(cè)試程序進(jìn)行功能測(cè)試;④驅(qū)動(dòng)程序工作正??煽浚纯砂l(fā)布驅(qū)動(dòng)程序,將其加載入VxWorks操作系統(tǒng)內(nèi)核,完成驅(qū)動(dòng)程序的開發(fā)[6]。

        圖3 開發(fā)流程Fig.3 Development process

        在前面的一節(jié)中提到過,要訪問一個(gè)PCI設(shè)備,首先要知道它的廠商號(hào)和設(shè)備號(hào),在實(shí)際工作中,可以通過WinDriver這個(gè)在windows平臺(tái)下運(yùn)行的編寫驅(qū)動(dòng)的軟件獲得,這樣比較方便和直觀,通過它,得到7396的廠商號(hào)(Dev 7396_VENDOR_ID)為 0x144a,設(shè)備號(hào)(Dev7396_DEVICE_ID)為0x7396。知道廠商號(hào)和設(shè)備號(hào)后,就可以利用VxWorks提供的函數(shù)pciFindDevice()獲得設(shè)備的總線號(hào)、設(shè)備編號(hào)和功能號(hào)。然后調(diào)用 pciConfigInLong()獲得多功能數(shù)據(jù)采集卡設(shè)備的配置空間、內(nèi)存空間、I/O空間的地址;pciConfigInByte得到設(shè)備中斷號(hào)。7396設(shè)備沒有要訪問的內(nèi)存空間,所以沒有涉及到內(nèi)存的映射和操作。主要的實(shí)現(xiàn)代碼如下所示:

        在讀取設(shè)備的基地址時(shí),要特別注意結(jié)合設(shè)備相關(guān)的說明書進(jìn)行,在前面的章節(jié)中提到過,7396設(shè)備包含3個(gè)寄存器空間(詳見2多功能數(shù)據(jù)采集卡7396簡(jiǎn)介),所以讀出來的基地址空間有可能是3個(gè)里面的一個(gè)。

        由于使用的是PENTIUM系列的CPU來進(jìn)行板卡驅(qū)動(dòng)的開發(fā),所以在邊接中斷向量的時(shí)候,中斷號(hào)要加上0x20。

        特別要注意操作9050的控制寄存器的偏移為0x4c的地方的操作,它是要實(shí)現(xiàn)中斷必須要進(jìn)行的操作,沒有操作正確的話,中斷是不能夠正確運(yùn)行的,而且9050的這個(gè)寄存器的各個(gè)位和9052還是不一樣的,雖然都是PLX公司的產(chǎn)品。

        讀取完上面的I/O基地址和相應(yīng)的中斷后,就可以操作I/O空間了,這要根據(jù)相應(yīng)板卡說明書上的基地址偏移來操作,而且還要注意設(shè)置端口是輸入端口還是輸出端口。中斷服務(wù)程序在VxWorks下也有嚴(yán)格的要求,要注意。

        5 結(jié)束語(yǔ)

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

        [1]徐惠民.基于VxWorks的嵌入式系統(tǒng)及實(shí)驗(yàn)[M].北京:郵電大學(xué)出版社,2007.

        [2]周啟平,張楊.VxWorks下設(shè)備驅(qū)動(dòng)程序及BSP開發(fā)指南[M].北京:中國(guó)電力出版社,2004.

        [3]張楊,于銀濤.VxWorks內(nèi)核、設(shè)備驅(qū)動(dòng)與BSP開發(fā)詳解[M].北京:人民郵電出版社,2011.

        [4]張?jiān)ラ?,董?VxWorks的PCI配置方法和應(yīng)用實(shí)例[J].電子與電腦,2005(1):81-85.ZHANG Yu-rong,DONG Lei.VxWorks PCI configuration and application examples[J].Compotech China,2005(1):81-85.

        [5]歐峰,吳成富,段曉軍,等.基于VxWorks的多串口卡驅(qū)動(dòng)程序設(shè)計(jì)[J].測(cè)控技術(shù),2008,27(10):71-74.OU Feng,WU Cheng-fu,DUAN Xiao-jun,etal.Driver design for the multi-serial-port card based on VxWorks[J].Measurement and Control Technology,2008,27(10):71-74.

        [6]李寒冰,劉慶想,李相強(qiáng),等.基于VxWorks的PCI設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)[J].強(qiáng)激光與粒子束,2011,23(11):3091-3094.LI Han-bing,LIU Qing-xiang,LI Xiang-qiang,el al.Design of peripheral component interconnect device driver based on VxWorks[J].High Power Laser and Particle Beams,2011,23(11):3091-3094.

        猜你喜歡
        采集卡驅(qū)動(dòng)程序字節(jié)
        高精度AD采集卡性能測(cè)試及評(píng)價(jià)方法研究
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
        面向數(shù)控機(jī)床的多通道傳感數(shù)據(jù)采集卡設(shè)計(jì)
        簡(jiǎn)談MC7字節(jié)碼
        并行高速采樣在地震物理模擬采集中的應(yīng)用
        PCI-e高速數(shù)據(jù)采集卡的驅(qū)動(dòng)與上位機(jī)軟件設(shè)計(jì)
        電子器件(2015年5期)2015-12-29 08:43:12
        人類進(jìn)入“澤它時(shí)代”
        驅(qū)動(dòng)程序更新與推薦
        驅(qū)動(dòng)程序更新與推薦
        视频福利一区| 精品国产偷窥一区二区| 日本丰满熟妇videossex8k| 国产午夜成人久久无码一区二区| 成人精品综合免费视频| 99精品视频69V精品视频| 曰韩精品无码一区二区三区| 国产一区二区三区av香蕉| 熟女肥臀白浆一区二区| 天天躁夜夜躁狠狠是什么心态| 中文字幕一精品亚洲无线一区| 亚洲v欧美v国产v在线观看| 日韩高清毛片| 国产aⅴ天堂亚洲国产av| 手机在线中文字幕av| 无套无码孕妇啪啪| 国精品无码一区二区三区在线| 久久精品夜夜夜夜夜久久| 3亚洲日韩在线精品区| 漂亮人妻被强中文字幕乱码| 在线人妻va中文字幕| 黑人巨茎大战俄罗斯美女| 色婷婷五月综合亚洲小说| 亚洲两性视频一三区| 国产免费人成视频在线观看播放| 人妖一区二区三区在线| 国产精品人人做人人爽人人添| 成人美女黄网站色大免费的| 香蕉视频一级| 综合图区亚洲偷自拍熟女| 亚洲视频免费在线观看| 国产日产精品一区二区三区四区的特点 | 妺妺窝人体色www婷婷| 少妇白浆高潮无码免费区| 亚洲中文字幕久久精品蜜桃| 蜜桃一区二区三区在线视频 | 国内少妇人妻丰满av| 亚洲性码不卡视频在线| 完整版免费av片| 国产欧美亚洲精品a| 精品系列无码一区二区三区|