调试高通的WIFI(之1)

  • Post author:
  • Post category:其他




高通


wifi android


层移植(


bcm4329






定义好内核模块的位置(包括内核模块、固件、


NVRAM


、以及其它的内核模块,比如说


SDIO


的驱动或是


USB


驱动(如果是


USB


网卡的话))



hardware/libhardware_legacy/wifi/wifi.c


要用到。



Wifi.c


里面的一些宏可以在


BoardConfig.mk


里面去配置。



BOARD_WPA_SUPPLICANT_DRIVER := WEXT



WIFI_DRIVER_MODULE_PATH := /system/etc/dhd.ko



WIFI_DRIVER_MODULE_NAME := dhd




WPA_SUPPLICANT_VERSION := VER_0_6_X




进入到


:system/core/rootdir/etc/init.qcom.rc



主要是加入如下二个服务


:



service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant





-D


wext





-i


wlan0





-c



/data/


misc


/



wifi



/wpa_supplicant.conf






-d


d



user wifi system



group system



# socket wpa_wlan0 dgram 660 wifi wifi



disabled



oneshot




-i<ifname> :




网络接口名称





-c<conf>:




配置文件名称





-C<ctrl_intf>:




控制接口名称





-D<driver>:




驱动类型





-p<driver_param>:




驱动参数





-b<br_ifname>:




桥接口名称





http://blog.csdn.net/wyl123/article/details/4692617




上面网站有介绍



具体介绍


wpa_supplicant





wpa_cli


的用法:




http://blog.163.com/wxiongn@126/blog/static/11788203820102262748358/




add_network



1



> set_network 2 ssid “gionee(znsj)”



FAIL



> set_network 1



<2>CTRL-EVENT-SCAN-RESULTS



ssid “gionee(znsj)”



OK



> et_network 1 psk “1234567890”



Unknown command ‘et_network’



> set_network 1 psk “1234567890



<2>CTRL-EVENT-SCAN-RESULTS







OK



> enable_network 1



OK



service dhcpcd_wlan0 /system/bin/dhcpcd -BKL -d wlan0 -o domain_name_servers



disabled



oneshot



system/core/rootdir/


里面的


Android.mk


有复制的功能可以:



# files that live under /system/etc/…






copy_from := \



etc/dbus.conf \



etc/hosts \



etc/init.qcom.post_boot.sh \



etc/init.qcom.bt.sh \



etc/init.qcom.coex.sh \



etc/init.qcom.fm.sh \



etc/init.qcom.sdio.sh \



etc/dhd.ko \



etc/fw_bcm4329.bin \



etc/nvram.txt \



etc/init.qcom.wifi.sh



意思是把


system/core/rootdir/etc/


里的文件


copy





SYSTEM


文件系统的


/system/etc/


目录下去。



进入:


frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java


目录里


:



mInterfaceName = SystemProperties.get(“wifi.interface”,

“wlan0”)

;



sDnsPropNames = new String[] {




“dhcp.” + mInterfaceName + “.dns1”,



“dhcp.” + mInterfaceName + “.dns2”



};



执行过程:






wpa_supplicant


起来以后:



守护进程会产生一个


/data/misc/wifi/wpa_supplicant/wlan0


接口



根据


wpa_cupplicant.conf


得来:



ctrl_interface=DIR=/data/misc/wifi/wpa_supplicant GROUP=wifi



同时在


/data/misc/wifi/


下创建一个


socketies


目录,下面会有二个


sockets



一个是控制接口,一个是监控接口


(


这个接口用于监测从wpa_supplicant发出的event事件。


)








Wifi.c


会通过这二个接口和守护进程通信。


转载于:https://my.oschina.net/u/174445/blog/30073