找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

408

积分

0

好友

52

主题
发表于 2025-12-28 23:11:54 | 查看: 27| 回复: 0

默认情况下,RK3566平台的调试串口(UART2)波特率设置为1.5Mbps(1500000)。但在某些硬件调试场景中,我们可能需要将其调整为更通用的115200波特率。本文将详细介绍在Orangepi 3B开发板上,修改DDR初始化代码、U-Boot及内核设备树,以完成此项配置变更的完整步骤。

准备工作

在开始修改前,需要准备好相应的开发环境与源码。本次操作涉及以下关键文件:

  • DDR配置rk3566_ddr_1056MHz_v1.10.bin
    • 文件来源:可通过追踪 orangepi-build-next 构建流程,在 external/cache/sources/rkbin-tools/rk35/ 目录下找到,或从Firefly ROC-RK3566-PC等相近平台的SDK中获取。
  • U-Boot源码:需能进行配置修改与编译。
  • 内核源码:用于修改设备树(DTB)文件。

修改步骤

1. 修改DDR初始化二进制文件

首先需要修改DDR初始化阶段的串口配置。这里使用 ddrbin_tool 工具进行操作。

  1. rk3566_ddr_1056MHz_v1.10.binddrbin_tool 工具置于同一目录(例如 rkbin/tools)。
  2. 创建或编辑 ddrbin_param.txt 参数文件,确保其中包含 uart baudrate=115200 配置项。
  3. 执行以下命令,生成新的DDR初始化文件:
    ./ddrbin_tool rk3566 ddrbin_param.txt rk3566_ddr_1056MHz_v1.10.bin

    执行成功后,rk3566_ddr_1056MHz_v1.10.bin 文件即被更新。

注:ddrbin_tool 工具可能需要从相关平台的SDK中获取。

2. 配置与编译U-Boot

接下来需要修改U-Boot的串口波特率配置。

  1. 修改配置
    打开U-Boot配置文件。你可以通过 make menuconfig 在图形界面中修改,或直接编辑默认配置文件(如 configs/orangepi-3b-rk3566_defconfig),确保 CONFIG_BAUDRATE 的值被设置为 115200

  2. 编译U-Boot
    配置完成后,使用交叉编译工具链进行编译。以下是一个编译示例:

    export CROSS_COMPILE=/path/to/your/gcc-arm-9.2-.../bin/aarch64-none-linux-gnu-
    make BL31=/path/to/rk3568_bl31_v1.28.elf spl/u-boot-spl.bin u-boot.dtb u-boot.itb -j12

    关于如何搭建与使用交叉编译环境,可以参考 Linux系统管理与运维 相关的资料。

  3. 打包idbloader
    使用 mkimage 工具,将修改后的DDR bin文件与编译好的SPL打包:

    tools/mkimage -n rk3568 -T rksd -d /path/to/modified_rk3566_ddr_1056MHz_v1.10.bin:spl/u-boot-spl.bin idbloader.img

    生成 idbloader.imgu-boot.itb 文件。

  4. 烧写至设备
    将生成的两个文件拷贝到开发板,并写入eMMC存储:

    dd if=idbloader.img of=/dev/mmcblk0 seek=64 conv=notrunc status=none
    dd if=u-boot.itb of=/dev/mmcblk0 seek=16384 conv=notrunc status=none

3. 修改内核设备树(DTB)

最后一步是修改Linux内核的设备树源文件,以配置内核阶段的调试串口。

  1. 定位并编辑设备树源文件
    打开内核源码中的设备树文件,例如:arch/arm64/boot/dts/rockchip/rk3568-linux.dtsi
    找到 fiq_debugger 节点,将其 rockchip,baudrate 属性值从 <1500000> 修改为 <115200>

  2. 修改内容示例

    fiq_debugger: fiq-debugger {
        compatible = "rockchip,fiq-debugger";
        rockchip,serial-id = <2>;
        rockchip,wake-irq = <0>;
        /* If enable uart uses irq instead of fiq */
        rockchip,irq-mode-enable = <1>;
        /* rockchip,baudrate = <1500000>; */ /* 注释掉原配置 */
        rockchip,baudrate = <115200>;      /* 修改为115200 */
        interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&uart2m0_xfer>;
        status = "okay";
    };

    设备树是描述硬件连接和配置的重要机制,深入理解其语法有助于进行更复杂的驱动定制,相关内容可查阅 网络与操作系统底层 知识。

  3. 编译并替换DTB
    重新编译内核设备树,将生成的 rk3566-orangepi-3b-v2.dtb(或对应名称的dtb文件)替换到开发板的 /boot/dtb/rockchip/ 目录下。

完成以上三个步骤后,重启开发板,调试串口的波特率即应从1.5Mbps成功变更为115200bps。请注意,此修改涉及系统底层引导的多个阶段,确保每一步的修改和烧写都正确无误。




上一篇:X86汇编基础指令详解:寄存器与常见指令操作指南
下一篇:从歌词《想起》到情感分析:探索NLP技术中的文本记忆与情绪计算
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 17:55 , Processed in 0.189801 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表