關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > Windows CE6.0的DM9000A流接口驅動開發

        Windows CE6.0的DM9000A流接口驅動開發

        作者: 時間:2012-05-23 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/202323.htm

        關鍵詞:Windows CE 6.0;S3C6410;DM;流接口驅動

        引言

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

        針對Windows .0系統下應用程序對設備硬件難以靈活控制的問題,本文介紹一種使用流接口驅動實現應用程序對硬件進行控制的方法。考慮到Windows .0在內核訪問機制上有別于以往版本,且以太網接口的廣泛使用及其基于NIDS的開發難度較大,故而以DM網絡芯片的驅動及控制為例進行介紹。

        1 Windows CE 6.0的設備驅動機制

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

        a.JPG

        2 流接口驅動工作原理

        2.1 流接口驅動架構

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

        b.JPG

        2.2 流驅動接口函數

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

        c.JPG

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


        上一頁 1 2 3 4 下一頁

        關鍵詞: Windows 9000A CE6

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 满城县| 尖扎县| 高淳县| 石嘴山市| 辛集市| 涡阳县| 繁峙县| 新邵县| 九龙城区| 广东省| 札达县| 英德市| 修水县| 宁南县| 马关县| 特克斯县| 奉节县| 江津市| 汶川县| 深圳市| 枣庄市| 建德市| 淮南市| 牙克石市| 昌平区| 哈巴河县| 雷波县| 锡林浩特市| 连城县| 新竹县| 东兴市| 克什克腾旗| 达孜县| 满城县| 分宜县| 上林县| 台江县| 旬阳县| 文水县| 靖安县| 汨罗市|