跳转到内容

串口波特率修改

1.1. 波特率介绍

波特率(Baud Rate)是数据通信中每秒传输的符号(调制速率)数量,单位是波特(Baud)。本质上,它是衡量数据传输速度的重要指标,反映了串行通信中信号变化的频率。简单来说,波特率决定了串口每秒能够发送的“信号单元”数量。由于每个信号单元可以携带一个或多个比特(bit)数据,因此波特率与比特率密切相关,但二者并不完全相同(比特率 = 波特率 × 每个符号的比特数)。

在嵌入式设备的串口通信中,常见的波特率包括 9600、19200、38400、115200 等。在设备之间进行串口通信时,发送端和接收端的波特率必须完全一致。如果不一致,数据传输时会出现乱码、数据丢失,甚至无法通信等问题。这是串口通信的基本前提。

1.2. 修改波特率设置

1.2.1 修改 U-BOOT 的 defconfig 配置

  1. 参考《嵌入式底层开发/Ubuntu 系统 SDK/源码获取》获取 SDK。

  2. 进入 u-boot 目录,修改 rv1126b_defconfig 文件。

Terminal window
vim u-boot/configs/rv1126b_defconfig

1.2.1 修改 U-BOOT 的 defconfig 配置 图1

1.2.1 修改 U-BOOT 的 defconfig 配置 图1

1.2.1 修改 U-BOOT 的 defconfig 配置 图2

1.2.1 修改 U-BOOT 的 defconfig 配置 图2

1.2.2 修改 U-BOOT 的 DDR BIN 配置

DDR BIN 是 DDR 内存的初始化配置文件。在部分设备中,串口波特率设置与 DDR BIN 相关联,因此如果不修改这里的配置,设备启动后串口可能无法正常工作。如果有其他配置需求,请阅读 ddrbin_tool_user_guide.txt 指南。修改步骤如下:

  1. 查看 RV1126BMINIALL.ini 配置

打开 rkbin/RKBOOT 目录,查看 RV1126BMINIALL.ini 配置。

13.2. 2 修改 U-BOOT 的 DDR BIN 配置 图3

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图3

确认初始默认的 .bin 文件名:rv1126b_ddr_1332MHz_v1.06.bin

  1. 复制新的 .bin 文件
Terminal window
sudo cp rv1126b_ddr_1332MHz_v1.06.bin test.bin
  1. 使用 ddrbin_tool 进行配置

获取 rv1126b_ddr_1332MHz_v1.06.bin 文件的配置。

Terminal window
cd rkbin/tools
./ddrbin_tool.py rv1126b -g gen_param.txt
../bin/rv11/rv1126b_ddr_1332MHz_v1.06.bin

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图4

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图4

打开 gen_param.txt 后,可以查看详细的配置参数。后续将基于该默认配置进行修改。

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图5

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图5

通过配置 ddrbin_param.txt 来修改 .bin 文件的配置。

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图6

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图6

Terminal window
./ddrbin_tool.py rv1126b ddrbin_param.txt ../bin/rv11/test.bin

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图7

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图7

💡 注意:通常,ddrbin_param.txt 中的参数值为空(空白)。空值表示对应 .bin 的默认值。可以使用命令检查 test.bin 文件的配置是否正确。

修改 RV1126BMINIALL.ini 配置

Terminal window
vim rkbin/RKBOOT/RV1126BMINIALL.ini

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图8

1.2.2 修改 U-BOOT 的 DDR BIN 配置 图8

1.2.3 编译 U-BOOT 配置

  1. 编译 U-BOOT 配置。
Terminal window
./build.sh uboot

1.2.3 编译 U-BOOT 配置 图9

1.2.3 编译 U-BOOT 配置 图9

  1. 将编译后的 U-BOOT 配置更新到固件工具中。

1.2.3 编译 U-BOOT 配置 图10

1.2.3 编译 U-BOOT 配置 图10

此时,如果只重新烧写这两个配置文件,串口控制台的 U-BOOT 部分输出将能够正常显示,但 kernel(内核)部分的输出仍然会出现乱码。

1.2.3 编译 U-BOOT 配置 图11

1.2.3 编译 U-BOOT 配置 图11

因此,为了使所有内容都能正常显示,还需要继续进行内核配置。

1.2.4 修改内核(Kernel)配置

  1. 修改 rv1126b-nano.dts 配置。
Terminal window
vim kernel_dev/arch/arm64/boot/dts/rockchip/rv1126b-nano.dts

1.2.4 修改内核(Kernel)配置 图12

1.2.4 修改内核(Kernel)配置 图12

  1. 编译内核配置。
Terminal window
./build.sh kernel

1.2.4 修改内核(Kernel)配置 图13

1.2.4 修改内核(Kernel)配置 图13

如果不熟悉内核编译流程,请参考《嵌入式底层开发/Ubuntu 系统 SDK/kernel》文章。

  1. 将编译后的内核配置更新到固件工具中。

1.2.4 修改内核(Kernel)配置 图14

1.2.4 修改内核(Kernel)配置 图14

1.2.5 重新烧写

  1. 将所有更新后的配置重新烧写(刷写)到开发板。

1.2.5 重新烧写 图15

1.2.5 重新烧写 图15

  1. 最终,串口控制台的所有输出都会正常显示。

13.2. 5 重新烧写 图16

1.2.5 重新烧写 图16