999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Windows CE下GPIO流接口的驅(qū)動程序開發(fā)原理

2011-06-22 08:18:42張愛民梁書劍付健
關(guān)鍵詞:設(shè)備

張愛民,梁書劍,付健

(總參謀部通信訓(xùn)練基地,宣化075100)

張愛民(講師),研究方向為軍用無線通信與網(wǎng)絡(luò)、通信抗干擾技術(shù)。梁書劍(講師),研究方向為軍用無線通信;付健(講師),研究方向為通信抗干擾技術(shù)。

1 概 述

Windows CE是Microsoft公司專門針對嵌入式產(chǎn)品領(lǐng)域開發(fā)的嵌入式操作系統(tǒng)。該系統(tǒng)是一種緊湊、高效、可伸縮的32位操作系統(tǒng),主要面向各種嵌入式系統(tǒng)和產(chǎn)品。它的模塊化設(shè)計使嵌入式系統(tǒng)和應(yīng)用程序開發(fā)者能夠方便地加以定制,以適應(yīng)一系列產(chǎn)品(例如消費類電子設(shè)備、專用工業(yè)控制器和嵌入式通信設(shè)備等)的需要。GPIO是端口的擴(kuò)展器,當(dāng)微控制器或者芯片沒有足夠的I/O端口,或者當(dāng)系統(tǒng)需要用遠(yuǎn)端串行通信端口時,GPIO能夠提供額外的控制和監(jiān)視功能[1]。用戶可以通過GPIO與硬件工作,例如點亮LED、控制蜂鳴器、控制 LCD顯示和鍵盤的輸入等。所以GPIO的應(yīng)用極為廣泛,但是這些都需要驅(qū)動的支持。

2 GPⅠO流驅(qū)動原理

Windows CE的所有驅(qū)動程序都可以通過流接口驅(qū)動來實現(xiàn),GPIO驅(qū)動程序開發(fā)也通過流接口驅(qū)動來實現(xiàn)。流接口驅(qū)動是最基本的一種驅(qū)動結(jié)構(gòu),它的接口是一組固定的流接口函數(shù)。流接口驅(qū)動可以把外設(shè)抽象成一個文件,過程是:應(yīng)用程序調(diào)用操作系統(tǒng)的 API函數(shù),操作系統(tǒng)通過驅(qū)動接口調(diào)用驅(qū)動程序的硬件操作函數(shù)來完成對硬件的操作。

流接口函數(shù)包括 XXX_Init、XXX_Deinit、XXX_Open 、XXX_Close 、XXX_Read 、XXX_Write、XXX_PowerUp 、XXX_PowerDown、XXX_IOControl、XXX_Seek 、XXX_PreClose、XXX_PreDeinit。其中,XXX表示設(shè)備名的前綴,它非常重要,因為設(shè)備管理器在注冊表中通過前綴來識別設(shè)備。流接口驅(qū)動是動態(tài)鏈接庫,由設(shè)備管理程序的特殊應(yīng)用程序加載、管理和卸載。在實際的開發(fā)中,用設(shè)備的前綴名來代替XXX。例如:GPIO設(shè)備的前綴名可以是GIO,相應(yīng)地要實現(xiàn)的DLL接口為GIO_Init、GIO_Read 、GIO_IOControl等。其中,XXX_Init用于初始化必要的資源、內(nèi)存映射和IST(中斷服務(wù)線程)。XXX_IOControl為設(shè)備的特定操作提供擴(kuò)展接口,對于大多數(shù)的驅(qū)動,GPIO主要操作都在這里,它會被應(yīng)用層的API函數(shù)調(diào)用來獲得或者設(shè)置狀態(tài)。應(yīng)用程序通過調(diào)用XXX_IOControl函數(shù)并傳入不同的操作碼,實現(xiàn)GPIO的各種功能。而在應(yīng)用程序里對應(yīng)的文件API函數(shù)有ActivateDeviceEx、RegisterDevice、CreateFile、DeviceIoControl、ReadFile、WriteFile、CloseHandle、SetFilePointer等 。

流接口驅(qū)動既可以是不分層的架構(gòu),也可以是分層架構(gòu)[2]。同時,流接口驅(qū)動既可以管理內(nèi)建設(shè)備,也可以管理安裝設(shè)備;既可以在設(shè)備啟動時加載,也可以在需要時動態(tài)加載。流接口驅(qū)動的架構(gòu)如圖1所示。

3 GPⅠO驅(qū)動開發(fā)過程

Samsung公司基于ARM11內(nèi)核的SC36410處理器包含了17個GP端口,從GPA到GPQ共187針。這些I/O大部分是可以復(fù)用的,可以作為輸入口、輸出口和特殊功能口,不同的功能通過各自的配置控制寄存器GPxCON選擇來實現(xiàn)。配置好相應(yīng)的控制寄存器后就可以選擇相應(yīng)數(shù)據(jù)寄存器GPxDAT進(jìn)行讀寫數(shù)據(jù)。GPxDAT用來選擇是否使用內(nèi)部上拉電阻,當(dāng)引腳被設(shè)置為輸入時,讀此寄存器可知引腳的狀態(tài)是高電平還是低電平;當(dāng)引腳被設(shè)置為輸出時,寫此寄存器可令該引腳為高電平或者低電平。以SC36410的GPM端口為例來介紹GPIO驅(qū)動的開發(fā)。通過查閱SC36410手冊看到GPMCON的地址為0x7F008820,GPMDAT的地址為0x7F008824,GPMPUD的地址為0x7F008828。GPM端口包括6針(GPM[5:0]),每針的輸入/輸出由GPM0到GPM5寄存器分別確定。控制寄存器GPM0設(shè)置為0000時,表明GPM[0]引腳為輸入腳;控制寄存器 GPM0設(shè)置為 0001時,表明GPM[0]引腳為輸出腳。其他引腳操作完全類似。

圖1 流接口驅(qū)動的架構(gòu)

3.1 地址映射

Windows CE有虛擬地址和物理地址之分,程序訪問的地址都是虛擬地址。要訪問硬件的物理地址,驅(qū)動程序必須將設(shè)備的物理地址映射到IST正在運行的地址空間,完成物理地址到虛擬地址的映射[3]。函數(shù)VirtualAlloc、VirtualCopy和VirtualFree是Windows CE的內(nèi)核函數(shù),具有同樣功能的CEDDK函數(shù)MmMapIoSpace和UnMmMap-IoSpace也可以完成地址映射。添加如下語句:

經(jīng)過地址映射后,結(jié)構(gòu)體變量指針v_pIOPregs就可以訪問GPM的寄存器了。

3.2 編寫驅(qū)動實現(xiàn)代碼

Windows CE里設(shè)備驅(qū)動程序本質(zhì)上是一些動態(tài)鏈接庫(DLL),它們向內(nèi)核提供一些入口函數(shù),這樣設(shè)備管理器就可以通過這些函數(shù)與具體的硬件設(shè)備進(jìn)行通信。GPIO驅(qū)動的入口函數(shù)為DllMain。DllMain是一個可選的DLL入口方式,在進(jìn)程和線程初始化或終止時以及調(diào)用LoadLibrary或FreeLibrary之后被系統(tǒng)調(diào)用,DllMain函數(shù)如下所示:

Windows CE加載設(shè)備驅(qū)動時,產(chǎn)生DLL_PROCESS_ATTACH調(diào)用DllMain,初始化設(shè)備,分配所需資源,并且開啟ISR和IST;當(dāng)卸載設(shè)備驅(qū)動時,產(chǎn)生DLL_PROCESS_DETACH,調(diào)用DllMain,關(guān)閉設(shè)備并釋放它占用的各種資源[4]。

加載設(shè)備驅(qū)動的具體步驟如下:

①新建GPM_Driver.cpp文件,添加一些頭文件和完善接口函數(shù)的內(nèi)容:在GPM_Init()函數(shù)中完成虛擬地址映射,在GPM_Deinit()中釋放虛擬地址空間和各種資源。代碼如下:

在GPM_IOControl()函數(shù)中實現(xiàn)了GPIO的大部分操作,按照SC36410手冊的說明和要求使I/O控制代碼識別要完成的操作。GPMCON控制寄存器的輸入/輸出配置,GPMDAT負(fù)責(zé)數(shù)據(jù)寄存器的讀寫,部分代碼如下:

②創(chuàng)建GPM_Driver.DEF文件,提供驅(qū)動接口。

3.3 驅(qū)動程序配置[5]

配置驅(qū)動程序的具體步驟如下:

①為使Windows CE生成內(nèi)核映像時自動將GPM_Driver.dll加入到系統(tǒng)內(nèi)核映像,在platform.bib文件中添加如下內(nèi)容:

②在platform.reg文件中添加如下內(nèi)容,當(dāng)Win-dows CE啟動時,就會自動加載該驅(qū)動了。

③新建Makefile文件,并添加內(nèi)容如下:!INCLUDE$(_MAKEENVROOT)makefile.def

④配置sources文件。把其他驅(qū)動程序的sources文件復(fù)制過來,在文件某些位置替換為GPM_Driver的內(nèi)容。

⑤在X:WINCE600PLATFORMSMDK6410SRCDRIVERS的dirs文件下,X代表Windows CE的安裝盤符,按照文件格式添加GPM_Driver。

⑥對驅(qū)動程序進(jìn)行編譯,生成的GPM_Driver.dll會自動加入到操作系統(tǒng)內(nèi)核映像,最終生成NK.bin文件,下載到目標(biāo)板后即可被頂層的應(yīng)用程序API函數(shù)調(diào)用,實現(xiàn)GPIO的輸入/輸出等功能。這樣,GPM便可以實現(xiàn)控制LED發(fā)光、蜂鳴器發(fā)出聲響等功能了。

結(jié) 語

Windows CE已經(jīng)成為廣泛應(yīng)用的嵌入式操作系統(tǒng),本文以SC36410的GPM端口為例,主要介紹了Windows CE下GPIO驅(qū)動程序的開發(fā)方法,分析了GPIO流接口驅(qū)動程序的開發(fā)原理,主要包括建立DLL項目、編寫一些輸入/輸出函數(shù)和寄存器,以及配置驅(qū)動程序等,對Windows CE下GPIO驅(qū)動編寫具有一定的參考價值。

[1]周建設(shè).Windows CE設(shè)備驅(qū)動及BSP開發(fā)指南[M].北京:中國電力出版社,2009.

[2]張冬泉,譚南林.Windows CE開發(fā)實例精粹[M].北京:電子工業(yè)出版社,2008.

[3]胡秀鳳,丁承君,張明路,等.Windows CE下GPIO驅(qū)動程序的設(shè)計與應(yīng)用[J].微計算機(jī)信息,2009,25(6-2);140-141.

[4]趙振中,徐家愷.基于WindowsCE的GPIO鍵盤驅(qū)動設(shè)計與實現(xiàn)[J].科學(xué)技術(shù)與工程,2008,8(6);1598-1600.

[5]楊澤輝,徐燕玲,劉碧君,等.基于嵌入式 WinCE的GPIO驅(qū)動開發(fā)[J].太原科技大學(xué)學(xué)報,2010,31(6);446-448.

猜你喜歡
設(shè)備
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
調(diào)試新設(shè)備
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設(shè)備
500kV輸變電設(shè)備運行維護(hù)探討
HTC斥資千萬美元入股虛擬現(xiàn)實設(shè)備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設(shè)備篇
如何在設(shè)備采購中節(jié)省成本
主站蜘蛛池模板: 日韩精品亚洲人旧成在线| 韩日无码在线不卡| 极品国产一区二区三区| 亚洲最大福利网站| 欧美色99| 一本一道波多野结衣av黑人在线| 国产91无毒不卡在线观看| 成人在线亚洲| 亚洲日本韩在线观看| 亚洲欧美精品日韩欧美| 青青青国产精品国产精品美女| 色偷偷一区二区三区| 思思99思思久久最新精品| 欧美在线精品怡红院| 国产国语一级毛片| 日韩不卡免费视频| 中文字幕伦视频| 欧美a网站| 亚洲中文字幕久久无码精品A| 亚洲天堂网在线播放| 亚洲国产亚洲综合在线尤物| 第一页亚洲| 国产精品hd在线播放| 色成人综合| 欧美va亚洲va香蕉在线| 欧美成人在线免费| 91在线无码精品秘九色APP| 亚国产欧美在线人成| 伊在人亞洲香蕉精品區| 日本免费新一区视频| 91小视频版在线观看www| 欧美精品黑人粗大| 中文国产成人精品久久| 手机成人午夜在线视频| 免费又爽又刺激高潮网址| 国产福利影院在线观看| 久久成人国产精品免费软件| 老熟妇喷水一区二区三区| 亚洲黄网在线| 91麻豆精品视频| 激情综合网址| 在线观看av永久| 国产精品不卡片视频免费观看| 久久夜夜视频| 成人a免费α片在线视频网站| 免费可以看的无遮挡av无码| 91久久偷偷做嫩草影院| 国产精品亚欧美一区二区| 精品天海翼一区二区| 拍国产真实乱人偷精品| 亚洲二区视频| 色婷婷啪啪| 毛片一级在线| 天堂在线亚洲| 色综合天天操| 亚洲侵犯无码网址在线观看| 国产人在线成免费视频| 欧洲亚洲一区| 亚洲国产精品无码久久一线| P尤物久久99国产综合精品| 国产一级妓女av网站| 亚洲无限乱码一二三四区| 国内自拍久第一页| 国产麻豆精品久久一二三| 国产精品久久久久鬼色| 亚洲三级成人| 亚洲天堂久久久| 亚洲AV无码一二区三区在线播放| 国产精品13页| 精品国产美女福到在线直播| 亚洲中文字幕23页在线| 国产成人精品视频一区视频二区| 国产成人无码播放| 欧美不卡视频一区发布| 亚洲视频免费播放| 亚洲一区第一页| 日韩毛片基地| 99无码中文字幕视频| 日韩AV无码一区| 午夜色综合| 三上悠亚一区二区| 国产精品内射视频|