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

        ?

        W indows CE下USB設(shè)備流驅(qū)動開發(fā)與設(shè)計(jì)

        2010-12-27 01:05:02慕曉蕾
        關(guān)鍵詞:嵌入式設(shè)備系統(tǒng)

        慕曉蕾

        (1.河北工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300130; 2.石家莊開發(fā)區(qū)冀科雙實(shí)科技有限公司,河北石家莊 050081)

        W indows CE下USB設(shè)備流驅(qū)動開發(fā)與設(shè)計(jì)

        慕曉蕾1,2

        (1.河北工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300130; 2.石家莊開發(fā)區(qū)冀科雙實(shí)科技有限公司,河北石家莊 050081)

        本文針對Window s CE下USB設(shè)備流驅(qū)動的廣泛應(yīng)用,介紹了該系統(tǒng)下流驅(qū)動的開發(fā)環(huán)境和驅(qū)動分類,并重點(diǎn)對USB設(shè)備流驅(qū)動進(jìn)行分析。

        Window s CE;USB;流接口驅(qū)動

        Window s CE是微軟公司開發(fā)的一種嵌入式操作系統(tǒng),它是一種模塊化的、易剪裁、定制移植方便的、實(shí)時(shí)搶占式多任務(wù)嵌入式操作系統(tǒng);它能支持多種硬件平臺(包括X86、ARM、M IPS、SuperH等)[1]。S3C2440是一款 Sam sung公司推出的基于ARM 920T內(nèi)核的16/32位RISC嵌入式微處理器,它專為手持設(shè)備和一般類型應(yīng)用而設(shè)計(jì),能夠滿足嵌入式系統(tǒng)中的高性能、低功耗、小體積的要求。ARM SYS2440是立宇泰公司提供的一個(gè)二次開發(fā)平臺,提供了完整的BSP源碼資源,設(shè)備驅(qū)動工程師可以在此基礎(chǔ)上進(jìn)一步進(jìn)行設(shè)備驅(qū)動的添加修改、內(nèi)核的重定制等。本文介紹通過ARM SYS2440平臺來開發(fā) Window s CE系統(tǒng)下USB流驅(qū)動的基本流程。

        1 Window s CE流驅(qū)動的開發(fā)環(huán)境

        搭建Window s CE流驅(qū)動所需要的開發(fā)環(huán)境需要以下幾個(gè)軟件:

        (1)Platfo rm Builder 5.0:此軟件是用來定制Window s CE操作系統(tǒng)的集成開發(fā)環(huán)境。開發(fā)人員可以利用這個(gè)集成開發(fā)環(huán)境完成Window s CE操作系統(tǒng)的定制、編譯和調(diào)試工作,而且也可以在這個(gè)集成開發(fā)環(huán)境中開發(fā)應(yīng)用軟件、驅(qū)動程序等。

        (2)Visual Studio 2008:此軟件用來編寫調(diào)試流驅(qū)動時(shí)所用到的應(yīng)用程序,雖然應(yīng)用程序也可以用 Platform Builder 5.0來編寫,但 Visual Studio 2008更通用,更方便。

        (3)ActiveSync 4.5:此軟件是用來同步 PC機(jī)與ARM SYS2440實(shí)驗(yàn)板的,可以在微軟中國官方網(wǎng)站下載。

        (4)DNW:串口調(diào)試工具,在上電時(shí)用來顯示B IOS發(fā)往串口的相關(guān)信息,可以輸入相關(guān)參數(shù)進(jìn)行設(shè)置。

        2 Window s CE驅(qū)動分類

        驅(qū)動程序介于設(shè)備和操作系統(tǒng)之間,用來為操作系統(tǒng)提供接口,達(dá)到實(shí)現(xiàn)操作不同硬件的目的。Window s CE系統(tǒng)驅(qū)動有很多種,下面介紹兩種不同的分類方式。

        2.1 按裝入的模塊不同分類

        (1)Device.dll加載的驅(qū)動:由Device.dll加載的驅(qū)動實(shí)現(xiàn)了流驅(qū)動的接口。以流驅(qū)動方式來實(shí)現(xiàn)的驅(qū)動沒有設(shè)備類型的限制。流設(shè)備驅(qū)動程序也被稱為可安裝的驅(qū)動程序(Installable D river),它為操作系統(tǒng)提供了流接口函數(shù),如XXX_ Init()、XXX_Open()、XXX_Read()、XXX_W rite ()、XXX_Close()等等。

        (2)GW ES.dll加載的驅(qū)動:由 GW ES加載的驅(qū)動主要是系統(tǒng)使用,稱為本機(jī)驅(qū)動。本機(jī)驅(qū)動提供給操作系統(tǒng)的不是標(biāo)準(zhǔn)的流接口,而是事先約定好的特定接口。不同的設(shè)備,接口也不一樣。WinCE中,常見的本機(jī)驅(qū)動有LCD顯示驅(qū)動、觸摸屏驅(qū)動、鼠標(biāo)和鍵盤驅(qū)動及打印機(jī)驅(qū)動等。本機(jī)設(shè)備驅(qū)動程序是由 GEWES統(tǒng)一管理和加載的。

        (3)FileSys.dll加載的驅(qū)動:文件系統(tǒng)驅(qū)動以dll的方式實(shí)現(xiàn),它預(yù)先實(shí)現(xiàn)了一組函數(shù)和IO控制的函數(shù)。這些函數(shù)被標(biāo)準(zhǔn)的文件系統(tǒng) API調(diào)用。

        2.2 按驅(qū)動實(shí)現(xiàn)的結(jié)構(gòu)分類

        (1)分層驅(qū)動:分層驅(qū)動由MDD(Model Device Driver)層和PDD(Platform Dependent D river)層兩層驅(qū)動組成。MDD層驅(qū)動主要為應(yīng)用層提供接口(DD I),而 PDD層驅(qū)動主要負(fù)責(zé)為MDD層提供接口(DDSI),具體結(jié)構(gòu)圖如圖1所示,PDD層驅(qū)動為MDD層驅(qū)動隱藏了具體的硬件實(shí)現(xiàn),方便代碼維護(hù)和移植。

        (2)單層驅(qū)動:單層驅(qū)動不僅直接為系統(tǒng)提供接口,也直接操作硬件。比分層驅(qū)動效率更高。

        圖1 分層驅(qū)動結(jié)構(gòu)圖

        3 Window s CE下U sb流驅(qū)動分析

        Window s CE平臺為了支持不同類型的外圍設(shè)備,提供了能定制接口的流接口驅(qū)動程序模型。由于流接口驅(qū)動程序是為連接到目標(biāo)平臺上的外圍設(shè)備而設(shè)計(jì)的,對大多數(shù)USB外圍設(shè)備來說,適用于采用流接口驅(qū)動程序模型來開發(fā)驅(qū)動程序[2]。

        3.1 Window s CE下USB文件夾的結(jié)構(gòu)

        在W INCE500/PUBL IC/COMMON/OA K/ DRIVERS/USB文件夾里有COMMON、INC、CLASS、HCD、USBD幾個(gè)文件夾,其中INC和COMMON里面有一個(gè)lock.c的程序,這個(gè)程序是將要被其他USB有關(guān)的驅(qū)動程序所使用的一個(gè)鎖,是一個(gè)類似臨界區(qū)的封裝體,可以保護(hù)多線程對同一內(nèi)存區(qū)域的讀寫訪問。HCD和USBD是底層驅(qū)動,HCD模塊給USBD模塊提供最底層的支持,USBD實(shí)現(xiàn)高層的接口函數(shù)[2]。

        而 W INCE500/PUBL IC/COMMON/DDK/ INC文件夾里提供的是與設(shè)備驅(qū)動有關(guān)的頭文件,與USB設(shè)備相關(guān)的文件有USB100.H、USB-TYPES.H、USBD I.H。USB100.H、USBTYPES.H里面關(guān)于 USB的定義是完全符合USB規(guī)范的,是不能隨便定義的;USBD I.H文件里的內(nèi)容就是USBD總線驅(qū)動程序向USB設(shè)備驅(qū)動程序提供的接口描述,開發(fā)USB設(shè)備驅(qū)動時(shí)必須要包含此頭文件才可以得到USBD接口的原型。

        3.2 USB設(shè)備驅(qū)動程序的入口點(diǎn)函數(shù)

        通過對Window s CE下USB文件夾結(jié)構(gòu)的分析可知,所有的USB設(shè)備驅(qū)動程序都必須在它們的DLL庫里面設(shè)置一定的入口點(diǎn)來與USBD模塊進(jìn)行適當(dāng)?shù)慕换ァ?/p>

        下面簡單介紹一下相關(guān)函數(shù)的作用:

        USBDeviceA ttach()是在USB設(shè)備連接到計(jì)算機(jī)時(shí)運(yùn)行,USBD模塊通過調(diào)用這個(gè)函數(shù)初始化USB設(shè)備,得到USB設(shè)備信息并配置USB設(shè)備,同時(shí)申請必需的資源[2]。

        USB InstallD rive()是在系統(tǒng)第一次加載USB設(shè)備驅(qū)動程序時(shí)被調(diào)用的,通過它驅(qū)動程序能創(chuàng)建所需要的注冊鍵,并將驅(qū)動程序需要的注冊表信息寫到 H KEY_LOCAL_MACH INE/ D rivers/USB/ClientD rivers下。USB設(shè)備驅(qū)動程序使用 RegisterClientDriver ID()和 Register-ClientSettings()函數(shù)來注冊相應(yīng)的設(shè)備信息[3]。

        USBUninstallDriver()負(fù)責(zé)卸載USB設(shè)備驅(qū)動程序,通過調(diào)用UnRegisterClientSettings()函數(shù)和UnRegisterClientDriver ID()函數(shù)來刪除注冊鍵并釋放其它相關(guān)資源。

        因此,我們的驅(qū)動程序中就一定要按照這三個(gè)函數(shù)的原型來實(shí)現(xiàn),否則就不能為設(shè)備管理器所識別。需要指出的是,*LPDEV ICE_ NO TIFY_ROU TINE指針?biāo)赶虻暮瘮?shù)是用來接收通知消息的,因?yàn)槿魏蜺SB設(shè)備都必須實(shí)現(xiàn)USB_CLOSE_DEV ICE消息的響應(yīng),這個(gè)指針?biāo)赶虻暮瘮?shù)也是必須要實(shí)現(xiàn)的。

        3.3 USB設(shè)備流驅(qū)動的實(shí)現(xiàn)的兩種方式

        (1)打開PB5.0,新建一個(gè)動態(tài)鏈接庫(DLL)工程,在工程中添加源文件,選擇代表設(shè)備的文件名前綴(這是非常重要的,因?yàn)樵O(shè)備管理器在注冊表中是通過前綴來識別設(shè)備的,并且在流接口命名時(shí)也是將這個(gè)前綴作為入口點(diǎn)函數(shù)的前綴)。PB5.0在創(chuàng)建工程的時(shí)候已經(jīng)自動編寫好了source和M akefile文件,.reg文件和.def文件也已經(jīng)存在,只需要添加相應(yīng)的內(nèi)容就可以。

        (2) 在 C:/W INCE500/PLA TFORM/ SMDK2440A/DRIV ERS目錄下(注:其中C盤是我的安裝目錄,SMDK2440A是立宇泰的2440實(shí)驗(yàn)板提供的BSP)新建一個(gè)文件夾,并用記事本打開該目錄下的dir按其格式添加“/新建文件夾的名字”打開剛剛新建的文件夾,依次新建.reg文件,.def文件,source文件和Makefile文件。

        這兩種方式都能實(shí)現(xiàn)流驅(qū)動,生成dll文件,第一種方式是平臺自動創(chuàng)建 source,Makefile等文件,第二種方式則都要手動添加。流驅(qū)動是嵌入式系統(tǒng)中最常見的設(shè)備驅(qū)動,操作接口和文件系統(tǒng)操作相似,通過CreateFile,ReadFile,W rite-File,IOControl函數(shù)等來操作應(yīng)用程序和流驅(qū)動交互[4]。

        4 結(jié)束語

        隨著USB設(shè)備的普及,開發(fā)人員的驅(qū)動開發(fā)任務(wù)也是越來越繁重了,特別是對于一些嵌入式開發(fā)來講,由于設(shè)備所采用的操作系統(tǒng)不同,相應(yīng)的硬件接口也是不一樣的,開發(fā)相關(guān)的USB驅(qū)動程序更是難上加難。通過本文,能了解W indow s CE下USB流驅(qū)動開發(fā)的大致步驟,為今后更復(fù)雜的開發(fā)應(yīng)用奠定基礎(chǔ)。

        [1] 何宗健.Window s CE嵌入式系統(tǒng) [M].北京:北京航空航天大學(xué)出版社,2006.

        [3] 劉彥峰,李崢,馬智.基于Window s CE的USB Key驅(qū)動程序設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008-12-03.

        [4] 計(jì)濤.淺談W INCE驅(qū)動程序設(shè)計(jì)[J].2010,(2).

        The design of USB stream interface driver for W indows CE

        MU Xiao-lei1,2

        (1.College of Com puter Science and Softw are,Hebei University of Technology,TianJin300130,China;2.Shijiazhuang Development Zone JiKe ShuangShi Technology Co.,L TD,Shijiazhuang Hebei050081,China)

        Aiming at the extensive app lication about USB Stream Interface Driver for Window s CE.The development environment and the classification of Stream Interface D river fo r Window s CE were introduled,and USB Stream Interface Driver were analyzed emphatically.

        Window s CE;USB;Stream Interface Driver

        TP311.52

        :A

        1001-9383(2010)04-0015-03

        2010-10-30

        慕曉蕾(1980-),女,遼寧朝陽人,主要從事嵌入式系統(tǒng)開發(fā)設(shè)計(jì)等工作.

        10.3969/j.issn.16712 1041. 2010.01.035.

        猜你喜歡
        嵌入式設(shè)備系統(tǒng)
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        搭建基于Qt的嵌入式開發(fā)平臺
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        原來他們都是可穿戴設(shè)備
        无码人妻精品一区二区三| 色婷婷亚洲十月十月色天| 亚洲精品在线观看自拍| 二区三区三区视频在线观看| 国产成人精品久久综合| 四月婷婷丁香七月色综合高清国产裸聊在线 | 日韩十八禁在线观看视频| 在线免费观看黄色国产强暴av| 孕妇特级毛片ww无码内射| 99热在线精品播放| 国产精东一区二区三区| 国产最新女主播福利在线观看| 性色做爰片在线观看ww| 免费成人福利视频| 日本无遮挡吸乳呻吟视频| 亚洲国产一区二区三区亚瑟| 国产激情久久久久久熟女老人| 亚洲一区二区精品在线| 岛国av无码免费无禁网站| 成年女人毛片免费视频| 精品久久久无码不卡| 中文字幕久久久人妻人区| 国产午夜福利不卡在线观看| 亚洲视频天堂| 人妻少妇偷人精品久久人妻| 亚洲youwu永久无码精品| 久久婷婷成人综合色| 欧美激情国产亚州一区二区| 永久中文字幕av在线免费| 2019日韩中文字幕mv| 国产精品美女久久久久久2018 | 精品综合久久久久久888蜜芽| 亚洲国产人在线播放首页 | 嗯啊 不要 啊啊在线日韩a| 按摩师玩弄少妇到高潮av| 亚洲日韩一区二区一无码 | 男人扒开女人下面狂躁小视频 | 欧美拍拍视频免费大全| 日本边添边摸边做边爱的网站| 人妻少妇精品无码系列| 国产精品亚洲精品一区二区|