tiny210針對USI_WM-BN-BM-04的wifi的配置過程2、tiny210針對USI_WM-BN-BM-04的wifi的配置過程 (參看TINY210_wifi調試過程.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均為標準的SDIO接口對接; SDIO_HOST_WAKE為向主機發(fā)起喚醒中斷針腳; WL_REG_ON為主機對wifi模塊電源和reset控制針腳。 另外還有SPI和SDIO模式選擇針腳,接地為SDIO模式。
2.2內核配置 2.2.1源碼替換: 將\linux-3.0.8\drivers\net\wireless\bcmdhd替換為usi提供的bcmdhd文件 需要注意的是,該文件夾下的驅動之注冊了驅動,而沒有注冊設備,所以加一個源文件device_04_wlan.c用于注冊設備的。
2.2.2源碼修改: 需要針對SDIO_HOST_WAKE和WL_REG_ON兩個針腳進行配置: 1) SDIO_HOST_WAKE:用于主機中斷,在cpu端為輸入,起中斷作用。 在device_04_wlan.c源碼中有針已經做了配置 static struct resource brcm_wlan_resources[] = { [0] = { .name = "bcmdhd_wlan_irq", .start = 40, .end = 40, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE, }, }; 需要根據(jù)實際針腳重新配置。(40為eint[8])
2)WL_REG_ON為電源控制和reset腳: 需要在cpu端,配置為輸出,以控制usi模塊的wifi功能的reset。 這個可以在bcmdhd文件加下(即drivers\net\wireless\bcmdhd): 的Dhd_custom_gpio.c源碼中的dhd_customer_gpio_wlan_ctrl(int onoff)函數(shù)對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內核配置 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給的兩個固件fw_bcmdhd.bin和bcmdhd.cal打包進系統(tǒng)中: 內核配置給定的路徑為: /system/etc/firmware/fw_bcmdhd.bin /system/etc/wifi/bcmdhd.cal 但實際調試之后,路徑為如下:其中bcmdhd.cal需要改名為nvram.txt system/vendor/firmware/bcm43xx/fw_bcmdhd.bin system/vendor/firmware/bcm43xx/nvram.txt
2)因為友善紙對tiny210加了一些wifi庫文件,所以需要把它們去掉,路徑為: ./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文件夾刪掉。 并刪除相關庫文件(具體沒測試,因為我是直接make clean的,下班了,讓他在晚上編譯),重新編譯生成。
經過以上的配置整個系統(tǒng)應該就支持USI_WM-BN-BM-04的wifi了。 |
|
|