www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于VxWorks的PCI總線多功能數(shù)據(jù)采集卡驅動開發(fā)

摘要:VxWorks是WindRiver(風河)公司開發(fā)的嵌入式實時操作系統(tǒng)(RTOS),由于它的高實時性,所以廣泛地應用于軍事、工業(yè)控制、通信等領域;分析了Vxworks下PCI總線多功能數(shù)據(jù)采集卡的實現(xiàn)方法;以ADLINK的PCI7396數(shù)據(jù)采集卡為例,介紹PCI總線設備的配置空間,包括它的結構及訪問方法,重點介紹PCI總線設備在VxWorks下驅動程序的開發(fā)步驟及編程要點,并對開發(fā)過程中的關鍵部分給予代碼說明;在某綜合控制系統(tǒng)中,開發(fā)的驅動程序運行穩(wěn)定、可靠。
關鍵詞:VxWorks;PCI;數(shù)據(jù)采集卡;驅動

    VxWorks是一種高性能的嵌入式實時操作系統(tǒng)(RTOS),它由WindRiver公司開發(fā),具有小巧的內核,可根據(jù)需要進行裁減;它還獲得廣泛的硬件支持,像X86系列的CPU,Motorola 68K系列的CPU,Motorola/IBM Power PC等等;它還具有很高的可靠性和實時性,像美國登陸的火星探測器使用的就是VxWorks操作系統(tǒng);它還有其它的很多優(yōu)點,因此被廣泛地使用在通信、軍事、航空、控制等高精尖技術以及實時性要求極高的領域中。
    PCI總線由于其即插即用、獨立于微處理器、通用性好、具有很高的兼容性等等優(yōu)良的特點,使得它成為運用最廣泛的局部總線標準,而且具有很大的發(fā)展?jié)摿?。使它成為具有很好發(fā)展?jié)摿Φ木植靠偩€標。多功能數(shù)據(jù)采集卡在工業(yè)控制中有著廣泛的運用,它是信號和嵌入式處理器的有效交互的工業(yè)控制系統(tǒng)中的重要環(huán)節(jié),特別是它的中斷功能能提供很有效的實時性。在Vxworks下,一個重要的問題就是如何開發(fā)出高效率的數(shù)據(jù)采集卡驅動,只有驅動穩(wěn)定了,才能使系統(tǒng)高效地運轉。文中結合Adlink公司的7396芯片,探討在VxWorks下基于PENTIUM CPU的PCI多功能數(shù)據(jù)采集卡的驅動開發(fā)。

1 VxWorks下的設備驅動程序
1.1 VxWorks下的I/O系統(tǒng)
    I/O系統(tǒng)全稱為(Input/Output)輸入輸出系統(tǒng),在VxWorks系統(tǒng)中,I/O系統(tǒng)向用戶屏蔽了硬件層,為用戶提供了一個統(tǒng)一的標準接口,使得應用層的用戶只要了解I/O系統(tǒng)的標準接口使用方法,就可以正確地操作外部設備。I/O系統(tǒng)為設備提供了7個標準的I/O接口函數(shù):creat(...)、delete(...)、open(...)、close(...)、read(...)、write(...)、ioctl(...)。驅動程序設計者只要根據(jù)實際項目、工程的需要設計完成相應功能的接口函數(shù),然后在使用時I/O系統(tǒng)就可以把應用程序的I/O請求轉發(fā)給相應的設計好的設備驅動程序進行處理。在VxWorks系統(tǒng)中I/O系統(tǒng)是通過維護文件描述符表、設備描述符表和驅動程序列表這3張表格來實現(xiàn)對驅動程序的管理的。
1.2 VxWorks設備驅動程序的分類
    在Vxworks系統(tǒng)中,輸入/輸出設備從宏觀上分為3種類型:字符設備、塊設備和網(wǎng)絡設備。依據(jù)設備的類型,VxWorks下設備驅動程序的管理也被劃分成3種模塊:字符設備驅動程序模塊、塊設備驅動程序模塊、網(wǎng)絡設備驅動程序模塊。從架構上說,字符設備驅動程序的實現(xiàn)相對來說是最簡單的,它向上只是與I/O系統(tǒng)接口,所以只需要提供內個接口就可以了。塊設備驅動程序相對于字符設備來說相對的復雜,它還要與中間的文件系統(tǒng)相連,為文件系統(tǒng)提供服務,塊設備的最大特點就是以“塊”為單位進行操作,在讀取其中的數(shù)據(jù)時,必須將所在塊的數(shù)據(jù)完全讀出。網(wǎng)絡設備則提供了另外的接口,相對于字符設備和塊設備來說,處于相對底層,這是由網(wǎng)絡協(xié)議的復雜性決定的。為了更好地支持網(wǎng)絡設備,VxWorks在網(wǎng)絡協(xié)議層和網(wǎng)絡設備驅動程序之間增加了MUX接口。
1.3 驅動程序和I/O系統(tǒng)
    驅動程序的結構包括3個部分:初始化部分,函數(shù)功能部分和中斷服務程序ISR。初始化部分主要是初始化硬件,分配硬件所需要的系統(tǒng)資源。函數(shù)功能主要是根據(jù)實際的需要,完成系統(tǒng)指定的功能。中斷服務程序主要是響應外部中斷,使系統(tǒng)能夠快速地對外部交互作出反應,由于中斷服務程序要求盡可能地反應快,所以中斷服務程序應該盡可能簡單。


    VxWorks中設備驅動程序與I/O系統(tǒng)的關系非常簡單。對于塊設備來說,應用程序通過I/O系統(tǒng)訪問文件系統(tǒng),而后由文件系統(tǒng)調用驅動程序訪問設備。而其它的非塊設備則是I/O系統(tǒng)直接調用驅動程序訪問設備。圖1顯示了應用程序、I/O系統(tǒng)和設備驅動程序之間的關系。
[!--empirenews.page--]
2 多功能數(shù)據(jù)采集卡7396簡介
    PCI-7396是專門為工業(yè)應用而設計的96位并行數(shù)字輸入/輸出(DIO)卡。PCI-7396是模擬4個8255可編程外圍接口(PPI)芯片。每個PPI提供3個8位可同步訪問的DIO端口。總共有12個可獨立配置為輸入或輸出的端口。
    PCI-7396產(chǎn)品具有通過外部觸發(fā)來鎖定數(shù)字輸入數(shù)據(jù)的特點,同時提供狀態(tài)改變(COS)中斷,這意味著當任何數(shù)字輸入狀態(tài)改變的時候,中斷就會發(fā)生。用戶可以通過用跳線設置上拉/下拉電阻輕松地以用戶自定義狀態(tài)(高或低)來設定PCI-7396數(shù)字I/O上電狀態(tài)。
    7396有3種類型的寄存器:PCI配置寄存器,它是要實現(xiàn)板卡的功能所要訪問和操作的寄存器;本地配置寄存器,其是它就是操作9050所要訪問的寄存器:還有一個是PCI-6308寄存器。

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



4 數(shù)據(jù)采集卡設備驅動的實現(xiàn)
    Adlink公司的7396數(shù)據(jù)采集卡是PCI設備,PCI設備驅動程序屬于VxWorks體系結構中的I/O系統(tǒng)部分,它往上為應用程序提供API接口,往下通過BSP訪問PCI設備?;赩xWorks的PCi設備驅動程序開發(fā)流程如圖3所示。分為4個步驟:①創(chuàng)建設備;②根據(jù)PCI設備的配置參數(shù),對PCI設備編寫功能函數(shù)程序;③編寫測試程序進行功能測試;④驅動程序工作正常可靠,即可發(fā)布驅動程序,將其加載入VxWorks操作系統(tǒng)內核,完成驅動程序的開發(fā)。

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

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

    由于使用的是PENTIUM系列的CPU來進行板卡驅動的開發(fā),所以在邊接中斷向量的時候,中斷號要加上0x20。

    特別要注意操作9050的控制寄存器的偏移為0x4c的地方的操作,它是要實現(xiàn)中斷必須要進行的操作,沒有操作正確的話,中斷是不能夠正確運行的,而且9050的這個寄存器的各個位和9052還是不一樣的,雖然都是PLX公司的產(chǎn)品。
    讀取完上面的I/O基地址和相應的中斷后,就可以操作I/O空間了,這要根據(jù)相應板卡說明書上的基地址偏移來操作,而且還要注意設置端口是輸入端口還是輸出端口。中斷服務程序在VxWorks下也有嚴格的要求,要注意。

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

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

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉