当前位置: 首页 > news >正文

【RK3506实战-09】RK3506 + RTL8852BS(SDIO)WiFi6 驱动调试实战

  • 主控:RK3506(3×A7 + M0)
  • WiFi:RTL8852BS(SDIO 4bit,WiFi6/802.11ax,5G+2.4G)
  • 接口:SDMMC1(SDIO)
  • 内核:Linux 5.10 / 6.1(Rockchip SDK)
  • 系统:Buildroot / Yocto / 原厂 Linux

一、硬件原理与上电时序(SDIO 必看)

1.1 引脚连接(RK3506 ↔ RTL8852BS)

RK3506RTL8852BS说明
SDMMC1_CLKCLKSDIO 时钟
SDMMC1_CMDCMD命令线
SDMMC1_D0~D3DATA0~34bit 数据
GPIO_PB0WL_REG_ON模组电源使能(3.3V,高有效)
GPIO_PB1WL_HOST_WAKE主机唤醒 WiFi(输入)
3.3VVDD供电
GNDGND
ANT天线必须接,否则无信号

1.2 上电时序(关键!否则驱动加载失败)

  1. 拉低WL_REG_ON→ 延时 10ms
  2. 拉高WL_REG_ON(3.3V)→ 延时 50ms
  3. 初始化 SDIO 控制器 → 识别模组(vendor=0x024c,device=0x8852)

二、设备树 DTS 配置(rk3506-evb.dts)

路径:arch/arm64/boot/dts/rockchip/rk3506-evb.dts

2.1 SDMMC1 控制器(WiFi 用)

dts

&sdmmc1 { status = "okay"; bus-width = <4>; /* SDIO 4bit */ max-frequency = <150000000>; /* 150MHz,WiFi6稳定 */ non-removable; /* 板载,不可热插拔 */ pinctrl-names = "default"; pinctrl-0 = <&sdmmc1_clk &sdmmc1_bus>; /* WiFi电源时序控制 */ mmc-pwrseq = <&wifi_pwrseq>; /* RTL8852BS 节点 */ wifi@1 { compatible = "realtek,rtl8852bs"; reg = <1>; wl-reg-on-gpios = <&gpio RK_PB0 GPIO_ACTIVE_HIGH>; wl-host-wake-gpios = <&gpio RK_PB1 GPIO_ACTIVE_HIGH>; }; }; /* WiFi电源时序节点(必须) */ wifi_pwrseq: mmc-pwrseq { compatible = "rockchip,mmc-pwrseq"; reset-gpios = <&gpio RK_PB0 GPIO_ACTIVE_LOW>; reset-delay-us = <10000>; /* 拉低10ms */ power-delay-us = <50000>; /* 拉高50ms */ };

2.2 编译设备树

make dtbs # 生成 rk3506-evb.dtb,烧录后重启

三、内核配置(WiFi6 + SDIO 依赖)

make menuconfig

3.1 MMC/SD/SDIO 核心

Device Drivers → MMC/SD/SDIO support → [*] MMC support → [*] SDIO support → [*] Rockchip SDMMC controller support

3.2 无线协议栈(WiFi6 必需)

Networking support → [*] Wireless → [*] cfg80211 → [*] mac80211 → [*] 802.11ax (WiFi6) support

3.3 Realtek SDIO 驱动

Device Drivers → Network device support → Wireless LAN → <M> Realtek wireless LAN support → <M> RTL8852BS SDIO WiFi6 adapter

3.4 保存配置

make savedefconfig cp defconfig arch/arm64/configs/rk3506_defconfig

四、RTL8852BS 驱动编译(RK3506)

4.1 驱动源码获取

Realtek 原厂驱动(RK 平台适配版):

# 从Rockchip SDK获取(推荐) cd external/rkwifibt/realtek/ git clone https://github.com/rockchip-linux/rkwifibt.git cd rkwifibt/realtek/RTL8852BS

或第三方适配:

git clone https://gitcode.com/gh_mirrors/rt/rtl8852bs.git cd rtl8852bs

4.2 修改 Makefile 适配 RK3506

makefile

# 平台选择 CONFIG_PLATFORM_I386_PC = n CONFIG_PLATFORM_ARM_ROCKCHIP = y # 内核路径(改为你的SDK路径) KERNELDIR ?= /home/xxx/rk3506-sdk/kernel ARCH ?= arm64 CROSS_COMPILE ?= /home/xxx/rk3506-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-

4.3 编译

make clean make -j8 # 生成:8852bs.ko

五、固件部署(RTL8852BS 必需)

5.1 固件文件

  • 固件:fw_8852bs.bin(Realtek 原厂,与驱动匹配)
  • 路径:/vendor/etc/firmware//lib/firmware/
mkdir -p /vendor/etc/firmware/ cp fw_8852bs.bin /vendor/etc/firmware/

六、驱动加载与初始化

6.1 手动加载(调试)

# 拷贝驱动到系统 cp 8852bs.ko /lib/modules/$(uname -r)/ depmod -a # 加载驱动 insmod 8852bs.ko # 查看加载状态 lsmod | grep 8852bs dmesg | grep -i 8852

6.2 正常日志(成功标志)

rtw_8852bs: Driver initialization ok sdio 1:0001:1: wlan0: RTL8852BS WiFi6 registered

6.3 查看 SDIO 设备

cat /proc/mmc # 看到:sdmmc1:0001: 024c:8852 (Realtek)

七、wpa_supplicant 配置 WiFi6 联网

7.1/etc/wpa_supplicant.conf(WiFi6 关键)

conf

ctrl_interface=/var/run/wpa_supplicant ap_scan=1 country=CN network={ ssid="你的WiFi6_SSID" psk="你的密码" key_mgmt=WPA-PSK ieee80211w=2 /* WiFi6/WPA3 强制开启 */ freq_list=2412 5180 /* 2.4G + 5G */ priority=1 }

7.2 启动 WiFi

# 后台运行 wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf # 查看连接状态 wpa_cli -i wlan0 status # 获取IP udhcpc -i wlan0 # 测试外网 ping 223.5.5.5

八、WiFi6 特性验证

8.1 查看网卡能力

iw dev wlan0 info

WiFi6 成功标志

supported wifi generations: 802.11b 802.11g 802.11n 802.11ac 802.11ax

8.2 扫描 WiFi

iw dev wlan0 scan | grep SSID

九、常见问题与排错(SDIO 高频坑)

问题 1:dmesg 报sdio: error while initializing card

  • 原因:上电时序错误(WL_REG_ON 未按 10ms 低→50ms 高)
  • 解决:检查设备树wifi_pwrseq延时,或硬件 GPIO 电平

问题 2:能识别 SDIO(024c:8852),但无 wlan0

  • 原因:固件缺失 / 路径错
  • 解决:dmesg | grep firmware→ 补fw_8852bs.bin

问题 3:驱动加载报symbol not found

  • 原因:内核未开启CFG80211/MAC80211
  • 解决:重新配置内核,开启无线协议栈

问题 4:WiFi6 路由连不上,只能连 5G

  • 原因:未加ieee80211w=2
  • 解决:wpa_supplicant.conf 增加该配置

问题 5:WiFi 丢包、速率低

  • 原因:SDIO 时钟低 / 天线差
  • 解决:设备树设max-frequency=150MHz;接原厂天线,远离干扰源

十、量产优化

  1. 开机自启:在/etc/init.d/添加脚本,上电自动加载8852bs.ko并启动 wpa_supplicant
  2. 固件固化:将fw_8852bs.bin编译进根文件系统
  3. 降日志:关闭驱动调试打印,降低 CPU 占用
  4. 电源管理:配置 WiFi 休眠,降低功耗

总结

RK3506 + RTL8852BS(SDIO)WiFi6 调试核心:

  1. 严格上电时序(WL_REG_ON 10ms 低→50ms 高)
  2. 设备树正确配置 SDMMC1 + 电源时序节点
  3. 内核开启 SDIO + WiFi6 协议栈
  4. 匹配驱动与固件
  5. wpa_supplicant 加 ieee80211w=2 开启 WiFi6

整套方案稳定适配 RK3506 5.10/6.1 内核,可直接用于工控、IoT 网关、智能家电量产。

后续预告

下一篇文章:【RK3506实战-10】RK3506 Linux 接入 ESP32-SDIO WiFi 超详细实战

原创不易,如果本文对你有帮助,欢迎点赞、收藏、关注三连!有任何问题都可以在评论区留言,我会及时回复。

http://www.jsqmd.com/news/757075/

相关文章:

  • 从‘哞加密’到通用模式:如何用哈希表优雅处理棋盘上的所有ABB型字符串?
  • 终极指南:如何利用PIDtoolbox快速诊断无人机控制系统性能问题
  • Agent工具调用中的错误处理 重试机制降级处理
  • MaxBot抢票机器人:3步实现自动化抢票的高效解决方案
  • 开源协作平台Olla:从代码托管到社区生态的技术架构与部署实践
  • Nexus-7B-V3上线,长文本推理新突破
  • 终极GPX在线编辑器gpx.studio:免费快速编辑GPS轨迹文件
  • 【Linux运维】Linux.org
  • 如何在macOS上使用WeChatExporter完整备份微信聊天记录:免费开源工具终极指南
  • 完美解决PowerPoint无法插入视频:64位编码解码器缺失问题全攻略
  • PHP容器国产化适配必须绕过的3个“伪最佳实践”,第2个让某省政务云项目延期47天
  • ChatGPT插件开发调试利器:本地代理工具原理与实战指南
  • 从PCIe到SRIO:拆解Xilinx K7 GTX IP核,看高速协议背后的Serdes实战配置
  • Refined Now Playing:网易云音乐沉浸式播放界面与歌词动画渲染技术深度剖析
  • 3步彻底解决Visual C++运行库安装失败:终极修复指南
  • 2026年江苏省透明胶带优选厂家,性价比高值得信赖 - GrowthUME
  • Docker Compose 如何使用 secrets 管理敏感密码信息
  • 别再只调Adam了!用Nadam优化你的PyTorch模型,收敛速度实测快了多少?
  • 2026年必备:手把手教你降低AI率,避免被判定AI写作 - 降AI实验室
  • 在社交媒体内容分析场景中利用Taotoken聚合大模型能力
  • YOLOv11森林栖息地美洲红尾鸲目标检测数据集-497张-bird-1_3
  • 软文营销平台选型权威测评:2026年六大渠道深度解析与营销价值对比 - 博客湾
  • 告别Keil官网龟速下载!手把手教你用国内镜像站搞定MDK5和STM32芯片包
  • C++20练习代码
  • Julia高性能数据转换引擎Kaimon.jl:声明式映射与编译期优化实践
  • 2026 新闻发布平台权威测评:十大主流渠道实力排名与企业选型指南 - 博客湾
  • 7个步骤掌握ComfyUI-Manager:彻底告别节点管理烦恼
  • 魔兽争霸3卡顿问题终结者:WarcraftHelper让你的经典游戏重获新生
  • 2026 耳机推荐|六款蓝牙耳机全场景实测横评(通勤 / 运动 / 办公 / 游戏) - GrowthUME
  • 如何快速使用IronyModManager:Paradox游戏模组管理的完整指南