Windows CE6.0的DM9000A流接口驅動開發
3 DM9000A流驅動程序的實現
DM9000A支持IEEE802.3x全雙工模式流控制,提供IP/TCP/UDP校驗、產生及檢測功能;內部集成10/100M自適應PHY,同時具有13 KB的接收緩沖區和3 KB的發送緩沖區,支持8位和16位數據接口。
S3C6410與DM9000A的接口電路如圖3所示。在流驅動程序中是將DM9000A內部寄存器地址空間映射到S3C6410內部劃分的SROM的BANK1空間上,物理基地址是0x18000000。在Windows CE 6.0系統下對硬件寄存器的訪問首先需要進行地址映射,將寄存器物理地址映射為系統可訪問的虛擬地址。最為簡單的方法就是從系統目錄(C:\wince600\platform\studk6410\src\inc)下找到基于OEM層的地址配置表(oemaddrt ab_cfg.inc),從文件中找到所使用的SROM的BANK1的虛擬地址,在驅動程序中直接訪問該地址(如同訪問芯片的寄存器地址)。
流接口驅動的實現將集中體現在對初始化接口函數和I/O控制接口函數的操作,函數主要代碼如下:
其中,0x94000000正是從地址配置表文件中獲取的虛擬地址,dwEthernetIOBase經映射后則如同DM9000A內部寄存器的首地址。由于硬件線路上是使用S3C6410的地址線中的位2作為DM9000A的數據/地址訪問信號(高電平為訪問數據),故以“dwEthernetIOBase+4”作為訪問數據的基地址。
其中,參數Handle為流接口設備的句柄;dwIoControICode為I/O控制碼,可以根據需要自由定義;pInBuf為傳入數據指針;nInBufSize為數據長度。除了初始化函數和I/O控制函數外的其他流驅動接口函數無需任何處理,直接給出返回值即可。
評論