2020-1-10第1页,共6页MW269模组基于Android系统的Wi-Fi驱动集成指导文档Catalog目录1目的...........................................................................................................................................22范围...........................................................................................................................................23总体概述...................................................................................................................................23.1AndroidWi-Fi模块结构介绍...................................................................................23.2MW269模组的Wi-Fi驱动介绍................................................................................24MW269的Wi-Fi交付件介绍....................................................................................................35MW269的Wi-Fi集成操作说明................................................................................................42020-1-10第2页,共6页1目的本文档主要是针对MW269模组基于Android系统的内核驱动集成开发活动进行相关的指导说明。主要面向基于Android产品开发商的驱动开发人员,已经其他相关的开发、测试人员。2范围本文档适用于:1)MW269模组的Wi-Fi功能模块。2)Androidgingerbread(以nVidia的ventana平台为例)3总体概述3.1AndroidWi-Fi模块结构介绍Android的Wi-Fi模块如下图所示,它包括用户空间和内核空间的代码。其中Wi-FiSettings为应用层JAVA代码;W-iFiJni为JAVA到底层C代码的JNI层;Wi-FiHAL为硬件抽象层,它加载Wi-Fi驱动;wpa_supplicant负责Wi-Fistack、安全、上层命令转发给驱动;Wi-Fi驱动是唯一工作在内核空间的代码,负责给模块上/下电,sdiohost控制,模块初始化,命令和数据收发等。图1AndroidWi-Fi模块结构3.2MW269模组的Wi-Fi驱动介绍MW269模组的Wi-Fi驱动借助SDIO总线和MW269模组的硬件设备进行通讯。Wi-FiSettingsWi-FiHALwpa_supplicantWi-FiDriverinsmoduserspacekernelspaceWi-FiJni2020-1-10第3页,共6页4MW269的Wi-Fi交付件介绍在Android系统上,MW269的Wi-Fi的交付件:Firmware:AndroidWi-Fix.xx.xx.xx.tar.gzDriver:AndroidWi-FiDriverx.xx.xx.xx.tar.gz该交付件为一个Linux的标准压缩包,其中,x.xx.xx.xx表示交付件的版本号。在该Wi-Fi的交付件压缩包中,包含以下交付件:Driver的交付件中包含如下图所示的文件:Firmware的交付件中包含如下图所示的文件:NetDevicedriverWirelessExtensionSDIO总线MW269模组Wi-Fi驱动模块NetworkingToolsWi-FiSettingTools2020-1-10第4页,共6页5MW269的Wi-Fi集成操作说明Android发布时,只支持Ti的Wi-Fi,要使用我司MW269的Wi-Fi,就需要将我司提供的Wi-Fi交付件编译到Android系统的Image中。以下将以nVidiaventana平台的Android2.3(gingerbread)系统为例进行说明。1.解压缩AndroidWi-FiDriverx.xx.xx.xx.tar.gz压缩包,并把整个bcm4330目录拷贝到Android系统的kernel/drivers/net/wireless目录下。2.在kernel/drivers/net/wireless/Kconfig文件中,在endif#WLAN语句之前添加如下的语句:sourcedrivers/net/wireless/bcm4330/Kconfig3.配置内核:MW269的Wi-Fi驱动是由Android的Linux内核自带的WirelessExtension控制的,因此需要在内核中启用WirelessExtension配置,Wi-Fi驱动才能正常运行。内核配置如下:network-wireless-WirelessExtension,将此选项开启。另外,要把bcm4330的驱动编译到内核中,需要配置如下的配置项:CONFIG_BCM4330=m4.解压缩AndroidWi-Fix.xx.xx.xx.tar.gz压缩包,按照压缩包的目录结构,把压缩目录中的文件通过adb工具拷贝到Android系统对应的目录中。5.Wi-Fi设备的上电处理:MW269Wi-Fi的上电是由两个管脚控制的,一个是VREG_ON,一个是WiFi_RESET。平台的驱动需要根据实际的管脚分配情况,在驱动中对这两个管脚进行上电和下电的管理。在Tegra2的ventana平台上,该上电的参考驱动实现位于kernel/arch/arm/mach-tegra/board-ventana-sdhci.c文件中。6.驱动的加载设置:2020-1-10第5页,共6页当用户点击Android系统的settings界面中的Wi-Fi选项,启动Wi-Fi时,Android系统会先调用上电处理接口,给Wi-Fi设备上电;然后根据HAL层的配置来加载对应的Wi-Fi驱动。HAL层的驱动加载配置在hardware/libhardware_legacy/wifi/wifi.c文件中,主要的修改是:定义宏如下:#defineWIFI_DRIVER_MODULE_PATH/system/lib/modules/bcm4330.ko#defineWIFI_DRIVER_MODULE_NAMEbcm4330#defineWIFI_DRIVER_MODULE_ARGfirmware_path=/system/etc/firmware/bcm4330.binnvram_path=/system/etc/firmware/nvram.txt定义静态变量如下:staticconstcharIFACE_DIR[]=/data/misc/wifi/sockets;staticconstcharSUPP_CONFIG_TEMPLATE[]=/system/etc/wifi/wpa_supplicant.conf;staticconstcharSUPP_CONFIG_FILE[]=/data/misc/wifi/wpa_supplicant.conf;注意:对于IFACE_DIR,有的平台会直接使用默认的配置,即:staticconstcharIFACE_DIR[]=/data/system/wpa_supplicant;7.修改网络设备名称MW269的Wi-Fi驱动加载后,会生成一个网络设备,其默认的名称为hwwlan0。而Android系统中,其框架的Wi-Fi代码中,默认的网络接口的名称为tiwlan0,因此需要修改该网络名称,以便跟我司的MW269的Wi-Fi的网络名称保持一致。修改方法如下:在frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java文件中,把mInterfaceName=SystemProperties.get(wifi.interface,tiwlan0);改为:mInterfaceName=SystemProperties.get(wifi.interface,wlan0);8.修改Android系统中的init.rc文件中,相关的Wi-Fi服务配置。在Tegra2的ventana平台上,就是修改device/nvidia/ventana/init.ventana.rc文件中的Wi-Fi配置,修改如下:servicewpa_supplicant/system/bin/wpa_supplicant\-Dwext-itiwlan0-c/data/misc/wifi/wpa_supplicant.conf2020-1-10第6页,共6页修改为:servicewpa_supplicant/system/bin/wpa_supplicant\-Dwext-iwlan0-c/data/misc/wifi/wpa_supplicant.conf9.完成修改后,重新编译完整的AndroidImage,并升级该Image到开发板中。即可完成MW269Wi-Fi的集成。