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