關(guān) 閉

新聞中心

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

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

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

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

本文引用地址:http://m.butianyuan.cn/article/202323.htm

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

引言

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

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

1 Windows CE 6.0的設(shè)備驅(qū)動(dòng)機(jī)制

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

a.JPG

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

2.1 流接口驅(qū)動(dòng)架構(gòu)

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

b.JPG

2.2 流驅(qū)動(dòng)接口函數(shù)

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

c.JPG

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


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

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

評(píng)論


相關(guān)推薦

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

關(guān)閉