移植wifi,显然必须了解wifi的基础结构,尤其在Android下的结构。
在GOOGLE的网站上有一个wifi的大致介绍 -》
http://processors.wiki.ti.com/index.php/WL18xx_Platform_Integration_Guide
The host communicates via SDIO to the WLAN device. On the device side, the WLAN MAC is responsiblefor the 802.11 MAC functions, and conveys WLAN packets from/to the external host to/from the FW.The MAC is responsible for the timing and the time critical decisions only. The PHY performs the 802.11PHY functions of encoding/decoding and modulation/demodulation, and is responsible for the RF functionsof up/down modulation to carrier frequency, filtering and amplification.
【实践】x210系统下的板子的设置如下:
hanson@hanson-desktop:~/x210_ics_rtm_v13/kernel/arch/arm/mach-s5pv210$ vim mach-x210.c
The SDIO related pin muxes are set in the structure below:
/* Module pin mux for wlan and bluetooth */ static struct pinmux_config mmc2_wl12xx_pin_mux[] = { {"gpmc_a1.mmc2_dat0", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},<br> {"gpmc_a2.mmc2_dat1", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_a3.mmc2_dat2", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_ben1.mmc2_dat3", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_csn3.mmc2_cmd", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, {"gpmc_clk.mmc2_clk", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, {NULL, 0}, };
The below function is used for setting up this MMC interface. In this function the pin mux structure is being intialized and then the inteface is initilized as a non-removeable card working in 4-Bit mode.
static void mmc2_wl12xx_init(int evm_id, int profile) { setup_pin_mux(mmc2_wl12xx_pin_mux); am335x_mmc[1].mmc = 3; am335x_mmc[1].name = "wl1271"; am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD; am335x_mmc[1].nonremovable = true; am335x_mmc[1].gpio_cd = -EINVAL; am335x_mmc[1].gpio_wp = -EINVAL; am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */ /* mmc will be initialized when mmc0_init is called */ return; }
/* General Purpose EVM */ static struct evm_dev_cfg gen_purp_evm_dev_cfg[] = { {enable_ecap0, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 | PROFILE_2 | PROFILE_7) }, {lcdc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 | PROFILE_2 | PROFILE_7) }, ... ... {mmc1_init, DEV_ON_DGHTR_BRD, PROFILE_2}, {mmc2_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | PROFILE_5)}, {mmc0_init, DEV_ON_BASEBOARD, (PROFILE_ALL & ~PROFILE_5)}, {mmc0_no_cd_init, DEV_ON_BASEBOARD, PROFILE_5}, {spi0_init, DEV_ON_DGHTR_BRD, PROFILE_2}, {uart1_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | PROFILE_5)}, {wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | PROFILE_5)}, ... ... {haptics_init, DEV_ON_DGHTR_BRD, (PROFILE_4)}, {NULL, 0, 0}, };
The strucure below is used for setting the muxing of these pins:
static struct pinmux_config wl12xx_pin_mux[] = { {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, {"mcasp0_ahclkr.gpio3_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, {"mcasp0_ahclkx.gpio3_21", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT_PULLUP}, {NULL, 0}, };
0 BSP build guide
http://processors.wiki.ti.com/index.php?title=WL18xx_AMxxx_platform_integration_guide
1
http://processors.wiki.ti.com/index.php/WL18xx_WiFi_Build_Process
2
http://www.omappedia.com/wiki/4AJ.2.3_OMAP4_Jelly_Bean_Release_Notes#Building_WLAN_driver
http://blog.csdn.net/wh_19910525/article/details/7384480
http://blog.csdn.net/menuconfig/article/details/7306931
http://blog.csdn.net/c0611/article/details/16804035
http://blog.csdn.net/ldinvicible/article/details/11909411
http://blog.csdn.net/liuhui_8989/article/details/23045499
http://blog.csdn.net/wh_19910525/article/details/7392199
http://blog.csdn.net/wh_19910525/article/category/1107726
http://www.kandroid.org/online-pdk/guide/wifi.html
http://blog.csdn.net/wh_19910525/article/details/7392518
https://developer.ridgerun.com/wiki/index.php/Atheros_AR6003_SDIO_WiFi_Integration#Open_Source_project
Driver for Texas Instruments' Wilink(tm) combo devices WL1271/3 and WL1281/3 ents' Wilink(tm) combo devices WL1271/3 and WL1281/
http://wireless.kernel.org/en/users/Drivers/wl12xx
http://blog.csdn.net/xieweihua2012/article/details/12844733
https://community.freescale.com/docs/DOC-93603
WiLink™ WiFi + Bluetooth Forum
WL18xx & WL127x Applications.
http://e2e.ti.com/support/wireless_connectivity/f/307.aspx
http://www.ti.com/lsds/ti/tools-software/linux.page
WL18xx Linux Wireless Architecture
http://processors.wiki.ti.com/index.php/WL18xx_Linux_Wireless_Architecture
1 http://processors.wiki.ti.com/index.php/WL18xx?DCMP=wilink8&HQS=wilink8wiki
http://processors.wiki.ti.com/index.php/WL18xx_Platform_Integration_Guide
https://lists.yoctoproject.org/listinfo/meta-ti
http://e2e.ti.com/
http://www.wi-linktech.com/
http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/59289.aspx
http://processors.wiki.ti.com/index.php/TI-Android-ICS-PortingGuide#WLAN
http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.1_ReleaseNotes
http://w1.fi/wpa_supplicant/
http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.1_ReleaseNotes
Component | Version | Repository (Branch) | Commit ID / Baseline | Base Repository | Commit ID / Base Tag |
---|---|---|---|---|---|
Bootloader | 2011.09 | http://gitorious.org/rowboat/u-boot (am335x-master-android-ics) |
e3f1bbc | http://arago-project.org/git/projects/?p=u-boot-am33x.git;a=shortlog;h=refs/heads/AM335XPSP_04.06.00.07 | AM335XPSP_04.06.00.07 |
AM335x Linux Kernel | 3.2 | http://gitorious.org/rowboat/kernel (rowboat-am335x-kernel-3.2) |
1b21543a | http://arago-project.org/git/projects/?p=linux-am33x.git;a=shortlog;h=refs/heads/AM335XPSP_04.06.00.07 | |
SGX Release | ddk 1.8 | http://gitorious.org/rowboat/hardware-ti-sgx (ti_sgx_sdk-ddk_1.8) |
30ccc34 | None | None |
Android Filesystem | ICS 4.0.3 | http://gitorious.org/rowboat | TI-Android-ICS-4.0.3-DevKit-3.0.1.xml | https://android.googlesource.com/platform/manifest.git | android-4.0.3_r1 |
http://processors.wiki.ti.com/index.php/WL8_release_download_page
本文系统:
ARM cotext-A8 x210 platform
Android 4.0
Ubuntu 10.10
Made by Frank Huang @ [email protected]