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

        ?

        基于VxBus的設(shè)備驅(qū)動開發(fā)

        2010-05-18 07:28:06趙永鋼韓國義
        關(guān)鍵詞:設(shè)備系統(tǒng)

        趙永鋼,韓國義

        (哈爾濱威克科技股份有限公司,黑龍江 哈爾濱150090)

        VxBus是風(fēng)河公司新的設(shè)備驅(qū)動程序架構(gòu),是VxWorks新增的特性,它是在Vx-Works6.2及以后版本被增加到VxWorks中的。在以前的版本中,驅(qū)動程序并沒有和工程配置集成到一起,如果要配置設(shè)備驅(qū)動,就要通過修改BSP目錄下的config.h和syslib.c文件來完成。而基于VxBus架構(gòu)模型的好處是允許驅(qū)動的集成和配置在Workbench工程中完成。這就意味著在Workbench環(huán)境下,每個驅(qū)動程序都能通過可視化環(huán)境進(jìn)行配置,都能夠按要求添加或刪除設(shè)備。本文結(jié)合基于PCI2040數(shù)據(jù)采集卡驅(qū)動的開發(fā)過程[1],分析了VxBus架構(gòu)下驅(qū)動的設(shè)計實現(xiàn)。

        1 VxBus簡介

        VxBus是指在VxWorks中用于支持設(shè)備驅(qū)動的特有的架構(gòu),這種架構(gòu)包含對minimal BSP的支持。它包括以下功能:①允許設(shè)備驅(qū)動匹配對應(yīng)設(shè)備;②提供驅(qū)動程序訪問硬件的機制;③軟件其他部分訪問設(shè)備功能;④在VxWorks系統(tǒng)中,實現(xiàn)設(shè)備驅(qū)動的模塊化。VxBus在總線控制器驅(qū)動程序服務(wù)的支持下,能在總線上發(fā)現(xiàn)設(shè)備,并執(zhí)行一些初始化工作,使驅(qū)動與硬件設(shè)備之間正常的通訊。

        圖1是VxBus在整個系統(tǒng)中的位置示意圖。從圖1中可以看到,VxBus起到了輔助總線的作用,提供了對總線控制驅(qū)動的支持。

        圖1 VxBus在整個系統(tǒng)中的位置示意圖

        在VxWorks6.2版本發(fā)布前,設(shè)備驅(qū)動并不能被集成到VxWorks工程配置當(dāng)中,為了添加或移出設(shè)備驅(qū)動,需要有豐富的BSP和驅(qū)動開發(fā)相關(guān)的知識[2]。并且在驅(qū)動被添加或移出時要去做一些管理VxWorks工程的額外的工作。作為VxWorks系統(tǒng)組件的一部分,VxBus消除了上面遇到的一些難題,各種驅(qū)動和支持組件的添加與刪除完全可以在Workbench工程中進(jìn)行,而不需要BSP和驅(qū)動相關(guān)的知識,也不會在添加、刪除驅(qū)動時增加管理VxWorks工程的額外工作。因此大大方便了BSP的開發(fā)。

        2 硬件介紹

        TI公司推出的PCI2040是一款用于實現(xiàn)PCI局部總線與DSP之間無縫鏈接的專用芯片。在VxWorks實時操作系統(tǒng)環(huán)境下實現(xiàn)主機與DSP的通訊,系統(tǒng)利用PCI2040實現(xiàn)TMS320VC5410與主機的通訊。由于PCI2040是TI的配套專用芯片,硬件級的連接比較簡單,將對應(yīng)的引腳連接即可。需要注意的是,未用的輸入信號線需要通過上拉電阻上拉至有效邏輯電平。TMS320VC5410的MCBSP0與TLC2548連接,實現(xiàn)8路12位A/D數(shù)據(jù)的采集。TMS320VC5410將采集到的數(shù)據(jù)通過PCI2040傳輸?shù)街鳈C上,數(shù)據(jù)在主機上得到進(jìn)一步的處理。硬件連接框圖如圖2所示。

        圖2 硬件連接框圖

        3 驅(qū)動開發(fā)

        基于VxBus架構(gòu)下PCI2040設(shè)備驅(qū)動的開發(fā)主要包括設(shè)備的初始化、設(shè)備控制以及設(shè)備驅(qū)動如何以組件形式添加到Workbench配置界面中。下面分步介紹它的實現(xiàn)。

        3.1 設(shè)備驅(qū)動初始化

        設(shè)備的初始化,包含在BSP的初始化過程中[3],主要分三個階段,如圖3所示。

        圖3 設(shè)備初始化流程圖

        3.1.1 內(nèi)核預(yù)初始化階段

        系統(tǒng)上電啟動,CPU在上電時跳轉(zhuǎn)到一個指定的地址 ,開始執(zhí)行指令,初始化內(nèi)存和 CPU,然后是VxWorks的初始化處理。

        在VxWorks內(nèi)核預(yù)初始化早期,BSP的 sysHwInit()函數(shù)被執(zhí)行[4],在這個函數(shù)中,設(shè)備驅(qū)動初始化工作第一步被執(zhí)行。sysHwInit()函數(shù)執(zhí)行一些早期的初始化,調(diào)用hardWareInterFaceInit()函數(shù),執(zhí)行初始化硬件內(nèi)存分配機制,這步允許在系統(tǒng)內(nèi)存池初始化之前,限制為設(shè)備驅(qū)動分配內(nèi)存,這個函數(shù)接著調(diào)用hardWareInter-FaceBusInit(),在 hardWareInterFaceBusInit()函數(shù)中完成所有設(shè)備驅(qū)動和模塊的注冊工作。PCI2040的注冊函數(shù)是 vxbPci2040Register()。vxbPci2040Register()通過數(shù)據(jù)結(jié)構(gòu),向系統(tǒng)注冊一些設(shè)備初始化函數(shù)。其中涉及到三個數(shù)據(jù)結(jié)構(gòu):

        在這個結(jié)構(gòu)中,包含了初始化階段要調(diào)用的函數(shù)。下面的初始化過程會用到這些函數(shù)。

        這個結(jié)構(gòu)提供了應(yīng)用軟件操作硬件的一些函數(shù)及方法。

        最后這個結(jié)構(gòu)在vxbPci2040Registe()中被使用。這個結(jié)構(gòu)包括幾個驅(qū)動的初始化入口,其中Pci2040Probe()是PCI2040采集卡的硬件探測函數(shù),該函數(shù)在VxBus初始化過程中檢測采集卡的數(shù)量,當(dāng)檢測到采集卡時,將采集卡與驅(qū)動結(jié)合,形成設(shè)備的一個實例,以便應(yīng)用程序使用。Pci204InstanceInit()函數(shù)在VxBus初始化的第一階段被調(diào)用,Pci204InstanceInit()函數(shù)只是簡單地確保設(shè)備的中斷被禁止。

        當(dāng)所有驅(qū)動在VxWorks注冊之后,hardWareInterFace-BusInit()和 hardWareInterFaceInit()函數(shù)返回,sysHwInit()完成非VxBus驅(qū)動的初始化并返回。sysHwInit()函數(shù)返回后,VxWorks內(nèi)核被初始化。

        3.1.2 內(nèi)核自檢

        在這個階段,內(nèi)核在 sysHwInit2()中執(zhí)行,BSP調(diào)用Pci2040InstanceInit2()函數(shù)[5]。在這個函數(shù)中,建立系統(tǒng)內(nèi)存到設(shè)備空間的映射。關(guān)鍵部分代碼如下:

        此時,完成內(nèi)核服務(wù)初始化,并可以被驅(qū)動訪問。但是,中間層的服務(wù)仍然無效。

        3.1.3 應(yīng)用程序初始化驅(qū)動部分

        在devInstanceInit2()函數(shù)最后,創(chuàng)建用戶的運行任務(wù),并完成設(shè)備驅(qū)動的初始化。在這個階段,Pci2040InstanceConnect()函數(shù)被調(diào)用,完成最后的初始化工作,在這個函數(shù)中,主要是建立中斷與中斷服務(wù)程序的連接。

        至此,設(shè)備驅(qū)動的初始化完成。

        3.2 驅(qū)動程序的配置

        采用VxBus驅(qū)動的一個主要優(yōu)點是:設(shè)備的驅(qū)動程序可以被看成VxWorks系統(tǒng)的一個組件,通過集成的Workbench開發(fā)環(huán)境來配置設(shè)備驅(qū)動。為了實現(xiàn)這一功能,開發(fā)的驅(qū)動需要增加一些額外的擴展文件。標(biāo)準(zhǔn)VxWorks設(shè)備驅(qū)動有一個最小的文件集,對于大多數(shù)Vx-Works設(shè)備驅(qū)動,最小的設(shè)備驅(qū)動集要求有6個單獨的文件[6]。PCI2040數(shù)據(jù)采集卡需要有以下文件:

        ·一個驅(qū)動源文件PCI2040.c,執(zhí)行驅(qū)動運行邏輯,包括PCI2040驅(qū)動的實現(xiàn)代碼。

        ·一個組件描述文件PCI2040.cdf,允許集成驅(qū)動到VxWorks開發(fā)工具Workbench當(dāng)中。

        ·一個PCI2040.dc文件,提供驅(qū)動注冊函數(shù)原型。

        ·一個PCI2040.dr文件,提供一個調(diào)用注冊函數(shù)的C語言代碼段。

        ·一個readme文件 ,提供版本信息。

        ·一個makefile文件,提供建立驅(qū)動的編譯規(guī)則。

        當(dāng)上述文件在workbench環(huán)境下進(jìn)行相應(yīng)的配置后,PCI2040的設(shè)備驅(qū)動就會以組件的形式出現(xiàn)在開發(fā)工程的Kernel Configuration選項中,可以方便地進(jìn)行PCI2040驅(qū)動配置。

        4 應(yīng)用程序與驅(qū)動的通信

        為了使設(shè)備和驅(qū)動能夠在VxWorks系統(tǒng)中使用,讓應(yīng)用程序、中間件、VxWorks內(nèi)核模塊訪問設(shè)備,執(zhí)行一些操作,最基本的方法是在VxWorks中采用VxBus方法來實現(xiàn)硬件設(shè)備的訪問。VxBus方法是在驅(qū)動中公開一個入口,使VxBus中API函數(shù)可以調(diào)用這些入口函數(shù)。在PCI2040初始化階段,Pci2040Methods結(jié)構(gòu)中注冊的函數(shù)就是在驅(qū)動中公開的函數(shù),用于對PCI2040的操作。

        例如,通過PCI2040完成對DSP數(shù)據(jù)寄存器的訪問

        struct vxbDriverControl ctrl;

        vxbDevMethodRun(DEVMETHOD_CALL(ReadHPID),&ctrl);

        vxbDevMethodRun()函數(shù)夠被用于調(diào)用一個指定的驅(qū)動方法,這個函數(shù)反復(fù)查找所有的實例,并檢查每一個,看是否有指定公開申明的方法,如果實例有指定的方法,vxbDevMethodRun()調(diào)用方法函數(shù)。

        為了避免重復(fù)遍歷在系統(tǒng)上的所有實例,可以用vxbDevMethodGet()函數(shù)找出驅(qū)動函數(shù)相對應(yīng)的驅(qū)動方法 ,然后通過下面代碼完成函數(shù)調(diào)用。

        在PCI2040的數(shù)據(jù)采集卡中,通常是DSP在采集完數(shù)據(jù)后,通過中斷通知主機,去讀取數(shù)據(jù)。下面是中斷服務(wù)相關(guān)代碼。

        采用基于VxBus架構(gòu)來開發(fā)PCI2040數(shù)據(jù)采集卡的驅(qū)動,通過擴展文件實現(xiàn)驅(qū)動的配置。與簡單的非VxBus驅(qū)動相比,顯然增加了工作量,然而對于基于多個BSP設(shè)備的復(fù)雜的驅(qū)動,VxBus驅(qū)動是優(yōu)于非VxBus驅(qū)動的。通過實際運用證明,所開發(fā)采集卡的驅(qū)動能夠穩(wěn)定運行,并且能很方便地將該驅(qū)動移植到其他的系統(tǒng)。

        [1]高超,郝燕玲,吳潤.VxWorks下網(wǎng)卡驅(qū)動程序的開發(fā)[J].微計算機信息.2004(9):18-20.

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

        [3]VxWorks Device Driver Developer′s Guide Wind River Systems,Inc.2007.1,6.6

        [4]VxWorks Device Driver Developer's Guide Volume 2,6.6.Wind River Systems,Inc.2007.2,6.6

        [5]VxWorks Device Driver Developer's Guide Volume 3,6.6.Wind River Systems,Inc.2007.3,6.6

        [6]BSP Developer's Guide,6.6 Wind River Systems,Inc.2007.

        猜你喜歡
        設(shè)備系統(tǒng)
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        500kV輸變電設(shè)備運行維護(hù)探討
        日本精品一区二区三区在线播放| 欧美大黑帍在线播放| 日产精品久久久久久久| 亚洲精品国产二区三区在线| 在线视频自拍视频激情| 久久99精品久久久久久琪琪| 无码国产精品一区二区高潮| 成人午夜免费无码视频在线观看| 在线观看日韩精品视频网站| 电驱蚊液可以插一晚上吗| 久久成人影院精品777| 久青草国产视频| 亚洲av精品一区二区三| 91精品国产福利在线观看麻豆| 成年女人色毛片| 久久国产精品国产精品日韩区| 亚洲视频不卡免费在线| 亚洲综合日韩精品一区二区| 国产亚洲欧美精品久久久| 美日韩毛片| 澳门精品一区二区三区| 老鲁夜夜老鲁| 欧美人与动牲猛交xxxxbbbb| 男人的天堂av网站一区二区| 日本一级三级在线观看| 国产麻豆剧果冻传媒一区| 香蕉久久久久久久av网站| 欧洲乱码伦视频免费| 美女脱了内裤洗澡视频| 人妻少妇偷人精品无码| 欧美成人久久久免费播放| 日本人妖一区二区三区| 美女露出粉嫩小奶头在视频18禁| 无套内射蜜桃小视频| 国产成人综合久久精品推荐免费| 国产91极品身材白皙| 久久精品国产精品青草| 伊人久久大香线蕉免费视频| 午夜在线观看一区二区三区四区| 国产情侣自拍一区视频| 18禁黄网站禁片免费观看|