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

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

前言

​ 本文写于2025年9月7日上午12:05,瑞芯微的SDK使用的UBoot为2017年的特供版,Linux则是移植了Linux 6.1.99+版本,也就是采用了全新特性了Linux。

​ 本篇博客希望给出RK3506B的修改调试串口波特率功率的方案

为什么要做?

​ 为什么要改?答案是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。

完结

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

<think>嗯,用户想修改RK3568根文件系统中的串口波特率。我需要先回忆一下相关的知识。首先,串口波特率的设置通常涉及内核和设备树配置,可能还跟根文件系统中的服务有关。根据引用中的信息,设备树里需要设置寄存器地址,比如reg属性,这可能和GPIO或串口控制相关。用户之前提到过修改设备树后需要重新编译内核,比如使用./make.sh等命令。这可能意味着修改设备树是调整硬件参数的重要步骤,包括串口波特率。另外,引用3提到“给定波特率”,可能是指某个配置文件中的设置。根文件系统中可能有初始化脚本或服务配置文件,比如systemd的服务或者inittab,这些地方也可能设置波特率。用户的问题是关于rootfs的修改,所以可能需要查看根文件系统中的相关配置文件。比如,在Linux系统中,串口终端设置可能在/etc/inittab或/etc/securetty中,或者使用systemd的serial-getty服务。例如,修改/etc/systemd/system/getty.target.wants/[email protected]文件中的波特率参数。 此外,内核启动参数也可能影响串口控制台,比如在bootargs中添加console=ttyS0,115200这样的参数,这里115200就是波特率。不过bootargs通常是在U-Boot中设置,属于内核启动参数的一部分,可能需要在编译内核时或者修改bootloader配置时调整。不过用户的问题特别提到根文件系统(rootfs),所以可能更关注用户空间的配置,而不是内核或设备树。需要确认在根文件系统中是否有服务或脚本控制串口波特率。比如,使用stty命令在启动脚本中设置,或者修改getty服务的配置。另外,设备树中的串口节点可能有关于波特率的配置,比如在设备树的某个节点中设置clock-frequency或其他相关属性。例如,查看设备树中serial节点的配置,是否有波特率相关的参数,可能需要修改设备树源文件(dts),然后重新编译设备树,并更新到板子上。总结一下,可能的步骤是:1.检查设备树中的串口节点配置,调整波特率参数,重新编译设备树和内核;2.检查根文件系统中的服务配置文件,如systemd或inittab,修改对应的波特率设置;3.检查内核启动参数中的console设置,确保波特率一致。需要参考用户提供的引用,特别是引用1中的设备树修改和编译步骤,以及引用3提到的波特率设置。用户可能需要先修改设备树中的相关寄存器配置,然后重新编译内核,同时在根文件系统中调整对应的服务配置,确保两端一致。</think>根据RK3568平台特性,修改串口波特率的配置需要结合设备树和内核参数调整,具体步骤如下: ### 一、设备树配置 1. **定位串口节点** 在设备树文件`rk3568.dtsi`中找到目标串口节点(如`uart2`),其定义格式为: ```dts &uart2 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&uart2m0_xfer>; }; ``` 该节点默认使用硬件预设波特率(通常为$115200$) 2. **添加波特率参数** 在串口节点中添加`assigned-clocks`和`assigned-clock-rates`属性来指定波特率: ```dts &uart2 { status = "okay"; assigned-clocks = <&cru CLK_UART2>; assigned-clock-rates = <1500000>; //对应波特率计算公式 pinctrl-names = "default"; pinctrl-0 = <&uart2m0_xfer>; }; ``` 波特率计算需满足$baud = \frac{clock\_rate}{divisor}$,其中$divisor$需为整数[^1] ### 二、内核参数调整 1. **修改bootargs** 在U-Boot环境变量中设置内核控制台参数: ```bash setenv bootargs console=ttyS2,1500000n8 root=/dev/mmcblk1p5 rw rootwait ``` 其中`ttyS2`对应uart2,`1500000n8`表示波特率$1500000$,无校验位,8数据位 2. **同步根文件系统** 在根文件系统中检查`/etc/inittab`或`systemd`服务配置: ```bash # systemd服务文件示例 /etc/systemd/system/[email protected] ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 1500000 %I $TERM ``` ### 三、验证步骤 1. 重新编译内核和设备树: ```bash ./make.sh && ../device/rockchip/common/mk-fitimage.sh kernel/boot.img device/rockchip/rk356x/boot.its ``` 2. 烧录后通过`stty -F /dev/ttyS2`命令查看当前波特率 3. 使用示波器或逻辑分析仪验证实际波形频率是否符合$T = \frac{1}{baud\_rate}$[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值