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

Windows CE下設(shè)備驅(qū)動(dòng)的研究與實(shí)踐

2010-06-22 03:41:08高守生
現(xiàn)代電子技術(shù) 2009年22期

高守生

摘 要:介紹Windows CE及其特點(diǎn),深入研究Windows CE本機(jī)設(shè)備驅(qū)動(dòng)程序和流接口驅(qū)動(dòng)程序模型及工作方法。在多主I2C總線模式下,根據(jù)S3C2440處理器的集成功能和接口模式,以S3C2440處理器的寄存器物理地址和虛擬地址來(lái)捆綁和配置I2C總線控制器設(shè)計(jì)為例,著重闡述了嵌入式Windows CE流接口驅(qū)動(dòng)程序的開發(fā)過(guò)程,為此類設(shè)備驅(qū)動(dòng)的快速開發(fā)提供了很好的思路。

關(guān)鍵詞:Windows CE;設(shè)備驅(qū)動(dòng);I2C;S3C2440

中圖分類號(hào):TP334

0 引 言

伴隨著后PC時(shí)代的到來(lái),人們?cè)絹?lái)越多地接觸到一個(gè)新的概念即嵌入式技術(shù)。嵌入式技術(shù)已被廣泛地應(yīng)用于科學(xué)研究、工程設(shè)計(jì)、軍事技術(shù),以及文藝商業(yè)等方方面面,成為后PC時(shí)代IT領(lǐng)域發(fā)展的主力軍。這也極大地刺激了嵌入式系統(tǒng)的發(fā)展和產(chǎn)業(yè)化的進(jìn)程。嵌入式操作系統(tǒng)作為嵌入式系統(tǒng)的核心,是連接嵌入式設(shè)備和應(yīng)用的重要部件。它一方面要支持各種功能及規(guī)格的硬件設(shè)備,另一方面要為各種應(yīng)用程序提供┮恢陋的功能調(diào)用接口,同時(shí)還需要在有限的系統(tǒng)資源上盡可能快地完成應(yīng)用的計(jì)算需求。目前,主流的嵌入式操作系統(tǒng)有嵌入式Linux,Palm OS,VxWorks,Windows CE等。

1 Windows CE簡(jiǎn)介

Windows CE是一個(gè)開放的、可裁剪的、32位實(shí)時(shí)嵌入式窗口的操作系統(tǒng)。與其他桌面版窗口操作系統(tǒng)相比,它具有可靠性好,實(shí)時(shí)性高,內(nèi)核體積小及可伸縮性,通信能力強(qiáng)等特點(diǎn)。所以被廣泛用于各種嵌入式智能設(shè)備的開發(fā)中,是當(dāng)今應(yīng)用最多,增長(zhǎng)最快的嵌入式操作系統(tǒng)。

Windows CE是從整體上為有限資源平臺(tái)設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng)[1,2] 。它采用高度的模塊化設(shè)計(jì),這些模塊之間可能是獨(dú)立的,也可能有一些依賴關(guān)系。在Windows CE中最主要的系統(tǒng)模塊有五個(gè),它們是:

(1) 內(nèi)核:Windows CE的內(nèi)核可以非常小,最小的內(nèi)核只有500 KB。這是因?yàn)橄到y(tǒng)的大部分功能都可以在各自的功能模塊中完成。它是整個(gè)Windows CE操作系統(tǒng)的核心,主要完成六類功能,即處理器調(diào)度、內(nèi)存管理、異常處理、系統(tǒng)內(nèi)的通信機(jī)制,為其他部分提供核心調(diào)用例程,為系統(tǒng)范圍內(nèi)的調(diào)試提供支持。

(2) 設(shè)備管理模塊:提供系統(tǒng)范圍內(nèi)基本的設(shè)備列表管理、即插即用管理、電源管理、I/O資源管理等,并實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)程序得以工作的基本機(jī)制。設(shè)備配置信息存儲(chǔ)在Windows CE的注冊(cè)表中。

(3) 數(shù)據(jù)存儲(chǔ)模塊:提供基本的數(shù)據(jù)存儲(chǔ)能力,包括對(duì)象存儲(chǔ)和文件系統(tǒng)。目前,對(duì)象存儲(chǔ)的大小限制為256 MB的RAM ,對(duì)象存儲(chǔ)里的單個(gè)文件限制為最大32 MB;對(duì)象存儲(chǔ)在Windows CE中的作用類似于PC機(jī)中的硬盤,它為應(yīng)用程序及相關(guān)數(shù)據(jù)提供了持久穩(wěn)固的存儲(chǔ)。在Windows CE中,提供了三種文件系統(tǒng),分別為基于ROM文件系統(tǒng),基于RAM文件系統(tǒng),以及用于支持外圍存儲(chǔ)設(shè)備的FAT文件系統(tǒng)。另外,嵌入式開發(fā)者也可以創(chuàng)建和注冊(cè)屬性文件系統(tǒng)

(4) 圖形用戶界面模塊(GWES):它提供以下幾個(gè)主要功能:基本的繪圖引擎、窗口管理、界面的事件機(jī)制等。在Windows CE中GWES是操作系統(tǒng)、應(yīng)用程序以及用戶之間的接口。它支持組成Windows CE圖形用戶界面的窗口、對(duì)話框、控件、菜單和資源,使用戶能夠控制應(yīng)用程序。同時(shí),GWES還負(fù)責(zé)部分驅(qū)動(dòng)程序的加載工作,主要包括顯示、鍵盤、鼠標(biāo)及觸摸屏等的驅(qū)動(dòng)。

(5) 通信模塊:在整個(gè)Windows CE中,網(wǎng)絡(luò)通信模塊是最為獨(dú)立的一部分,它運(yùn)行時(shí)體現(xiàn)為一系列的動(dòng)態(tài)鏈接庫(kù)。其設(shè)計(jì)目標(biāo)主要體現(xiàn)在四點(diǎn):

① 高效能。提供最好的網(wǎng)絡(luò)應(yīng)用平臺(tái)。

② 包容力。支持廣泛的網(wǎng)絡(luò)類型和選項(xiàng)。

③ 易用性。通過(guò)系統(tǒng)提供的API,用戶可以容易地開發(fā)出各種網(wǎng)絡(luò)應(yīng)用。

④ 可拆卸。這是整個(gè)網(wǎng)絡(luò)系統(tǒng)構(gòu)架的特征,系統(tǒng)可以拆成很多獨(dú)立的部分,應(yīng)用系統(tǒng)可以根據(jù)需要選擇其中一部分,這樣可以降低系統(tǒng)開銷,使系統(tǒng)更加精簡(jiǎn)。

除了這五個(gè)主要的系統(tǒng)模塊外,Windows CE還有一些其他的模塊,如OAL模塊、驅(qū)動(dòng)程序模塊等。在實(shí)際的開發(fā)應(yīng)用中,嵌入式開發(fā)者可以根據(jù)設(shè)備的性質(zhì),只選擇那些必要的模塊或模塊中的組件,包含進(jìn)操作系統(tǒng)鏡像中。

2 Windows CE驅(qū)動(dòng)程序模型

在操作系統(tǒng)中設(shè)備驅(qū)動(dòng)程序通常扮演著無(wú)名英雄的角色。正是由于驅(qū)動(dòng)程序的存在,大多數(shù)操作系統(tǒng)之上的應(yīng)用程序都與硬件無(wú)關(guān)。應(yīng)用程序的開發(fā)者和最終用戶通常都不必關(guān)心底層的硬件如何工作。Windows CE之所以能夠支持各種各樣的硬件設(shè)備,也是因?yàn)榇嬖趯?duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序。這些設(shè)備驅(qū)動(dòng)程序提供了操作系統(tǒng)與硬件交互的方式,是連接硬件和操作系統(tǒng)之間的橋梁。

當(dāng)前Windows CE有四種設(shè)備模型,其中本機(jī)設(shè)備驅(qū)動(dòng)程序和流接口驅(qū)動(dòng)程序模型是專用于Windows CE驅(qū)動(dòng)程序的開發(fā)方法。另外,兩種外部模型也可應(yīng)用于其他操作系統(tǒng),它們分別是通用串行總線(USB)和網(wǎng)絡(luò)驅(qū)動(dòng)器接口標(biāo)準(zhǔn)(NDIS)的驅(qū)動(dòng)程序。

2.1 本機(jī)設(shè)備驅(qū)動(dòng)程序

在開始開發(fā)本機(jī)設(shè)備驅(qū)動(dòng)程序前,必須先了解哪些設(shè)備的驅(qū)動(dòng)程序是采用本機(jī)設(shè)備驅(qū)動(dòng)模型實(shí)現(xiàn)的。正如它的名字,本機(jī)設(shè)備驅(qū)動(dòng)程序適用于集成到基于Windows CE平臺(tái)的設(shè)備,如鍵盤、顯示器、PC卡插槽等設(shè)備。本機(jī)設(shè)備驅(qū)動(dòng)程序通常使用Windows CE提供的特定接口,而且都有明確和專一的目的。微軟本身提供了很多本機(jī)設(shè)備驅(qū)動(dòng)程序的樣本程序,這樣絕大多數(shù)的開發(fā)人員不需要編寫本機(jī)設(shè)備驅(qū)動(dòng)程序。除非是OEM開發(fā)商想為新平臺(tái)定制Windows CE,那么他們就需要編寫自己的本機(jī)設(shè)備驅(qū)動(dòng)程序,當(dāng)然可以將微軟的本機(jī)設(shè)備驅(qū)動(dòng)程序的例子直接移植到新平臺(tái)上。

本機(jī)設(shè)備驅(qū)動(dòng)程序分為兩種類型:單片驅(qū)動(dòng)程序和分層的驅(qū)動(dòng)程序[5]。單片驅(qū)動(dòng)程序的代碼直接與硬件交互,因此它包含與特定的某款硬件相關(guān)聯(lián)的代碼。通常,單片驅(qū)動(dòng)程序會(huì)暴露DDI接口給操作系統(tǒng),DDI函數(shù)是操作系統(tǒng)與驅(qū)動(dòng)程序交互的接口協(xié)議。而分層驅(qū)動(dòng)程序由兩個(gè)設(shè)置好的層組成:上層是模型設(shè)備驅(qū)動(dòng)程序(MDD),下層是依賴平臺(tái)的驅(qū)動(dòng)程序(PDD)。MDD層與硬件平臺(tái)無(wú)關(guān),它通過(guò)驅(qū)動(dòng)程序接口DDI與應(yīng)用程序通信。

開發(fā)驅(qū)動(dòng)程序時(shí),一般不必修改MDD層。只需關(guān)心與具體硬件平臺(tái)有關(guān)的下層,依賴平臺(tái)的驅(qū)動(dòng)程序?qū)覲DD。PDD層通過(guò)設(shè)備驅(qū)動(dòng)服務(wù)接口DDSI直接管理硬件。通常,MDD層的代碼與PDD層的代碼會(huì)被編譯成獨(dú)立的靜態(tài)LIB庫(kù),然后進(jìn)行鏈接,形成可執(zhí)行的驅(qū)動(dòng)程序。因此,MDD和PDD的劃分只是在源代碼邏輯層面,在驅(qū)動(dòng)程序的二進(jìn)制可執(zhí)行代碼中不會(huì)存在MDD與PDD的分層。

2.2 流接口驅(qū)動(dòng)程序

流接口驅(qū)動(dòng)程序是為了連接到Windows CE平臺(tái)的外圍設(shè)備而設(shè)計(jì)的,如打印機(jī)、尋呼機(jī)、調(diào)制解調(diào)器等。它是動(dòng)態(tài)鏈接庫(kù),由設(shè)備管理器動(dòng)態(tài)加載、管理和卸載[8]。與具有單獨(dú)目的接口的本機(jī)設(shè)備驅(qū)動(dòng)程序相比,流接口驅(qū)動(dòng)通過(guò)使用相同的接口,導(dǎo)出一組相同的函數(shù)即流接口函數(shù)。流接口函數(shù)也稱作流接口驅(qū)動(dòng)的入口點(diǎn),用來(lái)完成標(biāo)準(zhǔn)的文件I/O函數(shù)和電源管理函數(shù),這些函數(shù)是提供給Windows CE的操作系統(tǒng)內(nèi)核使用的。流接口驅(qū)動(dòng)的入口點(diǎn)主要包括 XXX[CD#*2]Init,XXX[CD#*2]Deinit,XXX[CD#*2]Open,XXX[CD#*2]Close,XXX[CD#*2]Read,XXX[CD#*2]Write,XXX[CD#*2]Seek,XXX[CD#*2]PowerUp,XXX[CD#*2]PowerDown和XXX[CD#*2]IOControl。其中,XXX是在驅(qū)動(dòng)程序注冊(cè)表里定義的設(shè)備文件名的前綴。在Windows CE中設(shè)備文件名通常由3個(gè)大寫字母,1個(gè)數(shù)字和1個(gè)冒號(hào)組成。

流接口驅(qū)動(dòng)對(duì)硬件設(shè)備的訪問(wèn)涉及五個(gè)部分[6]:應(yīng)用程序、FileSys.exe、設(shè)備管理器、流式接口驅(qū)動(dòng)程序本身以及硬件。其中,應(yīng)用程序和流式接口驅(qū)動(dòng)程序是由用戶編寫的;FileSys.exe與設(shè)備管理器是由Windows CE操作系統(tǒng)提供的組件,用戶無(wú)法修改。

在應(yīng)用程序使用文件API對(duì)設(shè)備進(jìn)行訪問(wèn)時(shí),文件API被操作系統(tǒng)轉(zhuǎn)發(fā)到FileSys.exe進(jìn)程中;然后FileSys.exe發(fā)現(xiàn)是對(duì)設(shè)備操作,就會(huì)把執(zhí)行交給設(shè)備管理器處理;接著設(shè)備管理器根據(jù)具體的請(qǐng)求,調(diào)用不同流式接口驅(qū)動(dòng)程序中提供的接口;最后驅(qū)動(dòng)程序負(fù)責(zé)與硬件交互。

3 Windows CE驅(qū)動(dòng)開發(fā)實(shí)例

這里以基于S3C2440A的I2C驅(qū)動(dòng)程序?yàn)槔?共同探討Windows CE下驅(qū)動(dòng)程序的開發(fā)。

I2C(Inter Integrated Circuit)總線是1980年P(guān)hi[CD*2]lips公司推出的。通過(guò)I2C兩根引線:一根串行地址線(SDA)和一根串行時(shí)鐘線(SCL),可使微控制器與外部設(shè)備之間進(jìn)行串行通信或使主設(shè)備和從設(shè)備之間實(shí)現(xiàn)雙向數(shù)據(jù)傳送。I2C總線遵從同步串行傳輸協(xié)議,即各位串行發(fā)送,由時(shí)鐘(clock)線指示讀數(shù)據(jù)(data)線的時(shí)刻。每個(gè)數(shù)據(jù)包前有一個(gè)地址,以指示由哪個(gè)器件來(lái)接收該數(shù)據(jù)。

S3C2440A是三星公司推出的16/32位精簡(jiǎn)指令集微處理器,它是為應(yīng)用于小型掌上設(shè)備和高性價(jià)比、低功耗、高性能的嵌入式系統(tǒng)而提供的微控制解決方案。S3C2440使用了ARM920T內(nèi)核,芯片上提供的集成功能包括:分開的16 KB指令/數(shù)據(jù)緩存、SDRAM控制器、LCD控制器、4通道DMA、3通道UART、I2C總線、IIS總線、SD主機(jī)接口、PWM定時(shí)器、看門狗、片上PLL時(shí)鐘發(fā)生器、8通道10位A/D控制器和觸摸屏接口、攝像頭接口以及帶日歷函數(shù)的實(shí)時(shí)時(shí)鐘。S3C2440A最高頻率可達(dá)533 MHz,且功耗只有毫瓦級(jí)[9]。

在多主I2C總線模式下,S3C2440A微處理器從設(shè)備接收串行數(shù)據(jù)或發(fā)送串行數(shù)據(jù)到從設(shè)備。主S3C2440A可以初始化或終止I2C總線上的數(shù)據(jù)傳輸。在S3C2440A中,I2C總線使用標(biāo)準(zhǔn)的總線仲裁過(guò)程。S3C2440A的I2C總線接口有4種模式[9]:主接收模式、主發(fā)送模式、從接收模式和從發(fā)送模式。為了控制多主I2C總線,必須對(duì)下面這幾個(gè)寄存器進(jìn)行讀/寫:I2C控制寄存器I2CCON,I2C控制/狀態(tài)寄存器I2CSTATI2C、數(shù)據(jù)寄存器I2CDS,I2C地址寄存器I2CADD。

[BT3]3.1 編寫流驅(qū)動(dòng)程序

首先,需要在oalintr.h中添加I2C的中斷號(hào);然后在cfw.c中初始化I2C中斷;接下來(lái),編寫I2C的驅(qū)動(dòng)程序。這里采用Windows CE下的流接口驅(qū)動(dòng)模型。在I2C[CD#*2]Init中需要把IOPORT registers,I2C Bus registers,CLK/PWR registers等寄存器的物理地址和虛擬地址綁定起來(lái)。同時(shí)配置I2C 總線控制器,使能I2C的Clock/Power controller。其中一些語(yǔ)句為:

然后,可實(shí)現(xiàn)I2C[CD#*2]Open,I2C[CD#*2]Read,I2C[CD#*2]Write,I2C[CD#*2]Close函數(shù)等,通過(guò)對(duì)各個(gè)寄存器進(jìn)行操作,從而得到I2C總線讀取和發(fā)送的數(shù)據(jù)。

完成編譯之后,得到的DLL還不能作為流接口,還需要編寫一個(gè)def文件,將它的接口函數(shù)導(dǎo)出。

[BT3]3.2 編寫驅(qū)動(dòng)程序注冊(cè)表

一個(gè)具體的流接口驅(qū)動(dòng)程序與注冊(cè)表部分是不能分開的。在此,使用記事本編寫注冊(cè)表的內(nèi)容如下:

[BT3]3.3 編寫CEC文件

有了驅(qū)動(dòng)程序和注冊(cè)表文件,驅(qū)動(dòng)程序還不能正常運(yùn)行。因?yàn)樗€沒(méi)有被加入到CEC內(nèi)核中。將一個(gè)文件添加到定制內(nèi)核中的方法通常有兩種:一種是修改BIB文件;另一種是編寫一個(gè)CEC文件,并添加到PB中。將編寫好的CEC文件導(dǎo)入到PB中后,重新進(jìn)行Build,就可以生成包含該流接口的驅(qū)動(dòng)程序。

4 結(jié) 語(yǔ)

在嵌入式技術(shù)飛速發(fā)展的今天,Windows CE必將有廣泛的應(yīng)用前景,這里編寫高效的設(shè)備驅(qū)動(dòng)程序也將帶動(dòng)外圍設(shè)備的開發(fā)。

主站蜘蛛池模板: 国产尤物jk自慰制服喷水| 成人午夜视频在线| 在线观看国产精品日本不卡网| 精品国产免费观看| 亚洲精品无码抽插日韩| AV不卡在线永久免费观看| 成人第一页| 亚洲黄色片免费看| 男人的天堂久久精品激情| 亚洲中文字幕手机在线第一页| 国产在线97| 欧美www在线观看| www.亚洲一区二区三区| 99青青青精品视频在线| www亚洲天堂| 亚洲系列无码专区偷窥无码| 无码一区18禁| Jizz国产色系免费| 99re免费视频| 日韩色图区| 伊人久久福利中文字幕| 蜜臀av性久久久久蜜臀aⅴ麻豆| 中文字幕亚洲专区第19页| 永久免费AⅤ无码网站在线观看| 91最新精品视频发布页| 伊人91视频| 亚洲va在线∨a天堂va欧美va| 99热国产这里只有精品9九| 国产精品吹潮在线观看中文| 99re在线视频观看| 日韩在线2020专区| 国产白浆视频| 久久婷婷国产综合尤物精品| 久久免费视频6| 国产麻豆永久视频| 久久精品无码国产一区二区三区| www.99在线观看| 日本不卡视频在线| 欧美日本在线一区二区三区| 日韩毛片基地| 露脸国产精品自产在线播| 久久久久国产一级毛片高清板| 亚洲第七页| 日本亚洲国产一区二区三区| 亚洲人成网18禁| 99激情网| 亚洲最大福利网站| 亚洲人成影院午夜网站| 欧美在线天堂| 无码综合天天久久综合网| 成年女人18毛片毛片免费| 天堂在线www网亚洲| 91日本在线观看亚洲精品| 乱系列中文字幕在线视频| 日韩精品无码免费专网站| 日韩毛片免费观看| 亚洲一区网站| 欧洲亚洲一区| 亚洲婷婷六月| 久久鸭综合久久国产| 色有码无码视频| 免费看a毛片| 亚洲精品视频网| 亚洲国产综合精品一区| 国产免费久久精品44| 久久久久国产精品熟女影院| 无码一区二区波多野结衣播放搜索| 亚洲欧美在线看片AI| 国产香蕉一区二区在线网站| 高清视频一区| 国产一区自拍视频| 国产香蕉一区二区在线网站| 一级在线毛片| 香蕉国产精品视频| 成人综合在线观看| 中文字幕无码电影| 四虎免费视频网站| 激情午夜婷婷| 久久综合伊人77777| 青青青视频蜜桃一区二区| 激情午夜婷婷| 欧美中出一区二区|