loader.bin 包含 一个TPL文件 和 两个 SPL 文件。
通过 "./RKLoaderTools/boot_merger RKLoader.ini" 命令行生成
RKLoader.ini 中需要指定 tpl.bin usb.bin spl.bin三个bin文件的路径
从官方的开源uboot项目(u-boot-next-dev)来看:
TPL 默认是官方rkbin中的 rk3568_ddr_1560MHz_v1.08.bin
SPL 默认是官方rkbin中的 rk356x_usbplug_v1.08.bin + 编译出来的 ./spl/u-boot-spl.bin
当TPL运行完退回 bootrom 后, bootrom 会加载哪一个SPL 由TPL退出时的返回值决定。
(哪一个SPL指:usbplug.bin 或者 ./spl/u-boot-spl.bin)
官方的TPL(rk3568_ddr_1560MHz_v1.08.bin) 中,会根据启动设备决定该返回值:
如果启动设备是 eMMC (loader from emmc ) 会返回 0 给 bootrom, 让它加载 spl.bin
如果启动设备是 usbDnl(loader from usb dnl) 会返回 1 给 bootrom,让它加载 usb.bin
也就是,
如果想通过电脑端软件usb下载运行你的 loader.bin,应该在制作时把spl.bin放到usb路径处
而如果想让板子从 emmc 加载运行你的 loader.bin,应该在制作时把spl.bin放到spl 路径处
明显的, 在测试时,使用usb下载运行 loader.bin 的方式要方便得多。
但不好的是, 因为占用了usb路径,bootrom 将无法为电脑端软件提供高级烧写功能。
两种运行方式的操作步骤:
一). 电脑端软件usb下载运行 loader.bin
a. 设备启动到maskrom模式
b. RKDevTool_Release_v2.84 切换到第三页("高级功能"页)
c. 选把 loader.bin ,再点击下载按钮即可。
二). 烧写到emmc再重启运行loader.bin
a. 设备启动到maskrom模式
b. RKDevTool_Release_v2.84 切换到第一页("下载镜像"页)
c. 把 loader.bin 烧到存储地址0x00000000 ,烧完重启即可。
d. 如果你的 rk3568 设备除了 emmc 还是 nor flash 存储,那要先切换存储。
切换存储的操作步骤:
RKDevTool 切换到 "高级功能" 页, 在此页面下载 MiniLoaderAll.bin 到内存运行,
下载完不需要重启,->
点击此页面的 "读取存储列表" ->
在右边列表中选择 Emmc,->
再点击 "切换存储",->
就可以切换要烧写的目标存储为eMMC。
MiniLoaderAll.bin 可以从官网下载, 也可以根据前面的介绍自己制作一个。
(制作时 ini 中 usbplug.bin 放对位置即可)。
最后,因为 tpl 的运行内存只有64kb的iRam, 并且不会写初始化rk3568的DDR,
只能写SPL代码了。
后来发现有文档的:Rockchip RK3568 TRM Part2 V1.1-20210301.pdf
但还是不会写DDR初始化的代码,空了读这个文档,结合 rk3399 的代码来试试。