rk 平台 DDR.bin 去除串口调试信息

(ROC-RK3568-PC) 裸机11_DDR初始化 因为没有办法在自己写的 tpl 中初始化 DDR,改为编写 spl。 使用 rk3568_ddr_1560MHz_v1.08.bin 做为 tpl 来初始化内存。 阅读详情
rk 平台启动时,调试串口总是会打印 ddr 调试信息,这是从 u-boot  DDR 初始化程序输出的, 这部分程序只有二进制文件, 没源码.
问度娘谷哥找不到官方的方法去除调试信息, 用了点旁门左道 -- 反汇编! : )

以 RK3288 为例, DDR 初始化程序为 32_LPDDR2_400MHz_LPDDR3_400MHz_DDR3_400MHz_20160803.bin
这个文件存放于 u-boot 代码目录下 tools/rk_tools/bin/rk32/32_LPDDR2_400MHz_LPDDR3_400MHz_DDR3_400MHz_20160803.bin
以下 DDR.bin 指的是这个文件。

1. 用 winhex 打开 DDR.bin , 查找 UART_DBG 寄存器地址 (可以在内核 rk3288.dtsi 文件中查找 uart_dbg), rk3288 的是 0xff690000: 

记下这个地址 0xe80

2. 反汇编 DDR.bin, 强制为 thumb 指令
arm-linux-gnueabihf-objdump -b binary -marm -Mforce-thumb -D ./tools/rk_tools/bin/rk32/32_LPDDR2_400MHz_LPDDR3_400MHz_DDR3_400MHz_20160803.bin > ddr.S  

3. 在 ddr.S 里搜索第一步的地址 0xe80
有两个地方加载这个地址的内容(即 UART_DBG 寄存器地址): 


分析 0xdae 部分的代码是字节发送部分(向 UART_THR 写入字节, 并待 UART_LSR 寄存器变化), 记下该地址.

4. 复制 DDR.bin 至新文件, 如 RK3288_DDR_Release.bin , 将第 3 步记录的地址内容修改为 0x4770 (对应的 thumb 指令为 "bx lr")

5. 修改 u-boot/tools/rk_tools/RKBOOT/RK3288.ini , 将 DDR 配置文件修改为第 4 步生成的 bin 文件.
6. u-boot 目录下 make 生成引导, 烧写验证

RK3288 平台已改过的 DDR.bin:

https://download.youkuaiyun.com/download/mxm12/10444790


[RK3588]调试串口波特率优化实战:从1.5M到115200的完整指南 本文提供了RK3588开发板调试串口波特率从默认1.5Mbps修改为通用115200的完整实战指南。详细解析了必须同步修改DDR初始化镜像、U-Boot配置及Linux内核设备树中fiq-debugger节点的“三件套”原理与步骤,并涵盖编译、烧录及常见问题排查,帮助开发者彻底解决串口乱码与通信失败问题。 阅读详情

相关推荐

Rockchip RK3588 利用ddrbin_tool 优化DDR变频与调试串口配置

本文详细解析了Rockchip RK3588芯片的DDR变频机制,并介绍了如何使用ddrbin_tool工具优化DDR频率配置与调试串口设置。通过实战案例展示了如何调整频率参数、配置UART调试接口,以及常见问题的排查方法,帮助开发者提升系统稳定性和调试效率。

weixin_42543046的博客 240

RK3568平台(内存篇)DDR bin文件合入

DDR的全称为Double Data Rate SDRAM(双倍速率的SDRAM),就是我们平时说的内存颗粒,也就是内存芯片。DDR在原有的SDRAM的基础上改进而来,SDRAM在一个CLK周期传输一次数据,而DDR在一个CLK周期传输两次数据,分别在上升沿和下降沿各传输一次数据。随着技术的发展,DDR经历了多轮技术迭代,发展出了DDR2、DDR3、DDR4、DDR5,从DDR到DDR5主要的区别是在于传输速率的不同,随着时钟周期的不断降低,传输速率也不断提高。DDR的发展历程‌。

weixin_49303682的博客 692

RK3399 Android移植实战:ddrbin_tool工具深度解析与DDR参数调优

本文深入解析RK3399 Android移植中的DDR参数调优,重点介绍ddrbin_tool工具的使用方法与实践技巧。通过详细的操作步骤和实战案例,帮助开发者解决DDR初始化难题,提升系统稳定性和性能,适用于定制开发板和非标内存颗粒等复杂场景。

weixin_33728708的博客 283

瑞芯微BSP专题01-ddr.bin启动日志分析

ddr.bin日志解析

kuosuoguang3325的博客 1277

Rockchip RK3588开发板调试:如何用ddrbin_tool修改Loader阶段的串口打印(UART2_M1配置)

本文详细介绍了如何在Rockchip RK3588开发板上使用ddrbin_tool工具修改Loader阶段的串口打印配置(UART2_M1),帮助开发者获取早期启动阶段的调试信息。通过实战步骤解析和高级调试技巧,解决嵌入式系统开发中的黑箱问题,提升硬件调试效率。

weixin_30572613的博客 307

保姆级教程:手把手教你修改RK3568串口波特率,从U-Boot到DDR Bin全流程避坑

本文提供RK3568串口波特率修改的保姆级教程,涵盖从U-Boot到DDR Bin的全流程操作,特别针对Firefly等主流开发板。详细解析每个修改环节的影响范围,并重点破解闭源DDR Bin的修改方法,帮助开发者避免常见问题,实现稳定串口通信。

weixin_26918763的博客 370

RK 3399p Android移植学习笔记(1)——ddrbin_tool工具使用

我这里修改下debug 串口的波特率,然后:./ddrbin_tool ddrbin_param.txt rk3399pro_ddr_800MHz_v1.24.bin 即可修改成功,并生成新的rk3399pro_ddr_800MHz_v1.24.bin,我们需要将其copy到原来的路径下,等待脚本调用打包即可。上面的图很清晰的描述启动流程,大致为BootROM->idbloader.img->uboot.img(u-boot.itb)->trust.img->boot.img->rootfs.img。

m0_56860780的博客 1954

保姆级教程:在Firefly RK3568开发板上将串口波特率从1500000改为115200(含uboot、kernel、ddr bin全流程)

本文详细介绍了在Firefly RK3568开发板上将串口波特率从1500000改为115200的全流程,涵盖uboot、kernel和ddr bin三个关键环节的修改步骤。通过清晰的原理说明和实操指南,帮助开发者解决串口调试中的常见问题,确保各阶段波特率配置一致,避免输出乱码。

weixin_26878995的博客 394

RK3506 SDK修改uboot波特率

Rockchip SDK调试串口默认波特率一般为15000000,和我们通常使用的115200波特率不一样。1 - 修改rkbin/tools/ddrbin_param.txt文件,增加串口波特率参数为115200。从这里可以看到,所使用的配置文件是 bin/rk35/rk3506_ddr_750MHz_v1.04.bin。2 - 查看rkbin/RKBOOT/RK3506MINIALL.ini文件,找到ddr配置文件。修改完成后,重新编译整个系统,就可以直接使用115200波特率查看调试信息啦。

m0_55916212的博客 1825

不止改频率:用ddrbin_tool玩转RK3588 loader调试串口(UART2_M1配置教程)

本文详细介绍了如何使用ddrbin_tool工具配置RK3588的loader调试串口,将日志重定向到UART2_M1引脚组并提升波特率至1500000。通过解析引脚复用关系和硬件电路设计,提供完整的配置验证方法,帮助工程师高效捕获DDR初始化阶段的调试信息,加速问题定位。

weixin_42715608的博客 391

RK3399 U-Boot编译移植:基于miniloader的eMMC启动方案

在嵌入式Linux开发中,芯片启动链路是系统移植的首要关卡。BootROM作为固化在SoC中的首级引导,只会从固定偏移加载特定格式的镜像,而U-Boot等主引导程序往往需要依赖一个轻量级loader完成DDR初始化与镜像搬运,这个角色在Rockchip平台即miniloader。理解TPL/SPL与ATF的分工,才能正确编译和烧录。在实际的RK3399板卡移植中,从eMMC启动时,需要将miniloader烧写到32KB偏移处,u-boot.itb置于8MB偏移,偏移错一点都会导致串口无输出。掌握交叉编译工

weixin_34380948的博客 392

RK3576启动流程全链路拆解:从BootROM到根文件系统挂载的调试实战

嵌入式系统启动流程是底层开发的核心基础,涉及芯片上电后BootROM加载SPL、SPL初始化DDR并加载U-Boot、U-Boot引导内核、内核挂载根文件系统等多个阶段。其原理在于分阶段接力设计,用最小固化代码逐步初始化硬件并加载完整系统。掌握启动流程对定位板级故障、优化启动时间、保障量产稳定性具有关键价值,广泛应用于边缘计算、工业控制等场景。本文以RK3576为例,深入拆解从BootROM到根文件系统的完整启动链路,重点分析DDR初始化、U-Boot加载、内核引导及根文件系统挂载等环节的调试方法与常见故障

weixin_33851177的博客 338

Rockchip RK3588开发板调试串口(UART)配置全攻略:从ddrbin_tool修改到uboot编译烧写

本文详细介绍了Rockchip RK3588开发板调试串口(UART)的配置方法,从ddrbin_tool修改到uboot编译烧写的全流程。通过硬件架构解析、DDR参数修改、Loader镜像集成及硬件验证等步骤,帮助开发者解决串口无输出的问题,提升调试效率。特别适用于RK3588硬件设计和早期启动调试的工程师。

weixin_42653691的博客 548

RK3576嵌入式Linux启动链路详解与故障排查指南

嵌入式Linux系统的启动过程如同多级接力,从芯片内部的BootROM到SPL、U-Boot,再到内核与根文件系统,每一阶段都有明确的职责边界。由于SoC内部SRAM有限,DDR尚未初始化,启动必须分步进行,其中DDR训练和存储介质识别是关键环节。理解U-Boot的设备树匹配、bootcmd/bootargs配置以及root挂载参数,是排查启动卡死问题的基础。实际调试中,串口日志、烧录工具识别和分区表解析能快速定位故障阶段。本文以Rockchip RK3576平台为例,完整梳理从BootROM到根文件系统的

weixin_34235457的博客 365

RK3576启动链路全解析:从BootROM到根文件系统挂载

嵌入式Linux启动流程是系统bring-up的核心环节,其本质是BootROM、SPL、U-Boot与Linux内核的层层接力。BootROM固化在SoC内部,负责从存储介质加载SPL到SRAM;SPL完成DDR初始化后加载U-Boot;U-Boot引导内核并传递设备树与启动参数;内核最终挂载根文件系统并启动用户空间。理解这一链路对驱动开发与系统集成至关重要。本文以RK3576为例,结合串口log与实战调试,拆解各阶段地址映射、镜像格式与常见卡死点,帮助开发者快速定位启动问题。

weixin_33957648的博客 438

ARM可信固件ATF深度解析:源码架构、安全审计与平台移植实战

在嵌入式系统开发中,固件是连接硬件与操作系统的关键桥梁,而安全固件更是整个系统信任链的根基。ARM Trusted Firmware(ATF,又称TF-A)作为ARMv8/v9架构下运行在EL3特权级的可信固件,承担着安全启动、运行时服务和全局状态管理的核心职责。它通过分级加载与逐级认证机制,构建从BootROM到操作系统内核的可信执行链路,并依托TrustZone实现安全世界与普通世界的隔离。无论是移动设备、边缘计算网关还是工业控制器,只要涉及ARM架构的安全功能,都绕不开ATF的工程实现。本文基于实际项

weixin_33985679的博客 478

RK3568 u-boot定制实战:menuconfig配置裁剪与设备树修改指南

嵌入式Linux开发中,u-boot作为引导加载程序,负责初始化硬件并启动内核。其配置体系通常包含defconfig、menuconfig和设备树三层,分别控制软件功能与硬件描述。通过menuconfig可裁剪启动介质、串口波特率、网络PHY等驱动,而设备树则定义引脚复用、存储节点和内存布局。合理定制能显著提升板级适配效率与系统稳定性,广泛应用于工业控制、边缘计算等场景。本文聚焦RK3568平台,详解menuconfig配置裁剪与设备树修改的完整流程,并融入yt8521 PHY配置、eMMC识别等热词,助力

weixin_34218890的博客 477

RK356x U-Boot研究所(开发篇)5.3 Kernel-DTB的使用

U-Boot 的原生架构要求一块板子必须对应一份 U-Boot dts,并且U-Boot dts生成的dtb是打包到U-Boot自己的镜像中的。这样就会出现各SoC平台上,N块板子需要N份U-Boot镜像。 不难发现,其实一个SoC平台不同的板子之间主要是外设的差异,SoC核心部分是一致的。RK平台为了实现一个SoC平台仅需要一份U-Boot镜像,因此增加了 kernel DTB 机制。本质就是在较早的阶段切到kernel DTB,用它的配置信息初始化外设。

Systemcall名屋 2397
上一篇: rk u-boot 优化多核 CPU 内存读写
下一篇: u-boot 实现 backtrace
mxm12
博客等级 码龄15年 18粉丝 10原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值