总体方案
WiFi在现在电子设备中,已经是一个不可或缺的功能了,不论是windows 或者Linux系统,都可以通过WiFi来链接网络,达到上网的目的。基于OpenHarmony的开发板,是需要进行WiFi驱动适配,才能使用WiFi功能,达到上网目的。
概述:
基于HDF WLAN的框架规范,实现HDF驱动初始化接口、WLAN控制侧接口集、AP模式接口集、STA模式接口集、网络侧接口集、事件上报接口等主要接口,改造AP6275P WIFI6原生内核驱动代码,并使用wpa_supplicant和hostapd应用程序通过HDF WIFI框架与WIFI驱动进行交互,实现AP模式、STA模式、P2P三种主流模式下WIFI功能。
1.硬件组成
RK系列 EVB主板中SoC芯片为RKXXX,WIFI芯片为AP6275P,使用PCIE总线抽象接口。
图1-1 RKXXX EVB系统框图
图1-2 AP6275P系统框图
2.HDF-WIFI框架
图1-3 HDF WIFI框架总体框图
3.AP6275P驱动原生代码流程分析
图1-4 AP6275P驱动原生代码流程图
4.AP6275P驱动适配HDF WIFI框架代码流程分析
图1-5 AP6275P驱动适配HDF WIFI框架代码流程图
配置过程与步骤
基于RK系列HDF-WiFi驱动适配指南-总体方案介绍,已经明确需要进行改造AP6275P WiFi6原生内核驱动代码,并使用wpa_supplicant和hostapd应用程序通过HDF WiFi框架与WiFi驱动进行交互,实现AP模式、STA模式、P2P三种主流模式下WiFi功能。
概述:
对于系统WIFI功能的使用,需要实现AP模式、STA模式、P2P三种主流模式。这里使用wpa_supplicant应用程序通过HDF WiFi框架与WiFi驱动进行交互,实现STA模式和P2P模式的功能,使用hostapd应用程序通过HDF WiFi框架与WiFi驱动进行交互,实现AP模式和P2P模式的功能。AP6275P WiFi6内核驱动依赖platform能力,主要包括PCIE总线的通讯能力;与用户态通信依赖HDF WiFi框架的能力。在确保上述能力功能正常后,即可开始本次WiFi驱动的HDF适配移植工作,适配过程主要包括代码整改过程和参数配置过程,具体有以下步骤
1.硬件组成设置WIFI驱动固件目录
device/soc/rockchip/hardware/wifi
├── ap6xxx
│ ├── clm_bcm43752a2_pcie_ag.blob
│ ├── fw_bcm43752a2_pcie_ag_apsta.bin
│ ├── fw_bcm43752a2_pcie_ag.bin
│ ├── fw_bcm43752a2_pcie_ag_mfg.bin
│ └── nvram_AP6275P.txt
├── BUILD.gn
2.设置WIFI驱动源码目录
2.1 原生驱动与在其中增加以及修改的代码文件位于:
device/board/rockchip/rk3588/wifi/bcmdhd_wifi6
注:在master分支中,原生代码由kernel.patch生成在out/kernel/src_tmp/linux-5.10/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd_wifi6中,这里通过直接复制过来将所有代码放一起使用。
2.2 增加以及修改的代码文件:
<span class="code-snippet_outer"><span>.</span></span>
├── hdfadapt<span class="code-snippet_outer"><span>│ ├── hdf_bdh_event.c</span></span>
│ ├── hdf_bdh_event.h<span class="code-snippet_outer"><span>│ ├── hdf_bdh_mac80211.c</span></span>
│ ├── hdf_driver_bdh_register.c<span class="code-snippet_outer"><span>│ ├── hdfinit_bdh.c</span></span>
│ ├── hdf_wl_interface.h<span class="code-snippet_outer"><span>│ ├── net_bdh_adpater.c</span></span>
│ ├── net_bdh_adpater.h<span class="code-snippet_outer"><span>├── hdf_public_ap6275s.h</span></span>
├── rk_wifi_config.c``
其中hdf_bdh_mac80211.c主要对g_bdh6_baseOps所需函数的填充,包括对g_bdh6_staOps、g_bdh6_apOps和g_bdh6_p2pOps所需函数进行填充;
在drivers/framework/include/wifi/wifi_mac80211_ops.h里有对WiFi基本功能所需api的说明。
3.编写WiFi驱动文件
HDF WLAN驱动框架由Module、NetDevice、NetBuf、BUS、HAL、Client 和 Message 这七个部分组成。开发者在WiFi驱动HDF适配过程中主要实现以下几部分功能:
3.1 适配HDF WLAN框架的驱动模块初始化
3.2 HDF WLAN Base控制侧接口的实现
3.3 HDF WLAN STA模式接口的实现
3.4 HDF WLAN AP模式接口的实现
3.5 HDF WLAN P2P模式接口的实现
3.6 HDF WLAN框架事件上报接口的实现
4.配置WIFI编译文件
5.配置WIFI构建文件
6.Foundation层增加产品名宏条件
总结
结合RKXXX EVB HDF WiFi驱动适配的总体方案,并且经过配置操作,HDF-WIFI驱动适配已经完成,实现了AP模式、STA模式、P2P三种主流模式下WiFi功能。