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