RK全志平台WiFiBT调试思路

news/2025/7/9 5:12:25/

调试前

WiFi常见的通信接口:PCIE、SDIO、USB。

BT 常见的通信接口: UART、SDIO、USB。

模组厂商提供:

(1)固件(用来控制模组硬件行为);

(2)模组驱动源码(SDK 一般会提供常用的 WiFi 模组驱动源码,没有的需要找模组厂商)。

WiFi 模组识别流程

SDIO 接口

开机时kernel MMC框架会去识别SDIO 卡,首先会去解析dts里面的sdio_pwrseq节点的reset-gpios属性配

置的GPIO,也就是WL_REG_ON然后拉高它,并通过SDIO_CLK/CMD/DATA发初始化指令给模块。

首先SDIO_CLK会以400/300/200K的低频给WiFi模块发命令,获取WiFi SDIO基本的信息。比如SDIO2.0(CLK最大50M)还是3.0 (CLK最大208M)、支持4线还是1线等信息,然后根据支持的规格提高SDIO_CLK频率到相应的高频50M/150M,到这一步初始化基本完成。

# 注意 mmc0: 0的数字是不固定的,也可能是0/1/2; ff4a0000:表示控制器的地址,不同平台也是不一样的
# 解析dts的mmc-pwrseq节点,获取WL_REG_ON
dwmmc_rockchip ff4a0000.dwmmc: allocated mmc-pwrseq
# 低频初始化
mmc_host mmc0: Bus speed (slot 0) = 400000Hz (... actual 400000HZ div = 0)
# 高频工作模式
mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (... actual 50000000HZ div = 0)
# SDIO 2.0
mmc0: new high speed SDIO card at address 0001
# SDIO 3.0
mmcx: new ultra high speed SDR104 SDIO card at address 0001

USB/PCIE接口

这两个接口识别过程比较复杂,当识别完成后,lsusb/lspci 可以看到如下类似信息:

USB接口:

Bus 001 Device 002: ID 0bda:f179 Realtek Semiconductor Corp. RTL8188FTV
802.11b/g/n 1T1R 2.4G WLAN Adapter

PCIE接口:

0002:21:00.0 Network controller: Broadcom Inc. and subsidiaries Device 449d (rev02)

调试思路

拿到模组后,总体调试思路如下:

(1)硬件检查:确认模组供电、接口(SDIO/USB/PCIe)、时钟信号、天线连接正常。

(2)设备树/内核配置:验证接口控制器、GPIO、 复位/中断引脚配置正确。

(3)驱动加载与固件:确保驱动匹配模组,固件正确加载(/lib/firmware/)。

(4)模组识别状态:调试 PCIE /USB 接口 WiFi 模组时,首先还要 lspci/lsusb 确认 PCIE 是否识别到模块。

(5)连接与网络验证: AP 扫描网络、wpa_supplicant连接网络。

蓝牙总体思路类似,DTS 配置更简单,使用什么通信接口就配置什么接口,比如 UART,那 DTS 只需配置 UART 即可。

排查思路

重要:务必先看log,根据log的异常进行排查!!!

WiFi/BT大概分为3类问题:

(1)SDIO/USB/PCIE设备识别不到;

(2)识别到SDIO卡,但firmware加载失败;

(3)性能问题,连不上/扫描个数少/概率断开等等;

具体步骤以及更多排查手段可以参考各 soc 厂商的开发文档。

欢迎关注“嵌入式分享”,持续更新!


http://www.ppmy.cn/news/1758989.html

相关文章

芯片测试之 trim修调详解

文章目录 1. trim的概念和目的2. trim方式2.1 OTP(One-Time Programmable)一次性修调2.2 EEPROM(Electrically Erasable PROM)修调 3. trim算法3.1 电压trim code table3.2 电压测量函数3.3 公式法验证3.4 线性法验证3.5 二分法验…

Verilog自适应位宽与指定位宽不同导致模块无法正常执行

Verilog自适应位宽与固定位宽的不兼容问题 问题起源 我在写verilog代码的时候,有两个模块shifter和round,参数化的shifter模块已经通过了测试,round模块是shifter的上层模块,对round模块进行16位测试的时候,顺利通过…

Linux命令练习篇

1. grep 命令练习 1.在 /var/1og/messages 中查找所有包含 error 的行(忽路大小写) grep -i "error" //var/log/messages 2.统计 /var/1og/secure 中 Failed password 出现的次数。 grep -c "Failed password" /var/log/seccure 3.列出 /ete 目录下所有…

Java大模型开发入门 (11/15):让AI自主行动 - 初探LangChain4j中的智能体(Agents)

前言 在过去的十篇文章里,我们已经打造出了一个相当强大的AI应用。它有记忆,能进行多轮对话;它有知识,能通过RAG回答关于我们私有文档的问题。它就像一个博学的“学者”,你可以向它请教任何在其知识范围内的问题。 但…

FreeRTOS的低功耗Tickless模式

一、摘要 在电池供电的物联网(IoT)、可穿戴设备等嵌入式应用中,功耗优化至关重要。FreeRTOS 作为流行的实时操作系统,其传统的周期性系统心跳(tick)中断虽然简化了任务调度,却成为深度休眠的障碍——它频繁唤醒CPU,导致功耗居高不…

IO之详解cin(c++IO关键理解)

目录 cin原理介绍 控制符(hex、oct、dec) cin如何检查输入 cin与字符串 cin.get(char ch) cin.get(void) istream &get(char*,int) istream &get(char*,int,char) istream &getline(char*,int); 遇到文件结尾EOF 无法完成一次完整输入:设置f…

计算机是怎么跑起来的第五章

“令人生畏且难以掌握”“和自己无缘”,诸位是不是会对算法留下这样的印象呢?诚然,有那种无法轻松理解、难以掌握的算法,但是并不是说只有把那种” “由智慧超群的学者才能想出的算法全部牢记心中才能编写程序,简单的算…

【无标题】二维势能塌陷的拓扑色动力学:数学物理框架与引力本质探索

二维势能塌陷的拓扑色动力学:数学物理框架与引力本质探索 1. 势能塌陷的数学模型 1.1 平面势能密度定义 设二维平面度规张量: $$g_{μν} \begin{pmatrix} e^{2\phi} & 0 \\ 0 & e^{2\phi} \end{pmatrix}$$ 其中 $\phi$ 为势能场,…