注1:描述细节有不准确,不清晰之处,请多指正,谢谢!
1,Arm架构的启动流程:
Boot option - Rockchip open source Document
上面的图很清晰的描述启动流程,大致为BootROM->idbloader.img->uboot.img(u-boot.itb)->trust.img->boot.img->rootfs.img
我们这次修改的就是左边Boot Flow 1的idbloader.img下的ddr.bin部分;
2,确定idbloader.img中的两个组成bin文件:
idbloader.img属于uboot的早期阶段,在rk源码的uboot部分操作,又因为idbloader.img不开源,只能用rkbin下面的工具修改:
在rk下的/xxx/rkbin/RKBOOT/下:
可以看出,loader1对应的是bin/rk33/rk3399pro_ddr_800MHz_v1.24.bin,loader2对应的是bin/rk33/rk3399pro_miniloader_v1.19.bin,将需要修改的rk3399pro_ddr_800MHz_v1.24.bin备份后复制到/xxx/rkbin/tools目录下:
3,使用ddrbin_tool进行参数修改:
ddrbin_tool_user_guide.txt包含了ddrbin_tool的使用方法,简单来说就是将修改的参数写入到表格ddrbin_param.txt中,然后工具导入到bin文件中:
我这里修改下debug 串口的波特率,然后:./ddrbin_tool ddrbin_param.txt rk3399pro_ddr_800MHz_v1.24.bin 即可修改成功,并生成新的rk3399pro_ddr_800MHz_v1.24.bin,我们需要将其copy到原来的路径下,等待脚本调用打包即可。
4,让修改后bin文件生效:
如果是仅重新打包生成rk3399pro_loader_v1.24.119.bin,可在uboot路径下使用命令:./make.sh loader,完全重新编译uboot也可以生成,最终可以运行一级目录下的mkimage.sh脚本,将会自动复制到/rockdev/Image-xxx/下,并改名为MiniLoaderAll.bin,最终用rk的工具烧写就行了。