今天調試了一款SDIO的無線網卡AR6102,由於該晶片是板載的,所以寫了一個應用程式,類比無線網卡的插入拔出,然後簡單修改了SDHC驅動,檢測應用程式發出的類比卡插拔的動作,並控制晶片的PWR和RST引腳。幸運的很,改完之後,就可以用了。通過應用程式類比無線網卡的插入動作後,在超級終端看到了載入無線網卡驅動的列印資訊,在控制台的網路連接裡也看到了WIFI裝置,AR6K_SD1。
用於測試的無線AP是Cisco的,加密方式是WPA-Personal,根據路由器的設定,選擇加密方式並輸入網路金鑰,如所示。
點擊確定後,正常串連至無線AP,但訊號強度極低,可能跟天線有關係。
串連至AP後,AR6K_SD1的IP資訊如所示。
串連過程中的日誌如所示。
下面簡單介紹一下調試的思路。 我們知道,WinCE下SD卡驅動主要由三部分組成,Bus Driver、Host Controller Driver和Client Drivers。他們三者與應用程式和作業系統的關係如所示。
可以看到,Bus Driver是介於Client Driver和Host Controller Driver之間的一個抽象管理層。它為Client Driver提供了標準的API,使其能在不同的WinCE系統上運行。Bus Driver的真實存在為SDBUS.dll。這部分代碼由微軟提供,與平台和應用無關。所以,在移植驅動的過程中無需做任何修改。
Client Driver通過Bus Driver提供的抽象介面,控制並操作SD裝置。WinCE下SDIO的Client Driver類型有Memory、BlueTooth、GPS和WIFI等幾種。這部分的驅動根據裝置類型不同而不同,當SD裝置插入時,Bus Driver根據註冊表的配置,載入相應的Client Driver。Client Driver一般由模組廠商提供,基本不用做修改即可使用。
Host Controller Driver是Bus Driver和Host Controller之間的一個硬體抽象層,這部分代碼隨著平台和晶片的不同而不同。在調試SD裝置的過程中,需要做相應修改。
根據以上分析,調試AR6102的驅動時,僅僅修改了Host Controller Driver的代碼,其他兩個部分都沒有動。實際上原廠也沒有提供Client Driver的代碼,只給了DLL檔案而已。