一文搞定RK平台Wi-Fi/BT调试!从配置到问题解决全攻略

电子说

1.4w人已加入

描述

 

 

在嵌入式 Linux 开发中,瑞芯微(Rockchip)平台的 Wi-Fi 与蓝牙调试是许多工程师的核心需求。无论是 RK3588RK356X 等主流芯片,还是 RV1106/1103 等 IPC 专用芯片,Wi-Fi/BT 的稳定运行直接影响产品体验。本文从配置、编译、测试到问题排查,手把手带你搞定 RK 平台 Wi-Fi/BT 调试。

 

 

一、先搞懂:RK 平台支持哪些芯片与模块?

 

在开始调试前,先确认你的硬件与系统是否在支持范围内,避免做无用功。

 

 

1. 支持的芯片与内核版本

 

不同芯片对应不同 Linux 内核版本,配置时需精准匹配:

 

 

芯片系列

 

 

支持内核版本

 

 

RK356X/RK3399/RK3288/RK3326/RK3308/RV1109/RV1126/PX30

 

 

Linux 4.4/4.19

 

 

RK3588/RK356X/RK3399/RV1106/RV1103

 

 

Linux 5.10

 

 

2. 支持的 Wi-Fi/BT 模块

 

相关 SDK 默认支持主流模块,无需额外移植即可直接使用,常见型号如下:

 

 

正基(AP新思系列AP6275AP6358SAP6212AP6236 等(含 Wi-Fi+BT 二合一)

 

 

Realtek 系列RTL8723DSRTL8822CSRTL8188FURTL8189FSRTL8821CSRTL8852BS 等(Wi-Fi 单独 二合一)

 

 

英飞凌(Cypress / 海华)系列CYW4354CYW43438CYW5557XCYW5557X_PCIECYW54591CYW54591_PCIE 

 

 

国产模块:爱科微(AIC)、高拓(ATBM)等(需从指定 FTP 获取支持文件)

 

 

二、核心步骤:Wi-Fi/BT 配置与编译

 

配置是调试的基础,需从SDK 配置→DTS 配置内核配置三步完成,每一步都不能错!

 

 

1. SDK 配置:指定芯片与模块型号

 

首先通过脚本指定芯片型号,再配置 Wi-Fi/BT 模块类型:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 配置芯片型号(以RK3588为例)./build.sh chip rk3588# 2. 修改默认配置文件(路径:SDK_ROOT/device/rockchip/对应芯片目录)# 示例:rk3588/rockchip_rk3588_evb1_lp4_v10_defconfigRK_WIFIBT_CHIP="ALL_AP"  # 支持所有正基模块;ALL_CY支持所有英飞凌模块RK_KERNEL_DTS_NAME="rk3588-evb1-ddr4-v10-linux"  # 对应DTS文件名# 3. 精细化选择模块(可选,替代ALL_AP/ALL_CY)# 打开内核配置界面,搜索RK_WIFIBT_CHIP,选择具体型号(如AP6275/RTL8822CS)make menuconfig

其中,RK_WIFIBT_CHIP的配置需根据实际模块选择,除了ALL_APALL_CY,还可直接指定具体型号,如AP6275_PCIECYW4354RTL8723DS等,具体支持的型号可在device/rockchip/common/scripts/post-wifibt.sh文件中查询。

 

 

2. DTS 配置:硬件接口的 桥梁

 

DTS(设备树)是硬件与内核的 翻译官,需根据 Wi-Fi/BT 接口类型(SDIO/USB/PCIE)配置,核心是电源脚、复位脚、中断脚的匹配。

 

 

1SDIO 接口 Wi-Fi 配置(最常用)

 

支持标准框架(推荐,统一电源管理)和 传统框架(支持多次加载卸载),这里以正基模块为例展示标准框架配置:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
// 1. 电源序列配置(SDIO_PWRSEQ)sdio_pwrseq: sdio-pwrseq {    compatible = "mmc-pwrseq-simple";    pinctrl-names = "default";    pinctrl-0 = <&wifi_enable_h>;  // 电源使能引脚    reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;  // WL_REG_ON(参考原理图,别名可能为WIFI_REG_ON)    post-power-on-delay-ms = <200>;  // 上电后延迟(确保稳定,默认禁用可按需开启)};// 2. 引脚配置(PINCTRL)&pinctrl {    sdio-pwrseq {        wifi_enable_h: wifi-enable-h {            rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;        };    }};// 3. SDIO控制器配置&sdio {    max-frequency = <150000000>;  // 最高频率(SDIO 3.0支持150M,SDR104模式最高200MHz)    bus-width = <4>;  // 4线模式    cap-sd-highspeed;  // 支持SD高速时序    cap-sdio-irq;  // 使能SDIO中断信号    non-removable;  // 非可移除设备(Wi-Fi模块焊接在板上)    mmc-pwrseq = <&sdio_pwrseq>;  // 关联电源序列    status = "okay";};// 4. Wi-Fi节点配置wireless-wlan {    compatible = "wlan-platdata";    rockchip,grf = <&grf>;    clocks = <&rk809 1>;  // 32.768K时钟(参考原理图,也可能为hym8563)    clock-names = "ext_clock";    wifi_chip_type = "ap6255";  // 模块型号    WIFI,host_wake_irq = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;  // 唤醒引脚,需确认硬件连接是否带反向管    status = "okay";};

标准框架中,WiFi 的 REG_ON 由 mmc 框架统一管理,优点是电源控制集中,缺点是不支持 SDIO card 重新识别;传统框架中,WiFi 的 REG_ON net/rfkill/rfkill-wlan.c控制,支持多次rmmod/insmodWiFi 驱动,但需打 KO 模式补丁。

 

 

2)蓝牙配置(UART 接口最常用)

 

蓝牙需配置 UART 引脚(TX/RX/RTS/CTS)和电源脚,RTS/CTS 必须按要求连接,否则会出现初始化异常

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
// 1. 蓝牙节点配置wireless-bluetooth {    compatible = "bluetooth-platdata";    uart_rts_gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>;  // RTS引脚,部分蓝牙芯片CTS上电前需低电平    pinctrl-names = "default""rts_gpio";    pinctrl-0 = <&uart4_rts>;    pinctrl-1 = <&uart4_rts_gpio>;    BT,power_gpio = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;  // BT_REG_ON(电源脚)    // Linux平台下,BT,wake_host_irq和BT,wake_gpio无需配置    status = "okay";};// 2. UART控制器配置(以UART4为例)&uart4 {    pinctrl-names = "default";    pinctrl-0 = <&uart4_xfer &uart4_ctsn>;  // TX/RX/CTS引脚,无需配置RTS引脚    status = "okay";};// 3. UART RTS GPIO配置&pinctrl {    wireless-bluetooth {        uart4_rts_gpio: uart4-rts-gpio {            rockchip,pins = <4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;        };    }};

需注意,不同平台 UART 相关引脚命名可能不同,例如uart4_ctsn在部分平台可能名为uart4_cts,需在对应芯片平台的 dts/dtsi 中确认。

 

 

3IO 电源域配置(关键!SDIO3.0 必看)

 

SDIO3.0 的设备务必使用 1.8V 供电,需根据硬件实际供电情况配置 IO 电源域:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
// 不同平台io_domains名字可能不同,部分为&pmu_io_domains&io_domains {    // VDDIO3_VDD引用vcc_1v8的电压,若硬件接3.3V则改为vcc_3v3,名称需按实际dts/dtsi调整    vccio3-supply = <&vcc_1v8>;};vcc_1v8: vcc-1v8 {    compatible = "regulator-fixed";    regulator-name = "vcc_1v8";    regulator-always-on;    regulator-boot-on;    regulator-min-microvolt = <1800000>;  // 1.8V供电    regulator-max-microvolt = <1800000>;    vin-supply = <&vcc_io>;};

4USB/PCIE 接口配置(简要)

 

USB Wi-Fi:需先参考docs/Common/USB/下的相关文档配置 USB 控制器为 HOST 模式,Wi-Fi 节点配置分两种情况:若内核.config打开CONFIG_RFKILL/CONFIG_RFKILL_RK,则在wireless-wlan节点配置WIFI,poweren_gpio;若未打开,则通过regulator-fixed节点配置WIFI_REG_ON引脚。

 

 

PCIE Wi-Fi:需先参考docs/Common/PCIe/下的相关文档,配置 PCIE 控制器、PHY 及复位脚(reset-gpios),关键是确认VBAT/VCC3V3(长供电 3.3V)、WIFI_REG_ON(开机高电平)、PCIE_PERST_L/PERSTO(复位管脚)的硬件连接与 DTS 配置一致,RK3588 需特别注意 PCIe20 与 dtsi 的对应关系,例如PCIE20_0对应pcie2x1l2PCIE20_1对应pcie2x1l0等。

 

 

3. 内核配置:开启必要功能

 

内核需开启 Wi-Fi/BT 相关驱动与协议,核心配置如下(通过make menuconfig或修改.config):

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# Wi-Fi核心配置CONFIG_RFKILL=y  # 射频开关CONFIG_RFKILL_RK=y  # RK平台射频开关支持CONFIG_MMC=y     # SDIO依赖MMC框架CONFIG_PWRSEQ_SIMPLE=y  # 简单MMC电源序列支持CONFIG_MMC_DW=y  # DW MMC控制器支持CONFIG_MMC_DW_PLTFM=y  # DW MMC平台支持CONFIG_MMC_DW_ROCKCHIP=y  # RK平台DW MMC支持CONFIG_WIRELESS=y  # 无线功能支持CONFIG_WIRELESS_EXT=y  # 无线扩展支持CONFIG_WEXT_CORE=y  # WEXT核心支持CONFIG_WEXT_PROC=y  # WEXT进程支持CONFIG_WEXT_PRIV=y  # WEXT私有支持CONFIG_CFG80211=y # 802.11配置框架CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y  # 要求签名REGDBCONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y  # 使用内核REGDB密钥CONFIG_CFG80211_DEFAULT_PS=y  # 默认电源管理CONFIG_CFG80211_CRDA_SUPPORT=y  # CRDA支持# CONFIG_CFG80211_WEXT is not set  # 关闭WEXT兼容CONFIG_MAC80211=y # MAC层驱动CONFIG_MAC80211_HAS_RC=y  # 速率控制支持CONFIG_MAC80211_RC_MINSTREL=y  # Minstrel速率控制算法CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y  # 默认Minstrel算法CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"  # 默认速率控制算法CONFIG_MAC80211_STA_HASH_MAX_SIZE=0  # STA哈希表最大大小# 蓝牙核心配置CONFIG_BT=y  # 蓝牙支持CONFIG_BT_BREDR=y  # 经典蓝牙支持CONFIG_BT_RFCOMM=y  # RFCOMM支持# CONFIG_BT_RFCOMM_TTY is not set  # 关闭RFCOMM TTY# CONFIG_BT_BNEP is not set  # 关闭BNEPCONFIG_BT_HIDP=y  # HIDP支持# CONFIG_BT_HS is not set  # 关闭HSCONFIG_BT_LE=y     # 低功耗蓝牙(BLE)支持CONFIG_BT_DEBUGFS=y # 调试日志支持# Realtek蓝牙需关闭以下配置,使用自有驱动# CONFIG_BT_HCIUART is not set

其中,正基(新思)和英飞凌(海华 / CY)的模块使用内核默认CONFIG_BT_HCIUART驱动,而 Realtek 模块使用自有hci uart/hci_usb驱动,需关闭内核CONFIG_BT_HCIUART配置,其驱动源码位于external/rkwifibt/realtek/bluetooth_uart_driverexternal/rkwifibt/realtek/bluetooth_usb_driver目录。

 

 

4. 编译:生成驱动与固件

 

编译需执行指定脚本,自动生成驱动(.ko)、固件(firmware)并拷贝到文件系统:

 

 

  •  
  •  
  •  
  •  
# 1. 编译Wi-Fi/BT驱动与工具./build.sh wifibt# 2. 打包根文件系统(确保驱动与固件被包含)./build.sh rootfs && ./build.sh firmware

编译过程会调用device/rockchip/common/scripts/mk-wifibt.shdevice/rockchip/common/scripts/post-wifibt.sh脚本,编译external/rkwifibt/drivers/目录下的驱动,并拷贝对应固件文件到文件系统,同时还会编译brcm_patchram_plus1rtk_hciattach等工具。

 

 

关键文件路径(需熟记,排查时常用)

 

文件类型

 

 

SDK 中的路径

 

 

烧录后设备路径

 

 

Wi-Fi 驱动(.ko

 

 

external/rkwifibt/drivers/(如 bcmdhdrtlxxx 目录)

 

 

/system/lib/modules/ 或 /usr/lib/modules/

 

 

固件(firmware

 

 

external/rkwifibt/firmware/broadcom 目录对应正基,realtek 目录对应 Realtek

 

 

正基:/system/etc/firmware/Realtek 蓝牙:/lib/firmware/rtlbt/UART)、/lib/firmware/USB

 

 

蓝牙工具

 

 

external/rkwifibt/tools/brcm_toolsrtk_hciattach 目录)

 

 

/usr/bin/(如 brcm_patchram_plus1rtk_hciattach

 

 

配置文件

 

 

external/rkwifibt/conf/wpa_supplicant.confdnsmasq.conf 等)

 

 

/data/cfg/wpa_supplicant.conf 常用路径)

 

 

初始化脚本

 

 

external/rkwifibt/scripts/S36wifibt-init.shwifibt-init.sh 等)

 

 

/etc/init.d/S36wifibt-init.sh

 

 

三、功能测试:验证 Wi-Fi/BT 是否正常工作

 

编译烧录后,通过命令行验证核心功能,确保基础功能正常再排查复杂问题。

 

 

1. Wi-Fi 测试(STA 模式:连接路由器)

 

 Buildroot 系统为例:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 加载Wi-Fi驱动(正基模块示例:bcmdhd.ko;Realtek模块示例:RTL8723DS.ko)insmod /system/lib/modules/bcmdhd.ko# 2. 启动wlan0接口ifconfig wlan0 up# 3. 配置wpa_supplicant(连接路由器)# 编辑配置文件:/data/cfg/wpa_supplicant.confcat > /data/cfg/wpa_supplicant.conf << EOFctrl_interface=/var/run/wpa_supplicant  # 控制接口路径,默认不建议修改ap_scan=1  # AP扫描模式update_config=1  # 允许wpa_cli配置保存到文件network={    ssid="你的路由器SSID"  # Wi-Fi名称    psk="你的路由器密码"    # Wi-Fi密码(8-63位)    key_mgmt=WPA-PSK      # 加密方式,不加密改为key_mgmt=NONE}EOF# 4. 启动wpa_supplicant并获取IPwpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf  # -B后台运行# 使用dhcp客户端获取IP(二选一,不可同时启用)dhcpcd wlan0  # 功能完整的DHCP客户端(默认)# 或 udhcpc -i wlan0  # busybox精简DHCP客户端# 5. 验证:ping路由器网关ping 192.168.1.1 -c 4  # -c指定ping次数

若需扫描周边 AP,可在wpa_supplicant进程运行的前提下,执行wpa_cli -i wlan0 -p /var/run/wpa_supplicant scanwpa_cli -i wlan0 -p /var/run/wpa_supplicant scan_results命令,扫描结果需与手机扫描的 2.4G/5G AP 个数(根据模块支持频段)及信号强度对比,正常信号强度范围:好(-20~-50dBm)、可接受(-50~-70dBm)、差(-70~-90dBm)。

 

 

2. Wi-Fi AP 模式(设备作为热点)

 

相关 SDK 集成softapDemo工具,可快速开启热点,不同模块使用的接口不同:

 

 

Realtek 模组:使用p2p0作为 AP 接口,需在驱动 Makefile 中添加EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE开启共存模式,自动生成p2p0节点。

 

 

正基 / 海华模组:使用wlan1作为 AP 接口,需通过iw phy0 interface add wlan1 type managed命令生成wlan1节点。

 

 

具体操作:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 编译softapDemo(若SDK中无源码,从指定地址下载到external目录)# 源码地址:https://github.com/rockchip-linux/softapServermake softap-dirclean && make softap# 2. 启动热点(以正基模组为例,SSID为"RK-AP",无密码)# 生成wlan1节点iw dev wlan1 del(若已存在)iw phy0 interface add wlan1 type managed# 启动热点softapDemo RK-AP# 3. 验证:手机搜索"RK-AP"并连接,ping设备AP地址(默认192.168.88.1)ping 192.168.88.1 -c 4

若需配置加密、修改 IP 地址或 DNS,可修改wlan_accesspoint_startcreat_dnsmasq_filecreate_hostapd_file函数,例如在create_hostapd_file中添加wpa相关配置实现 WPA-PSK 加密,在creat_dnsmasq_file中调整dhcp-range配置 IP 地址池。

 

 

3. 蓝牙测试(经典蓝牙 + BLE

 

1Realtek 模块(UART 接口)

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 执行初始化脚本(SDK生成的bt_pcba_test或bt_init.sh)/usr/bin/bt_pcba_test# 脚本核心操作(手动执行等效命令):killall rtk_hciattach  # 关闭现有rtk_hciattach进程echo 0 > /sys/class/rfkill/rfkill0/state  # 下电echo 0 > /proc/bluetooth/sleep/btwritesleep 1echo 1 > /sys/class/rfkill/rfkill0/state  # 上电echo 1 > /proc/bluetooth/sleep/btwritesleep 1insmod /usr/lib/modules/hci_uart.ko  # 加载UART蓝牙驱动rtk_hciattach -n -s 115200 /dev/ttyS4 rtk_h5 &  # /dev/ttyS4为蓝牙UART口,波特率115200# 2. 启动hci0接口并查看信息hciconfig hci0 uphciconfig -a  # 正常应显示BD Address、版本信息等# 3. 扫描周边蓝牙设备hcitool scan

2)正基 海华模块

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 执行初始化脚本(bt_pcba_test或bt_init.sh)/usr/bin/bt_pcba_test# 脚本核心操作(手动执行等效命令):killall brcm_patchram_plus1  # 关闭现有进程echo 0 > /sys/class/rfkill/rfkill0/state  # 下电echo 0 > /proc/bluetooth/sleep/btwritesleep 2echo 1 > /sys/class/rfkill/rfkill0/state  # 上电echo 1 > /proc/bluetooth/sleep/btwritesleep 2# 加载蓝牙固件,/dev/ttyS4为蓝牙UART口,波特率1500000brcm_patchram_plus1 --bd_addr_rand --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram /system/etc/firmware/bcm43438a1.hcd /dev/ttyS4 &# 2. 启动hci0接口并扫描设备hciconfig hci0 uphcitool scan

需注意,hciconfig命令依赖BR2_PACKAGE_BLUEZ5_UTILS配置,需在 Buildroot 中开启并编译;蓝牙固件需与模块型号匹配,例如 AP6212A1 对应BCM43430A1.hcdAP6236 对应BCM43430B0.hcd

 

 

四、问题排查:90% 的问题都在这里解决

 

调试中遇到的问题,大多可通过看日志查硬件核配置” 三步定位,以下是高频问题及解决方案。

 

 

1. Wi-Fi 识别不到(SDIO 接口)

 

现象dmesg中无mmc0: new high speed SDIO cardmmcx: new ultra high speed SDR104 SDIO card日志。

 

 

排查步骤

 

 

1.测电压:用万用表测量VBAT/VCC_WL3.3V)、VDDIO/VCCO_SDIO1.8V/3.3VSDIO3.0 必须 1.8V)、WL_REG_ON1.8V/3.3V)的电压是否正常,是否符合硬件设计要求。

 

 

2.查时序:用示波器测量VBATVDDIOWL_REG_ON的时序,确保符合模块规格书要求,以正基模块为例,需满足VBAT达到 90% VH 后,VDDIO启动,再触发WL_REG_ON,且需等待 2 个睡眠周期(32.768K 时钟)。

 

 

3. DTS 配置

 

 

检查WL_REG_ON是否配置错误:用示波器观察其波形,若一直为低则 DTS 配置异常;若硬件直接拉高WL_REG_ON可识别,也说明 DTS 配置错误。

 

 

检查sdio_pwrseqwireless-wlan是否重复配置WL_REG_ON,需删除其中一处配置。

 

 

1. SDIO_CLK 波形:若SDIO_CLK无波形,需检查 IO 电源域配置是否正确、CLK 脚是否误加上拉电阻(可去掉测试),示波器需设置正确触发模式抓取波形。

 

 

2.32.768K 时钟:若日志出现dhdsdio_htclk: HT Avail timeout(正基 / 海华模块),需检查 32.768K 时钟是否正常,其频率精度需 ±30ppm、占空比 30%-70%、信号幅值 400-1800mVpp

 

 

2. Wi-Fi 能识别但 wlan0 up 失败

 

现象dmesg SDIO 识别日志(如mmcx: new ultra high speed SDR104 SDIO card),但ifconfig wlan0 up报错或无 wlan0 节点。

 

 

排查步骤

 

 

1.固件匹配性:正基 / 海华模块需确认固件文件是否存在且与型号匹配,例如 AP6255 对应fw_bcm43455c0_ag.binnvram_ap6255.txt,若日志出现dhdsdio_download_firmware: dongle image file download failed,则为固件缺失或路径错误。

 

 

2.电源稳定性:若日志出现RTW: ERROR sd_write8: FAIL!(-110)Realtek 模块),需检查VCC_WL/VBAT/VDDIO_SDIO电源供电是否不足或纹波过大,可增加电容滤波。

 

 

3.驱动冲突:检查是否同时加载多个 Wi-Fi 驱动(如bcmdhd.ko88xx.ko),需卸载多余驱动;同时确认内核配置的buildinko模式是否冲突,只能选择一种。

 

 

4.驱动加载时机:若日志显示驱动在 1 秒内加载,可能因 SDIO/USB 设备未枚举完成导致异常,需调整驱动加载时机,确保设备枚举后再加载。

 

 

3. 蓝牙初始化失败(UART 接口)

 

现象hciconfig -a hci0 节点。

 

 

排查步骤

 

 

1. RTS/CTS 接线

 

 

正基 / 海华模块:需 线连接(host tx→controller rxhost rx→controller txhost rts→controller ctshost cts→controller rts)。

 

 

Realtek 模块:COB 芯片需将 host cts 接地;RTL8822C 需 线连接;模组若已内部将 controller rts 接地,host cts 无需额外处理。

 

 

1.核驱动与固件

 

 

Realtek 模块需确认hci_uart.koUART)或rtk_btusb.koUSB)是否正确编译,固件文件是否放在对应路径(UART/lib/firmware/rtlbt/USB/lib/firmware/)。

 

 

正基 / 海华模块需确认brcm_patchram_plus1工具是否存在,固件文件(如bcm43438a1.hcd)是否与模块匹配。

 

 

1. UART 配置:确认蓝牙使用的 UART 口在 DTS 中已正确配置,且pinctrl配置的 TX/RX/CTS 引脚与硬件一致。

 

 

4. Wi-Fi 连接不稳定 吞吐率低

 

现象:频繁断线、ping 延迟大、iperf 测试速率不达标。

 

 

排查步骤

 

 

1.RF 指标验证:先完成 RF 测试(发射功率、EVM、晶体频偏、接收灵敏度)和天线 OTA 测试,确保指标合格,例如 802.11b 模式下 11Mbps 速率的接收灵敏度需≥-78dBm

 

 

正基 / 英飞凌模块:需替换为测试固件(如 AP6236 对应fw_bcm43436b0_mfg.bin),执行external/rkwifibt/wifi_ap6xxx_rftest.sh脚本进入测试模式,参考Wi-Fi RF Test Commands for Linux-v03.pdf进行测试。

 

 

Realtek 模块:COB 芯片需与相关方合作进行 RF 校准,模组需验证出厂校准数据,参考Quick_Start_Guide_V6.txtWi-Fi)和MP tool user guide for linux20180319.pdf(蓝牙)测试。

 

 

1.环境干扰排除:在屏蔽室或地下室(干扰小)测试,若数据波动仍大,需检查 PCB 走线(SDIO_CLK/CMD/DATA)是否异常、电容电感是否符合要求,可适当降低&sdio节点的max-frequency(如改为 10M),若降频后正常,则需优化硬件时序。

 

 

2.CPU/DDR 性能:将 CPU 和 DDR 频率拉满,避免降频导致性能不足:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
# DDR定频(以1560MHz为例)echo userspace > /sys/devices/platform/dmc/devfreq/dmc/governorecho 1560000000 > /sys/devices/platform/dmc/devfreq/dmc/min_freq# CPU定频(以1992MHz为例)echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorecho 1992000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

同时可将dw-mmc中断绑定到其他 CPU 核心,例如echo 5 > /proc/irq/38/smp_affinity_list将中断放到 CPU2 执行。

 

 

五、资源获取:相关资料与工具路径

 

1.开发文档路径:相关技术文档位于 SDK docs/目录下,例如:

 

 

PCIe 配置参考:

docs/Common/PCIe/Rockchip_RK3399_Developer_Guide_PCIe_CN.pdfdocs/Common/PCIe/Rockchip_RK356X_Developer_Guide_PCIe_CN.pdfdocs/Common/PCIe/Rockchip_Developer_Guide_PCIe_CN.pdf

 

 

USB 配置参考:

docs/Common/USB/Rockchip_Developer_Guide_USB_CN.pdf

 

 

RF 测试参考:

docs/linux/wifibt/目录下的Quick_Start_Guide_V6.txtRealtek)、Wi-Fi RF Test Commands for Linux-v03.pdf(正基 / 英飞凌)、BT RF Test Commands for Linux-v05.pdf(蓝牙)。

 

 

总结

 

RK 平台 Wi-Fi/BT 调试的核心是 配置精准 日志分析 硬件验证:先确保 DTS 与原理图匹配、内核配置正确,再通过dmesghciconfigwpa_cli等工具查看日志定位软件问题,最后结合电压测量、时序分析、RF 测试排查硬件异常。遇到复杂问题,可优先参考 SDK 文档或相关 FTP 资源,大幅提升调试效率。

 

 

希望本文能帮你少走弯路,顺利搞定 RK 平台 Wi-Fi/BT 开发!如果有其他问题,欢迎在评论区留言讨论~

调试

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分