tiny210針對(duì)USI_WM-BN-BM-04的wifi的配置過程2、tiny210針對(duì)USI_WM-BN-BM-04的wifi的配置過程 (參看TINY210_wifi調(diào)試過程.doc) by joqian 2013-3-13 2.1 硬件配置 USI_WM-BN-BM-04涉及到的主要針腳為: SDIO_D0, SDIO_D1, SDIO_D2, SDIO_D3,SDIO_VDD,SDIO_CMD,SDIO_CLK均為標(biāo)準(zhǔn)的SDIO接口對(duì)接; SDIO_HOST_WAKE為向主機(jī)發(fā)起喚醒中斷針腳; WL_REG_ON為主機(jī)對(duì)wifi模塊電源和reset控制針腳。 另外還有SPI和SDIO模式選擇針腳,接地為SDIO模式。
2.2內(nèi)核配置 2.2.1源碼替換: 將\linux-3.0.8\drivers\net\wireless\bcmdhd替換為usi提供的bcmdhd文件 需要注意的是,該文件夾下的驅(qū)動(dòng)之注冊(cè)了驅(qū)動(dòng),而沒有注冊(cè)設(shè)備,所以加一個(gè)源文件device_04_wlan.c用于注冊(cè)設(shè)備的。
2.2.2源碼修改: 需要針對(duì)SDIO_HOST_WAKE和WL_REG_ON兩個(gè)針腳進(jìn)行配置: 1) SDIO_HOST_WAKE:用于主機(jī)中斷,在cpu端為輸入,起中斷作用。 在device_04_wlan.c源碼中有針已經(jīng)做了配置 static struct resource brcm_wlan_resources[] = { [0] = { .name = "bcmdhd_wlan_irq", .start = 40, .end = 40, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, }, }; 需要根據(jù)實(shí)際針腳重新配置。(40為eint[8])
2)WL_REG_ON為電源控制和reset腳: 需要在cpu端,配置為輸出,以控制usi模塊的wifi功能的reset。 這個(gè)可以在bcmdhd文件加下(即drivers\net\wireless\bcmdhd): 的Dhd_custom_gpio.c源碼中的dhd_customer_gpio_wlan_ctrl(int onoff)函數(shù)對(duì)WL_REG_ON針腳的電平高低控制。
#define RST_GPIO_PIN S5PV210_GPH0(5) static int brcm_wlan_power_off_test() { printk(KERN_INFO"%s Enter: power off\n", __func__); /* setup the outputs and init values */ s3c_gpio_cfgpin(RST_GPIO_PIN, 0x1); gpio_direction_output(RST_GPIO_PIN, 0); gpio_set_value(RST_GPIO_PIN, 0); msleep(10);
return 0; }
static int brcm_wlan_power_on_test() { printk(KERN_INFO"%s Enter: power on\n", __func__); /* setup the outputs and init values */ s3c_gpio_cfgpin(RST_GPIO_PIN, 0x1); gpio_direction_output(RST_GPIO_PIN, 1); gpio_set_value(RST_GPIO_PIN, 1); msleep(10);
return 0; }
/* Customer function to control hw specific wlan gpios */ void dhd_customer_gpio_wlan_ctrl(int onoff) { switch (onoff) { case WLAN_RESET_OFF: WL_TRACE(("%s: call customer specific GPIO to insert WLAN RESET\n", __FUNCTION__)); #ifdef CUSTOMER_HW bcm_wlan_power_off(2); #endif /* CUSTOMER_HW */ #ifdef CUSTOMER_HW2 wifi_set_power(0, 0); #endif brcm_wlan_power_off_test(); WL_ERROR(("=========== WLAN placed in RESET ========\n")); break;
case WLAN_RESET_ON: WL_TRACE(("%s: callc customer specific GPIO to remove WLAN RESET\n", __FUNCTION__)); #ifdef CUSTOMER_HW bcm_wlan_power_on(2); #endif /* CUSTOMER_HW */ #ifdef CUSTOMER_HW2 wifi_set_power(1, 0); #endif brcm_wlan_power_on_test(); WL_ERROR(("=========== WLAN going back to live ========\n")); break;
case WLAN_POWER_OFF: WL_TRACE(("%s: call customer specific GPIO to turn off WL_REG_ON\n", __FUNCTION__)); #ifdef CUSTOMER_HW bcm_wlan_power_off(1); #endif /* CUSTOMER_HW */ brcm_wlan_power_off_test(); break;
case WLAN_POWER_ON: WL_TRACE(("%s: call customer specific GPIO to turn on WL_REG_ON\n", __FUNCTION__)); #ifdef CUSTOMER_HW bcm_wlan_power_on(1); /* Lets customer power to get stable */ OSL_DELAY(200); #endif /* CUSTOMER_HW */ brcm_wlan_power_on_test(); OSL_DELAY(200); break; } } 2.2.3內(nèi)核配置 make menuconfig 1)Networking support ---> Wireless ---> 2)Device Drivers ---> Network device support ---> Wireless LAN ---> 3)Device Drivers ---> MMC/SD/SDIO card support --->
2.3系統(tǒng)配置 2.3.1固件的打包: 1)需要將usi給的兩個(gè)固件fw_bcmdhd.bin和bcmdhd.cal打包進(jìn)系統(tǒng)中: 內(nèi)核配置給定的路徑為: /system/etc/firmware/fw_bcmdhd.bin /system/etc/wifi/bcmdhd.cal 但實(shí)際調(diào)試之后,路徑為如下:其中bcmdhd.cal需要改名為nvram.txt system/vendor/firmware/bcm43xx/fw_bcmdhd.bin system/vendor/firmware/bcm43xx/nvram.txt
2)因?yàn)橛焉萍垖?duì)tiny210加了一些wifi庫文件,所以需要把它們?nèi)サ?span style="font-family:Times New Roman">,路徑為: ./system/lib/modules/3.0.8-FriendlyARM 將3.0.8-FriendlyARM重命名,或者刪除。
2.3.2NL80211的配置: tiny210中wpa_supplicant用的是wext,而usi的wifi采用的是NL80211。所以需要修改系統(tǒng)的配置: 1)將init.mini210.rc中的 service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 class main socket wpa_wlan0 dgram 0660 wifi wifi disabled oneshot 改為: service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211-iwlan0 class main socket wpa_wlan0 dgram 0660 wifi wifi disabled oneshot
2)在android-4.0.3_r1\device\friendly-arm\mini210下的 BoardConfigCommon.mk中的 # Connectivity - Wi-Fi WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := WEXT BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_fawext BOARD_WIFIHW_PRIVATE_LIB := lib_wifihw_fa 改成: # Connectivity - Wi-Fi WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WLAN_DEVICE := bcmdhd #BOARD_HOSTAPD_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd #BOARD_WIFIHW_PRIVATE_LIB := lib_wifihw_fa
3)將\android-4.0.3_r1\vendor\friendly-arm\mini210\下的wifi文件夾刪掉。 并刪除相關(guān)庫文件(具體沒測試,因?yàn)槲沂侵苯?span style="font-family:Times New Roman">make clean的,下班了,讓他在晚上編譯),重新編譯生成。
經(jīng)過以上的配置整個(gè)系統(tǒng)應(yīng)該就支持USI_WM-BN-BM-04的wifi了。 |
|