----------------------------------------------------------------------------------------------------------------------------开发板 :NanoPC-T4开发板eMMC :16GBLPDDR3:4GB显示屏 :15.6英寸HDMI接口显示屏u-boot :2017.09----------------------------------------------------------------------------------------------------------------------------
NanoPC-T4开发板,主控芯片是Rockchip RK3399,big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz) + 四Cortex-A53小核结构(up to 1.5GHz);Cortex-A72处理器是Armv8-A架构下的一款高性能、低功耗的处理器。
我们接着上一节,介绍Rockchip处理器启动支持的两种引导方式:
- TPL/SPL加载:使用Rockchip官方提供的TPL/SPL U-boot(就是我们上面说的小的uboot),该方式完全开源;
- 官方固件加载:使用Rockchip idbLoader,来自Rockchip rkbin项目的Rockchip DDR初始化bin和miniloader bin,该方式不开源;
这一节我们将介绍采用官方固件方式方式,如何编译源码以及烧录程序到eMMC,从而完成uboot的启动。
一、idbloader.img
我们基于Rockchip rkbin官方给的ddr.bin、miniloader.bin来构建rk3399_loader_v1.27.126.bin。
- ddr.bin:等价于我们之前说的TPL,用于初始化DDR;
- miniloader.bin:Rockchip修改的一个bootloader,等价于我们之前说的SPL,用于加载uboot;
1.1 下载rkbin
我们可以在Rockchip的github上下载到Rockchip rkbin项目,如下所示:
root@zhengyang:/work/sambashare/rk3399# git clone https://github.com/rockchip-linux/rkbin.git --depth 1
1.2 合并
在rkbin根目录下执行如下命令:
root@zhengyang:/work/sambashare/rk3399# cd rkbin/
root@zhengyang:/work/sambashare/rk3399/rkbin# tools/mkimage -n rk3399 -T rksd -d bin/rk33/rk3399_ddr_800MHz_v1.27.bin idbloader.img
Image Type: Rockchip RK33 (SD/MMC) boot image
Init Data Size: 153600 bytes
root@zhengyang:/work/sambashare/rk3399/rkbin# cat bin/rk33/rk3399_miniloader_v1.26.bin >> idbloader.img
root@zhengyang:/work/sambashare/rk3399/rkbin# ll idbloader.img
-rw-r--r-- 1 root root 239900 5月 15 20:47 idbloader.img
二、u-boot.img
使用Rockchip miniloader的idbloader时,需要将u-boot.bin通过tools/loaderimage转换为可加载的miniloader格式。
2.1 编译uboot
关于uboot的编译在上一篇博客中已经介绍的很详细了,这里不再重复介绍了,具体参考Rockchip RK3399- TPL/SPL方式加载uboot。
编译完成,在在uboot根录下生成文件有:root@zhengyang:/work/sambashare/rk3399/u-boot# ll u-boot* Sys*
-rw-r--r-- 1 root root 153740 5月 14 10:30 System.map
-rwxr-xr-x 1 root root 6872736 5月 14 10:30 u-boot*
-rw-r--r-- 1 root root 931504 5月 14 10:30 u-boot.bin
-rw-r--r-- 1 root root 15808 5月 14 10:30 u-boot.cfg
-rw-r--r-- 1 root root 9996 5月 14 10:30 u-boot.cfg.configs
-rw-r--r-- 1 root root 51685 5月 14 10:30 u-boot.dtb # 设备树
-rw-r--r-- 1 root root 931501 5月 14 10:30 u-boot-dtb.bin # 等同u-boot.bin
-rw-r--r-- 1 root root 932864 5月 14 10:30 u-boot-dtb.img # 等同u-boot.img
-rw-r--r-- 1 root root 932864 5月 14 10:30 u-boot.img
-rw-r--r-- 1 root root 1304 5月 14 10:30 u-boot.lds
-rw-r--r-- 1 root root 800454 5