【rk3506】U-Boot串口时钟未配置,导致串口彻底失效

问题描述

这个坑我踩得特别隐蔽,足足排查了很久!

RK3506这类瑞芯微SoC的时钟树管控非常严格:设备树里串口节点status已经设为okay、引脚pinctrl配置也完全正确,但串口就是完全没有数据输出,打印空白、无法通信。

核心原因

U-Boot设备树中没有显式配置串口时钟、时钟频率和门控时钟源。

如果uart3节点缺失assigned-clocks、assigned-clock-rates配置,或是没有绑定正确的clocks时钟源,底层CLK驱动初始化时,会判定串口时钟频率为0、时钟源无效,直接无法使能串口外设。

简单来说,时钟源彻底断供,串口硬件逻辑电路完全处于静默状态,哪怕引脚和状态配置再正确,也完全无法工作。

给大家贴出我最终调试通过的完整设备树配置,uboot阶段串口时钟频率必须手动配置,缺一不可:

powershell 复制代码
&uart3 {
	status = "okay";
	pinctrl-names = "default";
	clock-frequency = <24000000>; // uboot下一定要配置串口时钟频率
	pinctrl-0 = <&rm_io10_uart3_tx &rm_io11_uart3_rx>;
};

在调试U-Boot功能、打印日志、串口交互时,如果遇到串口不工作,优先排查时钟配置,不要盲目排查引脚和驱动逻辑,这是瑞芯微平台极易忽略的关键细节!

相关推荐
广州浮点FLOATLIC2 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
BLUcoding2 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK2 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2082 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)2 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6252 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
宵时待雨3 小时前
STM32基础1:嵌入式历史与生态
stm32·单片机·嵌入式硬件
xh didida4 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
不会代码的小猴4 小时前
启动文件
stm32·嵌入式硬件
2401_862880825 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件