目标

在3.2release上完成rlt8822ES芯片的适配,并使WiFi相关xts用例success。

一、驱动移植编译

此适配的主芯片为海思的平台为例

1. 把rlt8822ES芯片的WIFI驱动放在kernel\linux\linux-5.10\drivers\net\wireless\realtek目录下;

2. 在 kernel\linux\linux-5.10\drivers\net\wireless\realtek\Kconfig中添加

source "drivers/net/wireless/realtek/rtw8822es/Kconfig"

3. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\Makefile中增加

obj-$(CONFIG_RTW88)		+= rtw8822es/

4. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtl8822es\Makefile中

112行的CONFIG_RTW_LOG_LEVEL = 4修改为CONFIG_RTW_LOG_LEVEL = 0

138行的CONFIG_RTW_SDIO_PM_KEEP_POWER = y修改为CONFIG_RTW_SDIO_PM_KEEP_POWER = n //根据是否待机状态修改

153行的CONFIG_PLATFORM_I386_PC = y修改为CONFIG_PLATFORM_I386_PC = n

208行的CONFIG_PLATFORM_HISILICON = n修改为CONFIG_PLATFORM_HISILICON = y //此处芯片平台修改

2204行到2038行修改如下 //此处芯片平台修改对应的配置

ifeq ($(CONFIG_PLATFORM_HISILICON), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN 
EXTRA_CFLAGS += -DCONFIG_PLATFORM_HISILICON
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 
EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P
EXTRA_CFLAGS += -DCONFIG_HISI_CFI
KSRC := $(LINUX_DIR)
ARCH := $(CFG_HI_CPU_ARCH)
CROSS_COMPILE := $(HI_KERNEL_TOOLCHAINS_NAME)-

CONFIG_RTL8822ES := m
MODULE_NAME := rtl8822eS
endif

5.  找到对应的xxx_deconfig,加上对应的

CONFIG_RTL8822ES := m

 修改完以上文件后,用OH工具链编译看是否编译通过;

二、修改OH中配置文件

1. 在third_party\wpa_supplicant\wpa_supplicant-2.9_standard\BUILD.gn中

19到23行修改为

declare_args() {
  wpa_supplicant_driver_nl80211_hisi = ture    //此处false改为ture
  wpa_supplicant_driver_nl80211 = ture         //此处false改为ture
  wpa_supplicant_ohos_certmgr = true
}

2.  修改对应的device\board\xxx\xxx\cfg\init.xxx.cfg文件

   }, {
            "name" : "fs",
            "cmds" : [
            	xxx
                "insmod /vendor/lib/modules/rlt8822es.ko ifname=wlan0 if2name=p2p0",
            ]
        }, {

3.  在vendor\xxx\...\BUILD.gn

sdk_module_name_list = {
	xxx,
	"rlt8822es.ko"
}

注意:此时一般需要把out\kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtl8822es\rtl8822es.ko  cp到对应的位置

通过2.3步骤后.ko文件在开机后就加载完成,此时用WPA命令测试是否wifi功能是否正常。

三、修改源代码过xts

备注:此处修改需根据日志定位情况修改,不同wifi芯片修改方案不相同

1. 在foundation\communication\wifi\wifi\services\wifi_standard\wifi_hal\etc\init\p2p_supplicant.conf中增加

p2p_no_group_iface=1

 2. 在foundation\communication\wifi\wifi\services\wifi_standard\wifi_hal\wifi_hal_module\wpa_supplicant_hal\wifi_wpa_hal.c中

将148行的else if (strncmp(retMsg.key, "p2p-", strlen("p2p-")) == 0) {  修改为

else if (strncmp(retMsg.key, "p2p", strlen("p2p")) == 0) {    //将p2p-修改为p2p

 3. 在foundation\communication\wifi\wifi\services\wifi_standard\wifi_hal\wifi_hal_module\wpa_supplicant_hal\wifi_wpa_hal.c中761行增加freq = 0 ;

    char cmd[P2P_CMD_BUF_LENGTH] = {0};
    int res;
    freq = 0 ;                      //761行,芯片不支持5G 5745MHz,修改为0后默认走2.4G 2437MHz
    if (isPersistent) {

4. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtw8822es\core\rtw_mlme_ext.c中

7393行~7395行的代码剪切到7421行到7423行,修改后的代码如下

#endif /* CONFIG_P2P */
#ifdef CONFIG_RTW_MBO                                    
		rtw_mbo_build_beacon_ies(padapter, &pframe, pattrib);
#endif
#ifdef CONFIG_RTW_REPEATER_SON

7732行~7734行的代码剪切到7764行到7766行,修改后的代码如下

#endif /* CONFIG_P2P */

#ifdef CONFIG_RTW_MBO
	rtw_mbo_build_probe_rsp_ies(padapter, &pframe, pattrib);
#endif
#ifdef CONFIG_AUTO_AP_MODE

5.  在kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtw8822es\os_dep\linux\ioctl_cfg80211.c中5560和5561增加

5558	ret = rtw_add_beacon(adapter, settings->beacon.head, settings->beacon.head_len,
5559		settings->beacon.tail, settings->beacon.tail_len);
5560
    	rtw_cfg80211_set_mgnt_wpsp2pie(ndev, settings->beacon.beacon_ies, settings->beacon.beacon_ies_len, 1);
    	rtw_cfg80211_set_mgnt_wpsp2pie(ndev, settings->beacon.proberesp_ies, settings->beacon.proberesp_ies_len, 2);
5561#ifdef CONFIG_RTW_80211R_AP

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐