<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > WindowsCE.Net下基于流驅動(dòng)的AD驅動(dòng)設計與實(shí)現

WindowsCE.Net下基于流驅動(dòng)的AD驅動(dòng)設計與實(shí)現

作者: 時(shí)間:2012-03-24 來(lái)源:網(wǎng)絡(luò ) 收藏

0 引言

Windows CE.Net 是一個(gè)32位、多任務(wù)、多線(xiàn)程的完全搶占式的實(shí)時(shí)操作系統。它提供了眾多強大工具適應于快速構建新一代內存少、體積小的智能設備,如工業(yè)控制器、手持式設備等。該系統的特點(diǎn)是專(zhuān)為各種具有嚴格資源限制的硬件系統所設計的。為了將操作系統和硬件設備連接起來(lái),連接硬件和應用軟件的驅動(dòng)就非常重要。該論文主要針對SAMSUNG公司以ARM9為內核的S3C2410進(jìn)行分析,介紹在Windows CE.Net 系統下進(jìn)行底層設備的原理和開(kāi)發(fā)方法并提供AD驅動(dòng)程序的實(shí)例。

1 S3C2410芯片片上AD介紹

S3C2410 是一款基于A(yíng)RM920T的16/32位RISC微處理器,擁有高性?xún)r(jià)比,低功耗等特點(diǎn),也是目前市面上出現較多的嵌入式開(kāi)發(fā)板的處理器之一,具有8路 10位的A/D轉換,S3C2410上的A/D轉換器在2.5MHZ的時(shí)鐘下,最大轉化速率可達500KSPS,A/D轉換器支持片上采樣和保持功能。 S3C2410微處理對AD轉換進(jìn)行的操作,主要是對下面的兩個(gè)寄存器進(jìn)行讀/寫(xiě):ADC 控制寄存器,ADCCON ;ADC 數據寄器,ADCDAT0。

2

Windows CE.Net 支持四種驅動(dòng)模型:本地驅動(dòng)、流驅動(dòng)、USB、NDIS[1]。本文只針對流驅動(dòng)進(jìn)行介紹。

2.1 體系結構

流驅動(dòng)將設備抽象為文件進(jìn)行操作,它體系結構如圖1所示。應用程序使用文件API對設備進(jìn)行訪(fǎng)問(wèn),文件API被操作系統轉發(fā)到FileSys.exe進(jìn)程中;然后FileSys.exe發(fā)現是對設備進(jìn)行操作,就會(huì )把執行交給設備管理器;接著(zhù)設備管理器根據具體的請求,調用不同的流接口驅動(dòng)程序中暴露的接口;最終驅動(dòng)程序負責與硬件交互[2-3]。

圖1流接口驅動(dòng)的體系結構

2.2 流接口函數

流接口驅動(dòng)程序是動(dòng)態(tài)連接庫,由設備管理程序的特殊程序加載、管理和卸載,與具有單獨目的接口的內部驅動(dòng)程序相比,流接口驅動(dòng)程序使用同一個(gè)接口并調用同一個(gè)函數集-流接口函數[4]。Windows CE.Net 系統規定流接口的入口點(diǎn)如表1,對應著(zhù)直接或者間接調用流接口函數的系統組件或文件API函數。生成一個(gè)DLL后,就用設備文件名前綴替換入口點(diǎn)名字中的XXX。

表1 流接口入口函數

流接口函數

功能描述

調用流接口對象

XXX_Init()

初始化設備

系統設備管理器

XXX_Denit()

卸載設備

系統設備管理器

XXX_Open()

打開(kāi)設備進(jìn)行讀寫(xiě)操作

文件API函數CreateFile()

XXX_Close()

關(guān)閉設備

文件API函數CloseHandle()

XXX_Read()

讀取設備數據

文件API函數ReadFile()

XXX_Write()

向設備寫(xiě)數據

文件API函數WriteFile()

XXX_IOControl()

對設備進(jìn)行各種操作

文件API函數DeviceIOControl()

XXX_Seek()

移動(dòng)設備數據的指針位置

文件API函數SetFilePointer()

XXX_PowerDown()

使設備休眠

系統電源管理器

XXX_PowerUp()

恢復設備電源

系統電源管理器

2.3 流接口驅動(dòng)工作原理

在流驅動(dòng)工作原理中需要包括幾個(gè)重要的工作實(shí)體:硬件、流接口驅動(dòng)驅動(dòng)程序、系統注冊表、設備管理器、應用程序。整個(gè)驅動(dòng)程序工作原理如圖2所示。

流驅動(dòng)的工作順序如下:1)加載驅動(dòng)。在當系統啟動(dòng)時(shí),設備管理器搜尋注冊表的 HKEY_LOCAL_MACHINEDriverBuiltIn鍵下面的子鍵,并逐一加載子鍵下的每個(gè)驅動(dòng),此過(guò)程叫BusEnum。2)設備管理器從注冊表的dll鍵值中獲取驅動(dòng)程序所在的DLL文件名。3)設備管理器調用LoadDriver()函數把DLL加載到自己的虛擬地址空間內。4)設備管理器在注冊表的HKEY_LOCAL_MACHINEDriverActive下面,記錄所有已經(jīng)加載的驅動(dòng)程序[2]。 5)設備管理器調用驅動(dòng)中的XXX_Init()函數。6)在XXX_Init()中,通常對硬件進(jìn)行一些基本的初始化操作。通過(guò)以上6步,流接口驅動(dòng)被成功加載。7)應用程序使用該設備。首先它調用CreateFile()打開(kāi)設備。CreateFile()是在FileSys.exe中實(shí)現的。但是 FileSys.exe只作簡(jiǎn)單判斷,如果發(fā)現打開(kāi)的程序而不是一個(gè)文件,那么就重新把主動(dòng)權交還給設備管理器。8)設備管理器調用驅動(dòng)程序中的 XXX_Open()函數打開(kāi)設備。在XXX_Open()中,驅動(dòng)程序可能會(huì )對硬件進(jìn)行一些額外的初始化工作,使硬件進(jìn)入工作狀態(tài)。 9)XXX_Open()函數把打開(kāi)設備的結果返回給設備管理器。10)設備管理器把XXX_Open()返回的結果,再返回給應用程序的 CreateFile()函數調用。通過(guò)7-10步,設備已被成功打開(kāi),至此就可以對設備進(jìn)行讀寫(xiě)和控制操作。11)應用程序使用第7步 CreateFile()函數返回的句柄作為ReadFile() / WriteFile()的第一個(gè)參數,向設備發(fā)送讀請求。同樣ReadFile() / WriteFile()要經(jīng)過(guò)FileSys.exe轉發(fā)給設備管理器。12)設備管理器調用驅動(dòng)程序中的XXX_Read() / XXX_Write() 函數,讀取設備的數據信息或向設備寫(xiě)信息。13)在流驅動(dòng)程序中,XXX_Read() / XXX_Write() 函數可與硬件交互,從硬件中讀取必要的信息或向硬件寫(xiě)必要的信息。然后返回給設備管理器,再返回給應用程序。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>