wifi移植(下)

本文介绍了在Android系统中移植Atheros6302 Wi-Fi驱动的具体步骤,包括配置BoardConfig.mk、wpa_supplicant.conf、wifi.c,设置正确的路径与权限,以及上层接口和内核配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



   接上节,写下porting流程,这次导入是的atheros6302。

   一、配置Android支持WIFI

  在BoardConfig.mk中:
     
  WPA_SUPPLICANT_VERSION      := VER_0_6_ATHEROS   
    BOARD_WPA_SUPPLICANT_DRIVER := WEXT


    BOARD_WLAN_ATHEROS_SDK     := system/wlan/atheros/AR6kSDK


    BOARD_WLAN_CHIP_AR6003     := true


    BOARD_WLAN_PM_SUSPEND     := 1


二、配置wpa_supplicant.conf
 
wpa_supplicant是通过wpa_supplicant.conf中的ctrl_interface=来指定控制socket的,应该在AndroidBoard.mk中配置好复制到$(TARGET_OUT_ETC)/wifi,也就是/system/etc/wifi/wpa_supplicant.conf这个文件复制过来的。

 一般的wpa_supplicant.conf配置为:
      ctrl_interface=DIR=/data/misc/wifi/wpa_supplicant  GROUP=wifi
      update_config=1
      fast_reauth=1  
      ap_scan=1

三、配置wifi.c

    #define WIFI_DRIVER_MODULE_PATH         "/system/wifi/ar6000.ko"


    #define WIFI_DRIVER_MODULE_NAME         "ar6000"


    #define WIFI_FIRMWARE_LOADER          ""


    #define WIFI_TEST_INTERFACE      "wlan0"


    static const char IFACE_DIR[]           = "/data/misc/wifi/wpa_supplicant";


    const char SUPP_CONFIG_FILE[]    = "/data/misc/wifi/wpa_supplicant.conf";


四、配置路径和权限

       在init.rc里,加入下列代码:

       mkdir /system/etc/wifi 0770 wifi wifi
       chmod 0770 /system/etc/wifi
       chmod 0660 /system/etc/wifi/wpa_supplicant.conf
       chown wifi wifi /system/etc/wifi/wpa_supplicant.conf
       # wpa_supplicant socket
       mkdir /data/system/wpa_supplicant 0771 wifi wifi
       chmod 0771 /data/system/wpa_supplicant
       #wpa_supplicant control socket for android wifi.c
       mkdir /data/misc/wifi 0770 wifi wifi
       mkdir /data/misc/wifi/sockets 0770 wifi wifi
       chmod 0770 /data/misc/wifi

       chmod 0660 /data/misc/wifi/wpa_supplicant.conf

      

      mkdir /data/misc/wifi/sockets 0770 wifi wifi

        mkdir /data/misc/dhcp 0770 dhcp dhcp
       chown dhcp dhcp /data/misc/dhcp

       chown 0770 /system/etc/dhcpcd/dhcpcd-run-hooks


    #注意定义接口wlan0

   setprop wifi.interface wlan0   

   service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant -dd

         -Dwext -iwlan0 -c /data/misc/wifi/wpa_supplicant.conf
         user root

         group wifi inet

      socket wpa_wlan0 dgram 660 wifi wifi
         oneshot
      service dhcpcd /system/bin/logwrapper /system/bin/dhcpcd -d -B wlan0
         disabled
         oneshot

五、上层接口的配置

    public WifiStateTracker(Context context, Handler target) {
        super(context, target, ConnectivityManager.TYPE_WIFI, 0, "WIFI", "");
        ....
        mInterfaceName = SystemProperties.get("wifi.interface", "wlan0");//注意更改为wlan0

       ....
    }

六、kenerl配置

     在内核中选择对SDIO通道,根据实际情况在内核初始化时给wifi模块上电,一般按时序拉GPIO。另外config里要有wext_core等与wireless相关选项。这个WIFI驱动支持蓝牙,如果项目没有蓝牙,要么删掉wifi里代码,要么打开内核对SDIO蓝牙的支持。否则,编译wifi驱动会报错。



   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值