WS73V100 Android平台WiFi移植

WS73V100 Android平台WiFi移植 四叶草~ 2024-03-15 09:51:11 101

1.驱动加载步骤

步骤 1: 默认加载 cfg80211.ko
步骤 2: 确认采用的驱动加载模式,若通过配置启动脚本来加载驱动,可直接跳到步骤 4;若通过适配驱动模组设备号,再加载驱动,可继续执行步骤 3。
步骤 3: 针对 USB 模组,可执行“lsusb”查看模组的 VID 和 PID 号,其中 WS73 模组默认值为 ffff:3733。

针对 SDIO 模组,可查看内核实际注册的设备节点来获取模组的 VID 和 PID 号,其中WS73 模组默认值为 ffff:3733。


步骤 4: 先加载 plat_soc.ko,再根据需要加载 wifi_soc.ko、sle_soc.ko、ble_soc.ko(wifi、sle、ble 间无依赖关系,只要在 plat ko 后加载即可)。

Android 平台 WiFi 移植

驱动编译配置

编译工具链接需要提前配置环境变量,例如 export PATH=$PATH:/home/wifi/share/armlinux-gnueabihf/bin,路径根据实际情况配置。
使用不同工具链时,可能会导致编译过程中出现告警导致编译失败,可在相关驱动组件的Makefile 文件中修改编译选项。

步骤 1: 解压驱动源码包并配置编译参数。
将驱动源码包 WS73V100.tar.gz 置于服务器并进行解压,参考 2.2 编译 SDK 配置编译工具链、内核路径、CPU 架构等,命令如下:

$ tar -xzf WS73V100.tar.gz 
$ cd WS73V100

步骤 2: 完成配置后,执行 make all 命令编译驱动文件,在 output 生成目标文件:

$ make android

编译结果输出到”output”目录下,如表 3-1 所示。
表3-1 全量编译结果

原生软件及库文件配置

通过驱动编译配置已完成驱动的编译,可参考业务调试直接加载驱动,验证驱动功能是否正常。
本章以 Android 10 平台为例,介绍将 WS73 驱动代码移植到 Android 编译框架的方法,其他 Android 平台移植步骤与 Android 10 平台类似。各厂家文件路径存在差异,具体移植流程需要咨询对应主控平台厂家。
{vendor}:主控平台厂家名
{product}:主控平台厂家产品名

步骤 1: 进入 device/{vendor}/{product}/BoardConfig.mk,添加如下原生修改:

WPA_SUPPLICANT_VERSION := VER_0_8_X 
BOARD_WPA_SUPPLICANT_DRIVER := NL80211 
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd 
BOARD_HOSTAPD_DRIVER := NL80211 
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd 
BOARD_WLAN_DEVICE := bcmdhd

目前 Android 系统中 wpa_supplicant 软件对应的源码路径:external/wpa_supplicant_8,该软件使用的原生库文件为 libwifi-hal.so,对应 Android 源码路径:
frameworks/opt/net/wifi/libwifi_hal。
一般用户都会按照以上标识,写明使用的具体 wpa_supplicant 配置。如果不清楚用户是否真的使用原生配置,可在用户的代码路径 device/{vendor}/{product}下,搜索“BOARD_WPA_SUPPLICANT_DRIVER ”,打开对应的文件,查看用户使用的具体配置及lib 库,可执行“grep -rn BOARD_WPA_SUPPLICANT_DRIVER”进行搜索。

步骤 2: 进入 Android 根目录,可选择整编 Android 镜像或进入对应目录进行各模块编译:

# 整体编译 
$ source build/envsetup.sh 
$ lunch {product} 
$ make -j32 

# 模块编译 
$ source build/envsetup.sh 
$ lunch {product} 

# 编译wpa_supplicant对应的静态库lib_driver_cmd_bcmdhd.a 
$ cd hardware/broadcom/wlan/bcmdhd/wpa_supplicant_8_lib 
$ mm -j8 

# 编译wpa_supplicant可执行文件 
$ cd - 
$ cd external/wpa_supplicant_8 
$ mm -j8 

# 编译libwifi-hal对应的静态库libwifi-hal-bcm.a 
$ cd hardware/broadcom/wlan/bcmdhd/wifi_hal 
$ mm -j8 

# 编译libwifi-hal.so 
$ cd - 
$ cd frameworks/opt/net/wifi/libwifi_hal 
$ mm -j8

步骤 3: 获取原生软件及库文件:

  • wpa_supplicant 文件一般生成在 out/target/product/{product}/system/bin/或out/target/product/{product}/vendor/bin/hw/目录下。对应单板上的路径为system/bin 或/vendor/bin/hw。
  • libwifi-hal.so 文件一般生成在 out/target/product/{product}/vendor/lib64/或out/target/product/{product}/vendor/lib/目录下。对应单板上的路径为 vendor/lib64或 vendor/lib。

文件部署

根据平台上所使用的路径进行文件存放即可。一般情况为:

  • Android7.0 及以下版本使用的是/system 路径。
  • Android8.0 及以上版本使用的是/vendor 路径。

Android7.0 及以下版本

  • 驱动 ko 的路径会存放在/system/lib/modules 或/system/lib64/modules 目录下。
  • wpa_supplicant 会存放在/system/bin 目录下。
  • firmware 文件会存放在/system/etc/firmware 目录下。此路径与平台 uboot 中
    firmware_class.path 的设定有关,实际需要根据主控平台的路径确定。
  • ini 配置文件会存放在/system/etc/wifi 目录下。

Android8.0 及以上版本

  • 驱动 ko 的路径会存放在/vendor/lib/modules 或/vendor/lib64/modules 目录下。
  • wpa_supplicant 会存放在/vendor/bin/hw 目录下。
  • firmware 文件会存放在/vendor/firmware 目录下。此路径与平台 uboot 中
    firmware_class.path 的设定有关,实际需要根据主控平台的路径确定。
  • ini 配置文件会存放在/vendor/etc/wifi 目录下

业务调试

步骤 1: 将 WS73 所需的文件放至单板对应目录下,其中固件文件在 firmware 目录下,驱动文件在 output 目录下,如表 3-2 所示

步骤 2: 加载 Wi-Fi 驱动文件,命令如下:

insmod /vendor/lib/modules/plat_soc.ko 
insmod /vendor/lib/modules/wifi_soc.ko

步骤 3: 启动 wpa_supplicant,命令如下:

/vendor/bin/hw/wpa_supplicant -ip2p0 -Dnl80211 -c/data/vendor/wifi/wpa/p2p_supplicant.conf -
puse_p2p_group_interface=0 -N -iwlan0 -Dnl80211 -c/data/vendor/wifi/wpa/wpa_supplicant.conf -
O/data/vendor/wifi/wpa/sockets &

-O/data/vendor/wifi/wpa/sockets 也需要根据主控平台进行配置,一般在/data/vendor/wifi/wpa/sockets 或/data/misc/wifi/sockets 目录下。(注意:O,O 为大写)
wpa_supplicant.conf 与 p2p_supplicant.conf 的文件路径需要根据主控平台路径进行配置,一般在/data/vendor/wifi/wpa或/data/misc/wifi/目录下。

步骤 4 启动 wpa_cli,进行 Wi-Fi 扫描链接,命令如下:

  • 启动 wpa_cli

    wpa_cli -iwlan0 -p/etc/Wireless/wpa_supplicant
    
  • 启动 wpa_cli,执行扫描。
    a. 在“>”后执行“scan”命令,驱动扫描流程。
    b. 收到“CTRL-EVENT-SCAN-RESULTS”后,执行“scan_results”,获得扫描结果。

    > scan 
    > scan_results
    
  • 启动 wpa_cli,执行连接。
    a. 在“>”后执行“add_network”命令,该命令会返回一个数字,表示添加的网络 ID 号。
    b. 执行“set_network 网络 id ssid “AP 的 SSID””命令,配置网络 ID 的SSID。
    c. 执行“set_network 网络 id key_mgmt NONE”命令,配置网络 ID 的加密方式。
    d. 执行“select_network 网络 id”命令,选择并网络 ID 进行连接。
    e. 收到“CTRL-EVENT-CONNECTED”表示连接成功。

> add_network 
> set_network 0 ssid “sta-test” 
> set_network 0 key_mgmt WPA-PSK 
> set_network 0 psk “12345678” 
> select_network 0 
> q

图3-1 STA 链接过程

步骤 5: 配置 Android 原生流程
若步骤 1~步骤 4 均执行成功,则证明 Wi-Fi 驱动功能正常,接下来可以对 Android WiFi 启动流程进行配置。

  1. 根据主控平台,在 Android 上进行编译时,将步骤 1 中的驱动文件拷贝到步骤 1中单板对应的路径下。
  2. 根据主控平台,在 Android 上启动流程中加载 ko;一般可把步骤 2 加载驱动操作写到 device/{vendor}/{product}/init.{product}.rc 文件中。
  3. 根据主控平台,在 Android 上启动 wpa_supplicant。一般可把步骤 3 修改成如下规则,再写到 device/{vendor}/{product}/init.{product}.rc 文件中。
service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ 
 -ip2p0 -Dnl80211 -c/data/vendor/wifi/wpa/p2p_supplicant.conf \ 
 -e/data/misc/wifi/entropy.bin -puse_p2p_group_interface=0 -N \ 
 -iwlan0 -Dnl80211 -c/data/vendor/wifi/wpa/wpa_supplicant.conf \ 
 -O/data/vendor/wifi/wpa/sockets \
-g@android:wpa_wlan0 
 interface android.hardware.wifi.supplicant@1.0::ISupplicant default 
 interface android.hardware.wifi.supplicant@1.1::ISupplicant default 
 interface android.hardware.wifi.supplicant@1.2::ISupplicant default 
 class main 
 socket wpa_wlan0 dgram 660 wifi wifi 
 disabled 
 oneshot

步骤 6: 根据上述修改,编译出 Android 镜像,通过设置界面连接 Wi-Fi 即可。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
四叶草~
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区