WinCE下WIFI模塊AR6102的調試
今天調試了一款SDIO的無線網卡AR6102,由于該芯片是板載的,所以寫了一個應用程序,模擬無線網卡的插入拔出,然后簡單修改了SDHC驅動,檢測應用程序發出的模擬卡插拔的動作,并控制芯片的PWR和RST引腳。幸運的很,改完之后,就可以用了。通過應用程序模擬無線網卡的插入動作后,在超級終端看到了加載無線網卡驅動的打印信息,在控制面板的網絡連接里也看到了WIFI設備,AR6K_SD1。
用于測試的無線AP是Cisco的,加密方式是WPA-Personal,根據路由器的設置,選擇加密方式并輸入網絡密鑰,如下圖所示。
點擊確定后,正常連接至無線AP,但信號強度極低,可能跟天線有關系。
連接至AP后,AR6K_SD1的IP信息如下圖所示。
連接過程中的日志如下圖所示。
下面簡單介紹一下調試的思路。我們知道,WinCE下SD卡驅動主要由三部分組成,BusDriver、HostControllerDriver和ClientDrivers。他們三者與應用程序和操作系統的關系如下圖所示。
可以看到,BusDriver是介于ClientDriver和HostControllerDriver之間的一個抽象管理層。它為ClientDriver提供了標準的API,使其能在不同的WinCE系統上運行。BusDriver的真實存在為SDBUS.dll。這部分代碼由微軟提供,與平臺和應用無關。所以,在移植驅動的過程中無需做任何修改。
ClientDriver通過BusDriver提供的抽象接口,控制并操作SD設備。WinCE下SDIO的ClientDriver類型有Memory、BlueTooth、GPS和WIFI等幾種。這部分的驅動根據設備類型不同而不同,當SD設備插入時,BusDriver根據注冊表的配置,加載相應的ClientDriver。ClientDriver一般由模塊廠商提供,基本不用做修改即可使用。
HostControllerDriver是BusDriver和HostController之間的一個硬件抽象層,這部分代碼隨著平臺和芯片的不同而不同。在調試SD設備的過程中,需要做相應修改。
根據以上分析,調試AR6102的驅動時,僅僅修改了HostControllerDriver的代碼,其他兩個部分都沒有動。實際上原廠也沒有提供ClientDriver的代碼,只給了DLL文件而已。
【編輯推薦】