wifi softap(hotspot) porting
声明:该文件为本人原创,如转载修改及使用其中任何内容,请注明出处及原作者。
Author:lanbo(高兆成)
E-mail:lanbo_g@126.com
如有任何疑问可留言或E-mail
1、编译wifi driver
修改firmware下载路径,或确认firmware路径
A:有些wifi driver下载firmware是在driver中直接到指定位置读取firmware并通过SDIO(如SDIO接口)下到wifi芯片,这种方式比较简单,但需要知道firmware的路径,以便在向根文件系统存放firmware与该路径一致。如broadcomdriver
set download dir: dhd/sys/dhd_linux.c fun:dhd_attach
strcpy(fw_path, "/system/etc/firmware/fw.bin");
strcpy(nv_path, "/system/etc/firmware/nvram.txt");
注:download实现的地方:dhd/sys/dhd_linux.cfun:dhd_bus_start
生成dhd.ko
B:也有一些wifi driver在下载firmware前通过request_firmware创建属性文件和uevent socket,并发送firmware add uevent,在android上层/system/core/init.c中再创建一个socket用于接收kernel的uevent并将firmware写入属性文件,driver再将firmware传给wifi芯片。(相对来讲这一种方式比较正式,个人认为。具体download firmware如何实现在其它文件中会给出)
注该方法download firmware的firmware路径是固定的“/etc/firmware/”在/system/core/init/devices.c中有定义
2、将wifi driver firmware config档放入根文件系统指定位置
这些编译时源文件目录在andorid可放任何处,但最好不要乱放以免打乱上层文件存放结构,目前我存放的路径为/hardware/平台名称/wlan/broadcom/
/wlan/Broadcom/Android.mk内容
ifeq ($(BOARD_WLAN_DEVICE),bcm4329)
include $(callall-subdir-makefiles)
endif
/wlan/Broadcom/firmware/Android.mk 文件内容,作用是将firmware档sta.xbv(/wlan/Broadcom/firmware/sta.xbv)放到/system/etc/firmware目录下的子目录unifi-sdio-0中去。
最终firmware路径为:/system/etc/firmware/module_name/sta.xbv
LOCAL_PATH := $(call my-dir)
local_target_dir := $(TARGET_OUT_ETC)/firmware
########################
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sta.xbv
LOCAL_MODULE_TAGS := user
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(local_target_dir)/module_name
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
########################
源文件目录结构为:
/hardware/平台名称/wlan/芯片名/Android.mk
/hardware/平台名称/wlan/芯片名/firmware/Android.mk
/hardware/平台名称/wlan/芯片名/firmware/*.bin
/hardware/平台名称/wlan/芯片名/config/Android.mk
/hardware/平台名称/wlan/芯片名/config/android_dhcpcd.conf
/hardware/平台名称/wlan/芯片名/config/wpa_supplicant.conf
/hardware/平台名称/wlan/芯片名/module/Android.mk
/hardware/平台名称/wlan/芯片名/module/*.ko
有的公司需要一些tools使用:
/hardware/平台名称/wlan/芯片名/tools/ Android.mk
/hardware/平台名称/wlan/芯片名/tools/*
目的目录路径:
其它config文件及driver模块用同样的方式存放
firmware:/system/etc/firmware
module:/system/lib/modules
wap_supplicant.conf:/system/etc/wifi
dhcpcd.conf:/system/etc/dhcpcd
因wpa