<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > Windows CE6.0的DM9000A流接口驅動(dòng)開(kāi)發(fā)

Windows CE6.0的DM9000A流接口驅動(dòng)開(kāi)發(fā)

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

摘要:針對 CE系統下專(zhuān)用網(wǎng)絡(luò )驅動(dòng)接口開(kāi)發(fā)難度大的情況,本文介紹一種基于 CE流接口驅動(dòng)的工作機制及開(kāi)發(fā)方法。相比于 CE對各種硬件設備所提供的專(zhuān)用接口,流接口驅動(dòng)具有更大的靈活性,且能夠實(shí)現應用層到底層硬件的控制。以含有ARM11內核的S3C6410結合以太網(wǎng)通信芯片DM為例,逐步分析流接口驅動(dòng)程序的開(kāi)發(fā)流程,并利用PC機抓取以太網(wǎng)通信數據,驗證了流接口驅動(dòng)程序開(kāi)發(fā)的正確性。

本文引用地址:http://dyxdggzs.com/article/202323.htm

關(guān)鍵詞:Windows CE 6.0;S3C6410;DM;流接口驅動(dòng)

引言

嵌入式技術(shù)在各個(gè)領(lǐng)域的應用與日俱增,基于微軟公司研發(fā)的Windows CE嵌入式操作系統的電子設備更是滲透到各行各業(yè)。隨著(zhù)網(wǎng)絡(luò )技術(shù)的發(fā)展,以太網(wǎng)幾乎成為了電子通信設備首選的通信方式。Windows CE 6.0提供的網(wǎng)絡(luò )接口驅動(dòng)器標準(NIDS)固然得到系統的良好支持,但其驅動(dòng)程序的實(shí)現較為復雜,且通過(guò)NIDS實(shí)現應用程序對網(wǎng)絡(luò )底層驅動(dòng)的操作難度較大。

針對Windows .0系統下應用程序對設備硬件難以靈活控制的問(wèn)題,本文介紹一種使用流接口驅動(dòng)實(shí)現應用程序對硬件進(jìn)行控制的方法??紤]到Windows .0在內核訪(fǎng)問(wèn)機制上有別于以往版本,且以太網(wǎng)接口的廣泛使用及其基于NIDS的開(kāi)發(fā)難度較大,故而以DM網(wǎng)絡(luò )芯片的驅動(dòng)及控制為例進(jìn)行介紹。

1 Windows CE 6.0的設備驅動(dòng)機制

Windows CE所有的驅動(dòng)程序都是以DLL文件的形式存在的,系統在執行驅動(dòng)程序代碼之前必須先將相應的DLL文件加載到地址空間。Wind owsCE 6.0提供3個(gè)系統進(jìn)程來(lái)加載和執行驅動(dòng)程序的DLL文件,它們分別是Device.exe、GWES.exe和FileSys.exe。它們各自加載的驅動(dòng)類(lèi)型如圖1所示。

a.JPG

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

2.1 流接口驅動(dòng)架構

應用程序根據加載的流驅動(dòng)的名稱(chēng)和操作碼調用文件API,文件API被系統轉發(fā)到FileSys.exe進(jìn)程中;FileSys.exe一旦發(fā)現轉發(fā)過(guò)來(lái)的文件API是對設備的操作,則會(huì )交給設備管理器進(jìn)行處理;設備管理器將根據具體的請求,調用相應的流驅動(dòng)接口程序。對于Windows CE系統應用層而言,使用流接口驅動(dòng)的硬件設備被抽象為一個(gè)具有固定接口函數的動(dòng)態(tài)鏈接庫(DLL)。應用程序調用文件API函數與流接口驅動(dòng)程序進(jìn)行通信,把對硬件的操作轉化為對文件的讀寫(xiě)控制,從而達到應用程序操作硬件的目的。流接口驅動(dòng)程序的體系結構如圖2所示。

b.JPG

2.2 流驅動(dòng)接口函數

流接口驅動(dòng)程序具有統一的接口函數,只需根據硬件沒(méi)備的操作時(shí)序在相應的接口函數里編寫(xiě)控制指令。Windows CE系統下流接口函數功能描述如表1所列。

c.JPG

表1中XXX代表驅動(dòng)文件的名稱(chēng),Windows CE中流接口驅動(dòng)的文件名稱(chēng)規定為3個(gè)大寫(xiě)的字母/數字。在進(jìn)行流接口驅動(dòng)程序編程時(shí),并非所有的接口函數都要編寫(xiě),一般比較重要的是XXX_Init()和XXX_IOControl()兩個(gè)函數。前者在設備驅動(dòng)被加載時(shí)調用,主要編寫(xiě)初始化硬件設備的相應控制指令,其中包括很是關(guān)鍵的地址映射操作;后者則主要實(shí)現對硬件設備的各種控制,可以實(shí)現數據的讀寫(xiě)等操作,對設備的所有控制都可以在這個(gè)接口函數下實(shí)現,只需分配好相應的控制碼。對于本文介紹的DM9000A,DM9_Init()實(shí)現虛擬地址的獲取及初始化操作,DM9_IOControl()則實(shí)現數據的發(fā)送與接收,其中發(fā)送控制碼定義為DM9_SendData,接收控制碼為DM9_ReceiveData。


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

關(guān)鍵詞: Windows 9000A CE6

評論


相關(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>