(全网首发)RK3506B修改调试串口波特率功率攻略

前言

​ 本文写于2025年9月7日上午12:05,瑞芯微的SDK使用的UBoot为2017年的特供版,Linux则是移植了Linux 6.1.99+版本,也就是采用了全新特性了Linux。
​ 本篇博客希望给出RK3506B的修改调试串口波特率功率的方案

Tips: 笔者的CSDN文章在:https://blog.csdn.net/charlie114514191/article/details/151285932
您要是偏好CSDN点击这个链接阅读

为什么要做?

​ 为什么要改?答案是RK系列提供的SDK源码包中,默认设置的UART的波特率是1500000,也就是1.5M,这个速率并非一个非常常规的波特率,查阅设备树和文档,可以找到RK家的UART芯片支持115200和1500000Baud Rate的输出。这也就意味着咱们需要动动手修改一下串口的波特率(笔者是XShell使用用户,不支持自定义咱们的波特率)

结合启动流程,说一说咱们需要修改该哪一些地方

​ RK3506是一个大家伙,这里,我们的启动会比IMX6ULL实际上还要再复杂一点,这里简单的说一说。

​ 首先,我们第一个动作就是执行固化在SoC内部的BootROM中的初始化代码,笔者在之前的博客提到过(嵌入式八股文中的嵌入式Linux启动流程),咱们的Stage中如果硬件非常复杂,从ROM Boot到UBoot的流程是分阶段的,这里就是这个阶段。

​ BOOTROM的主要任务就是开启基本的时钟,按照 启动模式(Boot Mode) 从不同的介质(如 eMMC、SPI Nor、SD 卡、NAND、USB OTG)中查找并加载下一阶段引导程序(通常是 SPL/BL2)。然后过签名验证,保证芯片的安全启动。

​ 咱们的下一步就是进一步加载Bootloader,也就是咱们的UBoot,之后的流程就会变得很清楚了,那就是从UBoot再启动到Linux。

上电复位
   ↓
BootROM (片上固化)
   ↓
SPL / BL2 (初始化内存,加载下一级)	⭐
   ↓
TF-A (BL31: 安全世界初始化)
   ↓
U-Boot (BL33: 完整Bootloader,加载内核) ⭐
   ↓ 
Linux Kernel (驱动 + 根文件系统) ⭐
   ↓
用户空间 (init/systemd → 应用层)

​ 一共看来,我们实际上要改的是三处地方。BootBin,U-Boot和Linux三处的串口初始化配置。我们下面就来说说。

SPL阶段的Boot修改

​ rkbin负责这一阶段的初始化工作。RK家在这里的代码是闭源的,咱们只能用人家的代码搞。

Step1 确定你使用的Chip是啥 + 修改波特率

​ 笔者使用的是RK3506B这个配置,所以呢,咱们实际上看的时候,也要去看对应的ini文件,在SDK目录下的:

rkbin/RKBOOT/RK3506BMINIALL.ini

​ 这里我们就能看到我们实际上的bin文件指向的是哪一个。一般都是第一个bin文件,具体如何查看往上的博客教授的非常详细了,这里不再重复。总之查看的就是path指向的bin文件,大致是rk3506b_ddr_xxx.bin文件,这个文件每个人都可能不一样,自己需要查看。

​ 在这里,我们定位到(快速定位的办法是vim中的/+文本定位到文本),我们搜索baudrate,在=后直接写上115200,这样我们就修改好了波特率了。

​ 下一步,我们就需要使用ddrbin_tool这个工具重新修订好新的SPL加载可重定位文件。

./ddrbin_tool rk3506 ddrbin_param.txt ../bin/rk35/xxx.bin # 这个地方填上你刚刚查到的bin文件路径

​ 然后就OK了。

Step2 修改UBoot的参数

​ 这个官方没找到文档,我是类比RK3588的办法,在我们的rk3506_defconfig文件中,添加了一个CONFIG_BAUDRATE的配置项,设置成115200,直接加就行

Step3 修改Linux的参数

​ RK3506B的defconfig并不独立,实际上他依赖于rk3502-evb1-v10.dtsi文件中的配置,教您一招咋找,设备树的编译跟咱们的C语言工程编译是类似的,因此,咱们的中间件中是有出现合并后的tmp文件的,在dts文件下(RK3506B是arch/arm/boot/dts下)

grep -rw "1500000" . | grep rk3506

​ 我们检索当前目录下的所有设备树文件,筛出来存在1500000这个全词的行数和文件所在位置后,且确保属于rk3506的配置就好,这个时候我们就能看到tmp文件存在设置的,只是他实际上复用了其他板子的配置,这个时候再依次顺藤摸瓜,找到我们的RK3506B的波特率是由rk3502-evb1-v10.dtsi文件引入的,之后我们再编译的时候,就可以完成后再次执行:

grep -rw "115200" . | grep rk3506

​ 看我们的tmp文件是否修改成功。

​ 笔者修改的时是rockchip, baudrate那一行改成115200,原本是1500000。

完结

​ 到这里我们的工作就结束了。现在就可以尝试一下了!