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

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.csdn.net/download/mxm12/10444790


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值