Windows CE6.0的DM9000A流接口驅動開發(fā)
摘要:針對Windows CE系統(tǒng)下專用網(wǎng)絡驅動接口開發(fā)難度大的情況,本文介紹一種基于Windows CE流接口驅動的工作機制及開發(fā)方法。相比于Windows CE對各種硬件設備所提供的專用接口,流接口驅動具有更大的靈活性,且能夠實現(xiàn)應用層到底層硬件的控制。以含有ARM11內(nèi)核的S3C6410結合以太網(wǎng)通信芯片DM9000A為例,逐步分析流接口驅動程序的開發(fā)流程,并利用PC機抓取以太網(wǎng)通信數(shù)據(jù),驗證了流接口驅動程序開發(fā)的正確性。
本文引用地址:http://www.ex-cimer.com/article/202323.htm關鍵詞:Windows CE 6.0;S3C6410;DM9000A;流接口驅動
引言
嵌入式技術在各個領域的應用與日俱增,基于微軟公司研發(fā)的Windows CE嵌入式操作系統(tǒng)的電子設備更是滲透到各行各業(yè)。隨著網(wǎng)絡技術的發(fā)展,以太網(wǎng)幾乎成為了電子通信設備首選的通信方式。Windows CE 6.0提供的網(wǎng)絡接口驅動器標準(NIDS)固然得到系統(tǒng)的良好支持,但其驅動程序的實現(xiàn)較為復雜,且通過NIDS實現(xiàn)應用程序對網(wǎng)絡底層驅動的操作難度較大。
針對Windows CE6.0系統(tǒng)下應用程序對設備硬件難以靈活控制的問題,本文介紹一種使用流接口驅動實現(xiàn)應用程序對硬件進行控制的方法??紤]到Windows CE6.0在內(nèi)核訪問機制上有別于以往版本,且以太網(wǎng)接口的廣泛使用及其基于NIDS的開發(fā)難度較大,故而以DM9000A網(wǎng)絡芯片的驅動及控制為例進行介紹。
1 Windows CE 6.0的設備驅動機制
Windows CE所有的驅動程序都是以DLL文件的形式存在的,系統(tǒng)在執(zhí)行驅動程序代碼之前必須先將相應的DLL文件加載到地址空間。Wind owsCE 6.0提供3個系統(tǒng)進程來加載和執(zhí)行驅動程序的DLL文件,它們分別是Device.exe、GWES.exe和FileSys.exe。它們各自加載的驅動類型如圖1所示。
2 流接口驅動工作原理
2.1 流接口驅動架構
應用程序根據(jù)加載的流驅動的名稱和操作碼調用文件API,文件API被系統(tǒng)轉發(fā)到FileSys.exe進程中;FileSys.exe一旦發(fā)現(xiàn)轉發(fā)過來的文件API是對設備的操作,則會交給設備管理器進行處理;設備管理器將根據(jù)具體的請求,調用相應的流驅動接口程序。對于Windows CE系統(tǒng)應用層而言,使用流接口驅動的硬件設備被抽象為一個具有固定接口函數(shù)的動態(tài)鏈接庫(DLL)。應用程序調用文件API函數(shù)與流接口驅動程序進行通信,把對硬件的操作轉化為對文件的讀寫控制,從而達到應用程序操作硬件的目的。流接口驅動程序的體系結構如圖2所示。
2.2 流驅動接口函數(shù)
流接口驅動程序具有統(tǒng)一的接口函數(shù),只需根據(jù)硬件沒備的操作時序在相應的接口函數(shù)里編寫控制指令。Windows CE系統(tǒng)下流接口函數(shù)功能描述如表1所列。
表1中XXX代表驅動文件的名稱,Windows CE中流接口驅動的文件名稱規(guī)定為3個大寫的字母/數(shù)字。在進行流接口驅動程序編程時,并非所有的接口函數(shù)都要編寫,一般比較重要的是XXX_Init()和XXX_IOControl()兩個函數(shù)。前者在設備驅動被加載時調用,主要編寫初始化硬件設備的相應控制指令,其中包括很是關鍵的地址映射操作;后者則主要實現(xiàn)對硬件設備的各種控制,可以實現(xiàn)數(shù)據(jù)的讀寫等操作,對設備的所有控制都可以在這個接口函數(shù)下實現(xiàn),只需分配好相應的控制碼。對于本文介紹的DM9000A,DM9_Init()實現(xiàn)虛擬地址的獲取及初始化操作,DM9_IOControl()則實現(xiàn)數(shù)據(jù)的發(fā)送與接收,其中發(fā)送控制碼定義為DM9_SendData,接收控制碼為DM9_ReceiveData。
評論