欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Android13 WIFI调试(rtl8821cs)

Android13 WIFI调试(rtl8821cs)

2025/4/18 11:37:22 来源:https://blog.csdn.net/qq_53676406/article/details/147149153  浏览:    关键词:Android13 WIFI调试(rtl8821cs)

一、WiFi框架概述

1、Wi‑Fi 是一种无线通信技术,在 Linux 系统上一般可处于三种工作模式,分别是: STATION、AP、MONITOR。

station :工作sta模式,类比手机主动连网。

ap:工作ap模式,类比手机开热点。

monitor:工作 monitor 模式,类比抓包网卡。

2、从整体结构上 Wi‑Fi 可以分为设备端(Device)和主机端(Host);设备端主要是数据链路层的实现和接口管理,主机端主要是应用层和协议层的实现。

模组驱动移植主要所做的工作:供电使能,传输接口适配。

(1)供电使能:提供 WiFi 供电,使能操作。如果平台 WiFi 供电通过电源管理芯片,那么就需要配置电源管理芯片电源域进行使能 WiFi 的所需电;WiFi 芯片正常工作需要主控 soc 输出使能信号。

(2)传输接口适配:WiFi 通过通信接口与主控进行连接,常见的通信接口有 SDIO,USB,PCI,SPI 等。通信接口的驱动往往是由主控端提供,平台层需要提供通信接口初始化(如 SDIO 扫卡)、读、写等函数操作集合。一般情况下由于通信接口都是标准的 Linux API,所以往往模组原厂已经适配好了读写等操作的接口函数,平台适配可能仅仅需要配置平台差异就好,如选择使用 SDIO 接口,需要确定选择的 SDIO 卡号、扫卡函数等。

二、硬件连接

SDIO接口:
USB接口;

三、工作条件

1、SDIO

SDIO Wi‑Fi 模组工作的条件,如下图,需要满足以下几个条件:

(1)供电:一般有两路供电,其中 VCCWIFI 为主电源,VCCIOWIFI 为 IO 上拉电源。(需要特别留意,有时候设计可以两路电合并)

(2)使能:要能正常工作,需要 WLREGON 给高电平。(部分模组可能有时序要求,比如先拉高再拉低,再拉高)

(3)唤醒主控:当系统休眠时,Wi‑Fi 模组可通过 WLWAKEAP 的中断唤醒主控。(有些模组也通过该引脚来作为主控接收数据的中断)

(4)SDIO:与 SOC 的通信有通过 USB,SDIO 等,这里以 SDIO 为例,其中 SDIO 0~3 为 SDIO 的4 条数据线。

(5)次时钟 32.768Khz 信号:根据模组而定,有些模组内部通过(6)中的输入的 clk 进行分频得到,有些需要外部单独输入该信号。

(6)主时钟 24/26Mhz 信号。

2、USB

USB Wi‑Fi 模组工作的条件,如下图,需要满足以下几个条件:

(1)供电:一般只有一路电源,采用贴板的 USB 模组一般会使用 VCC‑WiFi 给模组供电,电源由软件配置开启。采用 USB 接口可拔插设计的 WiFi 模组一般使用 USB 供电,一般为常电,则无需使用软件配置开启电源。

(2)使能:要能正常工作,需要 WLREGON 给高电平。采用 USB 接口可拔插设计的 WiFi 模组可能无此引脚则无需配置。(部分模组可能有时序要求,比如先拉高再拉低,再拉高)

(3)唤醒主控:当系统休眠时,Wi‑Fi 模组可通过 WLWAKEAP 的中断唤醒主控。USB 模组一般使用 USB 唤醒无须配置,若模组特殊要求使用 GPIO 唤醒则需要配置。(需要特别留意,多数 USBWiFi 模组不支持休眠唤醒)

(4)USB:与 SOC 的通信有通过 USB,SDIO 等,这里以 USB 为例,其中 DP、DM 为 USB 的两条数据线。

四、移植步骤

1、内核驱动适配

(1)获取驱动源码

在新方案上移植一款 Wi‑Fi 模组时,可以先查看《支持列表》文档是否有类似方案支持该模组。如果没有支持,则需要跟模组原厂获取驱动资料包。拿到原厂提供的资料包需要仔细阅读模组原厂提供的材料,如:支持的通信接口类型 SDIO, 还是 USB;SDIO 是 2.0 还是 3.0;支持 2.4G 还是 5G甚至是双频等。

(2)添加 Kconfig 

路径:longan/bsp/drivers/net/wireless

添加内容如下:

(3)添加 Makefile

路径:longan/bsp/drivers/net/wireless

添加内容如下:

(4)内核配置对应选项

路径:longan/device/config/chips/t527/configs/xxx/linux-5.15/android13_arm64_defconfigCONFIG_RTL8821CS=y

(5)DTS

longan/bsp/configs/linux-5.15/sun55iw3p1.dtsi

内容如下:

board.dts

以下所有项必须参看原理图进行配置,配置与原理图实际使用的资源保持一致;最好是和硬件同事一起确认,比如有些设计供电可能是没有 axp 的,硬件直接供电了,所以不需要配置,特别注意的就是 sdio 的配置。

&rfkill {compatible = "allwinner,sunxi-rfkill";chip_en;power_en;pinctrl-0;pinctrl-names;status = "okay";/* wlan session */wlan {compatible    = "allwinner,sunxi-wlan";clocks;clock-names;wlan_power    = "axp2202-dcdc4", "axp2202-bldo1"; /* vcc-pl/vcc-pg/vcc-pm */wlan_power_vol= <3300000>, <1800000>;wlan_busnum   = <0x1>;wlan_regon    = <&r_pio PM 1 GPIO_ACTIVE_HIGH>;wlan_hostwake = <&r_pio PM 0 GPIO_ACTIVE_HIGH>;wakeup-source;};/* bt session */bt {compatible    = "allwinner,sunxi-bt";clocks;clock-names;bt_power    = "axp2202-dcdc4", "axp2202-bldo1"; /* vcc-pl/vcc-pg/vcc-pm */bt_power_vol= <3300000>, <1800000>;bt_rst_n      = <&r_pio PM 2 GPIO_ACTIVE_LOW>;};
};

属性说明:

wlan_busnum :表示 WiFi 所使用的 SDIO 控制器号

wlan_power :表示给 WiFi 模组供电的 regulator 名称

wlan_power_vol :表示 WiFi 模组需要使用到的电的电压

wlan_regon :表示给 WiFi 模组的 GPIO 供电的 regulator 名称

wlan_hostwake :表示 WiFi 唤醒主控的 GPIOchip_en 表示 WiFi 模组使能引脚,硬件未使用时不配置

power_en :表示模块外部的电源开关控制引脚

(6)驱动

驱动路径:

longan/bsp/drivers/net/wireless/rtl8821cs

驱动内容:

SDIO_ID=024C:C821
路径:longan/bsp/drivers/net/wireless/rtl8821cs/os_dep/linux/sdio_intf.c

对应的SDIO组别

2、Android 配置

(1)BoardConfig.mk

文件路径:android/device/softwinner/saturn/{DEVICE}/BoardConfig.mk

BoardConfig.mk 文件决定 android 要加载哪一款 Wi‑Fi 模组,以及是否支持蓝牙。

(2)Android Wi‑Fi/BT 配置项说明

BOARD_WIFI_VENDOR :Wi‑Fi 模组厂商
BOARD_USR_WIFI :Wi‑Fi 模组型号
WIFI_DRIVER_MODULE_PATH :Wi‑Fi 驱动 ko 的路径
WIFI_DRIVER_MODULE_NAME :Wi‑Fi 驱动名称 (加载驱动后 lsmod 的名字)
WIFI_DRIVER_MODULE_ARG :Wi‑Fi 驱动加载所需参数
BOARD_BLUETOOTH_VENDOR :蓝牙模组厂商
BOARD_HAVE_BLUETOOTH_NAME :蓝牙模组型号

3、编译烧录

编译问题未进行记录,本驱动已经解决,可直接使用。

若出现下述问题,编译为ko文件,重定义问题会避免

五、验证说明

1、SDIO总线识别

2、驱动加载

日志信息:
 dmesg |grep RTW
[    4.268562] sunxi-rfkill soc@3000000:rfkill: RTW wlan_data end
[    9.390946] RTW: module init start
[    9.398262] RTW: rtl8821cs v5.14.2.1-48-g54206815b.20221004_COEX20210319-5555
[    9.413366] RTW: build time: Mar 17 2025 22:07:27
[    9.424323] RTW: rtl8821cs BT-Coex version = COEX20210319-5555
[    9.591165] RTW: module init ret=0
[    9.808791] RTW: == SDIO Card Info ==
[    9.825226] RTW:   card: (____ptrval____)
[    9.825230] RTW:   clock: 50000000 Hz
[    9.825232] RTW:   timing spec:
[    9.863329] RTW:   sd3_bus_mode: TRUE
[    9.863331] RTW:   func num: 1
[    9.863334] RTW:   func1: (____ptrval____) (*)
[    9.884046] RTW: ================
[    9.884101] RTW: [HALMAC]55772M
[    9.966339] RTW:
[    9.983050] RTW: 0x000: 29 81 00 BC  09 10
[   10.017357] RTW: 0x010: FF FF FF FF  FF FF FF FF  FF FF FF 02  FF FF FF FF
[   10.145630] RTW: 0x020: FF FF 2A 2A  2A 2A 2A 2A  2A 2A 2A 2A  30 2E 2C 2B
[   10.155078] RTW: 0x030: 02 FF FF FF  FF FF 00 FF  FF FF 25 25  25 25 25 25
[   10.163006] RTW: 0x040: 2C 2C 2C 2C  2C 14 FF FF  FF FF FF FF  FF FF FF FF
[   10.170928] RTW: 0x050: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.178850] RTW: 0x060: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.187100] RTW: 0x070: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.196333] RTW: 0x080: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.204250] RTW: 0x090: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.212173] RTW: 0x0A0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.220085] RTW: 0x0B0: FF FF FF FF  FF FF FF FF  7F 2F 1B 00  FF FF FF FF
[   10.228018] RTW: 0x0C0: FF 21 00 41  00 00 00 00  00 FF 02 FF  FF FF FF FF
[   10.235939] RTW: 0x0D0: 7E D1 01 23  34 FF FF FF  20 04 4C 02  21 C8 21 02
[   10.243868] RTW: 0x0E0: 0C 00 22 04  00 08 00 32  FF 21 02 0C  00 22 2A 01
[   10.243894] RTW: 0x0F0: 01 00 00 00  00 00 00 00  00 00 00 00  02 00 FF FF
[   10.243919] RTW: 0x100: 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00
[   10.243944] RTW: 0x110: 00 EB 00 6E  01 00 00 00  00 FF DC 0D  30 96 08 B4
[   10.243970] RTW: 0x120: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.243995] RTW: 0x130: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244021] RTW: 0x140: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244047] RTW: 0x150: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244072] RTW: 0x160: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244098] RTW: 0x170: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244124] RTW: 0x180: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244149] RTW: 0x190: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244175] RTW: 0x1A0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244201] RTW: 0x1B0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244226] RTW: 0x1C0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244252] RTW: 0x1D0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244278] RTW: 0x1E0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244303] RTW: 0x1F0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[   10.244390] RTW: rtw_rfctl_decide_init_chplan chplan:0x7F
[   10.247813] RTW: MAC dc 0d
[   10.332633] RTW: c2h_mac_hidden_rpt_hdl: 0x0D
[   10.436853] RTW: c2h_mac_hidden_rpt_hdl: 0x14
[   10.436856] RTW: c2h_mac_hidden_rpt_hdl: 0x13
[   10.436858] RTW: c2h_mac_hidden_rpt_hdl: 0xBC
[   10.436861] RTW: c2h_mac_hidden_rpt_hdl: 0xF6
[   10.436863] RTW: c2h_mac_hidden_rpt_hdl: 0xFF
[   10.436865] RTW: c2h_mac_hidden_rpt_hdl: 0x37
[   10.436867] RTW: c2h_mac_hidden_rpt_hdl: 0xFF
[   10.436869] RTW: uuid x:0x0d y:0x14 z:0x13 crc:0x5e0
[   10.436872] RTW: hci_type:0x6
[   10.436874] RTW: package_type:0x7
[   10.436876] RTW: tr_switch:0x1
[   10.436878] RTW: wl_func:0xf
[   10.436879] RTW: hw_stype:0xf
[   10.436881] RTW: bw:0x7
[   10.436883] RTW: ant_num:0x1
[   10.436884] RTW: protocol:0x3
[   10.436886] RTW: nic:0x3
[   10.436890] RTW: c2h_mac_hidden_rpt_2_hdl: 0xFF
[   10.510754] RTW: c2h_mac_hidden_rpt_2_hdl: 0xFF
[   10.510757] RTW: c2h_mac_hidden_rpt_2_hdl: 0xF8
[   10.510760] RTW: c2h_mac_hidden_rpt_2_hdl: 0xFC
[   10.510762] RTW: c2h_mac_hidden_rpt_2_hdl: 0xFF
[   10.516035] RTW: [RF_PATH] ver_id.RF_TYPE:RF_1T1R
[   10.516040] RTW: [RF_PATH] HALSPEC's rf_reg_trx_path_bmp:0x11, rf_reg_path_avail_num:1, max_tx_cnt:1
[   10.516044] RTW: [RF_PATH] PG's trx_path_bmp:0x00, max_tx_cnt:0
[   10.516046] RTW: [RF_PATH] Registry's trx_path_bmp:0x00, tx_path_lmt:0, rx_path_lmt:0
[   10.516049] RTW: [RF_PATH] HALDATA's trx_path_bmp:0x11, max_tx_cnt:1
[   10.516051] RTW: [RF_PATH] HALDATA's rf_type:RF_1T1R, NumTotalRFPath:1
[   10.516055] RTW: [TRX_Nss] HALSPEC - tx_nss:1, rx_nss:1
[   10.516057] RTW: [TRX_Nss] Registry - tx_nss:0, rx_nss:0
[   10.516059] RTW: [TRX_Nss] HALDATA - tx_nss:1, rx_nss:1
[   10.516062] RTW: txpath=0x1, rxpath=0x1
[   10.516064] RTW: txpath_1ss:0x1, num:1
[   10.516605] RTW: ADAPTIVITY_VERSION 9.7.08
[   10.516611] RTW: RTW_ADAPTIVITY_EN_ENABLE
[   10.516616] RTW: RTW_ADAPTIVITY_MODE_NORMAL
[   10.516659] RTW: rtw_regsty_chk_target_tx_power_valid return _FALSE for band:0, path:0, rs:0, t:-1
[   10.517570] RTW: ERROR retriveFromFile() Fail. retrieve file : PHY_REG_PG.txt, error : -2
[   10.517573] RTW: ERROR retriveFromFile() Fail. retrieve file : /vendor/etc/firmware/PHY_REG_PG.txt, error : -2
[   10.517615] RTW: ERROR retriveFromFile() Fail. retrieve file : TXPWR_LMT.txt, error : -2
[   10.517618] RTW: ERROR retriveFromFile() Fail. retrieve file : /vendor/etc/firmware/TXPWR_LMT.txt, error : -2
[   10.518142] RTW: default mapping domain to txpwr_lmt:WW
[   10.521792] RTW: rtw_ndev_init(wlan0) if1 mac_addr=dc:0d:30:96:08:b4
[   10.708382] RTW: rtw_ndev_init(p2p0) if2 mac_addr=de:0d:30:96:08:b4
[   13.579617] RTW: MAC dc 0d
[   15.387802] RTW: wlan0 - hw_port : 0,will switch to port-1
[   16.935207] RTW: wlan0- hw port(1) mac_addr =dc:0d:30:96:08:b4
[   16.941920] RTW: p2p0- hw port(0) mac_addr =de:0d:30:96:08:b4
[   17.121276] RTW: assoc success
[   17.133251] RTW: set group key camid:0, addr:de:0d:30:96:08:b4, kid:1, type:TKIP

3、网络设备

ifconfig -a

4、连接测试

打开Android 设置 internet部分进行wifi搜索连接

连接时导致内核崩溃:

错误分析

  • halrf_iqk_dbg+0x558/0x55c [8821cs] 表明错误发生在无线驱动程序(8821cs)的 halrf_iqk_dbg 函数中,通常与无线电频率校准(IQK)调试相关。

  • phy_iq_calibrate_8821c+0x284/0x3ec 显示了调用栈中的另一个函数,涉及到 8821c 无线芯片的 IQ 校准。

能否关闭IQ校准?

路径:longan/bsp/drivers/net/wireless/rtl8821cs/hal/phydm/halrf/rtl8821c/halrf_iqk_8821c.c:3542

注释 halrf_iqk_dbg(dm)

#if (DM_ODM_SUPPORT_TYPE & ODM_AP)_iqk_iqk_fail_report_8821c(dm);  // 如果支持 AP 模式,调用 IQK 错误报告函数
#endif// halrf_iqk_dbg(dm);  // 调用 IQK 调试函数if (!(*dm->mp_mode))_iqk_check_coex_status(dm, false);  // 如果不在 MP 模式,检查协同工作状态RF_DBG(dm, DBG_RF_IQK, "[IQK]final 0x49c = %x\n", odm_read_1byte(dm, 0x49c));  // 打印调试信息

修改后可以正常连接

注释掉了halrf_iqk_dbg(dm);,问题解决。这说明该函数内部存在导致崩溃的代码,定位halrf_iqk_dbg函数的实现

代码路径:longan/bsp/drivers/net/wireless/rtl8821cs/hal/phydm/halrf/halrf.c +380

修复了位操作错误RF路径越界访问的问题,并添加了必要的空指针检查硬件兼容性判断

void halrf_iqk_dbg(void *dm_void)
{struct dm_struct *dm = (struct dm_struct *)dm_void;u8 rf_path, j, max_rf_path;u32 tmp;/* two channel, PATH, TX/RX, 0:pass 1 :fail */boolean iqk_result[2][NUM][2];struct dm_iqk_info *iqk_info = &dm->IQK_info;struct _hal_rf_ *rf = &dm->rf_table;/* 新增:空指针检查 */if (!dm->channel || !dm->band_width) {RF_DBG(dm, DBG_RF_IQK, "Invalid channel/bandwidth info\n");return;}/* IQK INFO */RF_DBG(dm, DBG_RF_IQK, "%-20s\n", "====== IQK Info ======");/* 动态确定最大RF路径 */max_rf_path = RF_PATH_A; // 默认单路径
#if (RTL8822B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1)if (dm->support_ic_type & (RTL8822B | RTL8822C | RTL8814B))max_rf_path = RF_PATH_B; // 双路径芯片
#endifRF_DBG(dm, DBG_RF_IQK, "%-20s\n",(dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) ? "FW-IQK" :"Driver-IQK");if (dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) {halrf_get_fw_version(dm);RF_DBG(dm, DBG_RF_IQK, "%-20s: 0x%x\n", "FW_VER", rf->fw_ver);} else {RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "IQK_VER", HALRF_IQK_VER);}RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "reload",(iqk_info->is_reload) ? "True" : "False");RF_DBG(dm, DBG_RF_IQK, "%-20s: %d %d\n", "iqk count / fail count",dm->n_iqk_cnt, dm->n_iqk_fail_cnt);RF_DBG(dm, DBG_RF_IQK, "%-20s: %d\n", "channel", *dm->channel);if (*dm->band_width == CHANNEL_WIDTH_20)RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "bandwidth", "BW_20");else if (*dm->band_width == CHANNEL_WIDTH_40)RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "bandwidth", "BW_40");else if (*dm->band_width == CHANNEL_WIDTH_80)RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "bandwidth", "BW_80");else if (*dm->band_width == CHANNEL_WIDTH_160)RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "bandwidth", "BW_160");else if (*dm->band_width == CHANNEL_WIDTH_80_80)RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "bandwidth", "BW_80_80");elseRF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "bandwidth","BW_UNKNOWN");RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "rfk_forbidden",(iqk_info->rfk_forbidden) ? "True" : "False");
#if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || \RTL8821C_SUPPORT == 1 || RTL8195B_SUPPORT == 1 ||\RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1||\RTL8814C_SUPPORT == 1)RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "segment_iqk",(iqk_info->segment_iqk) ? "True" : "False");
#endifRF_DBG(dm, DBG_RF_IQK, "%-20s: %llu %s\n", "progressing_time",dm->rf_calibrate_info.iqk_progressing_time, "(ms)");/* 新增:仅在支持相关寄存器的芯片上访问 */
#if (RTL8822B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 || RTL8814B_SUPPORT == 1)if (dm->support_ic_type & (RTL8822B | RTL8822C | RTL8814B)) {tmp = odm_read_4byte(dm, 0x1bf0);for (rf_path = RF_PATH_A; rf_path <= max_rf_path; rf_path++) {for (j = 0; j < 2; j++) {/* 修正位操作:移除错误右移 */iqk_result[0][rf_path][j] = (boolean)((tmp & BIT(rf_path + (j * 4))) != 0);}}RF_DBG(dm, DBG_RF_IQK, "%-20s: 0x%08x\n", "Reg0x1bf0", tmp);RF_DBG(dm, DBG_RF_IQK, "%-20s: 0x%08x\n", "Reg0x1be8",odm_read_4byte(dm, 0x1be8));RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "PATH_A-Tx result",(iqk_result[0][RF_PATH_A][0]) ? "Fail" : "Pass");RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "PATH_A-Rx result",(iqk_result[0][RF_PATH_A][1]) ? "Fail" : "Pass");
#if (RTL8822B_SUPPORT == 1 || RTL8822C_SUPPORT == 1)if (max_rf_path >= RF_PATH_B) {RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "PATH_B-Tx result",(iqk_result[0][RF_PATH_B][0]) ? "Fail" : "Pass");RF_DBG(dm, DBG_RF_IQK, "%-20s: %s\n", "PATH_B-Rx result",(iqk_result[0][RF_PATH_B][1]) ? "Fail" : "Pass");}
#endif}
#endif
} /* halrf_iqk_dbg */

4、联网测试

5、Android AP设置

设置后手机可正常搜索连接
至此。WIFI调试结束,功能正常!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词