一、下载U-Boot
(1)Upstream U-Boot
可以通过运行以下命令来克隆u-boot存储库:
或者,可以使用u-boot-rockchip,这可能与某些补丁程序不在主线上:
(2)Rockchip U-Boot
可以通过运行以下命令来克隆u-boot存储库:
二、支持设备
上游U-Boot 支持Rockchip SoCs:
RK3036, RK3188, RK3288, RK3328, RK3399
- RK3036 板子支持:
- EVB RK3036 - 使用evb-rk3036 配置
- Kylin - 使用kylin_rk3036 配置
- RK3288 板子支持:
- EVB RK3288 - 使用evb-rk3288 配置
- Firefly RK3288 - 使用firefly-rk3288 配置
- Hisense Chromebook - 使用chromebook_jerry 配置
- Miniarm RK3288 - 使用miniarm-rk3288 配置
- PopMetal RK3288 - 使用popmetal-rk3288 配置
- Radxa Rock 2 - 使用rock2 配置
- ASUS Tinker
- RK3188 板子支持:
- Radxa Rock - 使用rock 配置
- RK3328 板子支持:
- EVB RK3328 - 使用evb-rk3328 配置
- RK3399 板子支持:
- EVB RK3399 - 使用evb-rk3399 配置
三、获取工具链
在Ubuntu14.04中,可以使用下面的命令安装armv7的交叉编译器:
对于arm64:
请注意,最新的U-Boot需要gcc-5.0和更高版本,建议使用linaro 6.3.1。
四、构建U-Boot
(1)配置U-Boot
首先,需要为板子选择一个正确的defconfig;
确定要构建的<board_name>后,配置:
可能需要通过修改defconfig文件去改变U-Boot支持的功能或着也可以使用menuconfig来进行设置:
(2)构建Rockchip U-Boot
为了方便起见,Rockchip提供了一个脚本'make.sh',可在kernel之前得到一些东西,这个脚本需要工具链与rkbin 的支持。
例如构建rk3399的例子:
也可以使用'./make.sh -h'获取更多选项。
它的输出包含pre-loader, trust and u-boot 镜像,它们可与rockchip upagrade 工具一起使用,
(3)构建Upstream U-Boot
Upstream U-Boot与Rockchip U-Boot相同操作。
对于armv7:
对于ARM64:
为了支持ARM DS-5中的调试符号,您可能需要在make命令中添加ctag:
在这个步骤中会输出包括u-boot.bin, spl/u-boot-spl.bin, tpl/u-boot-tpl.bin,并且需要在使用rockchip upagrade 工具之前使用mkimage工具。详细可参考boot option。
SPL FIT 镜像支持ATF
为了支持SPL中的trust ,可以使用FIT镜像,它定义在Makefile中'mkimage'命令,并在defconfig中定义了脚本:
注意:请复制trust 二进制文件(来自rkbin中的optee.bin 或 bl31.elf)到u-boot根目录并将其重命名为 tee.bin(armv7)或bl31.elf(armv8)。
输出u-boot.itb是一个包括u-boot-nodtb.bin, board.dtb, 和trust 二进制文件的基包,可直接与upgrade 工具使用。
五、安装U-Boot
请参阅boot option了解如何操作一下步骤:
-打包可用的二进制文件;
-从eMMC/SD卡烧写和引导。
六、引导命令
- Rockchip U-Boot 支持镜像类型:
- Android boot(boot_android)
- Rockchip RKIMG boot(boot_rockchip)
- LInux distro boot(distro_bootcmd)
- Upstream U-Boot 支持镜像类型:
- Linux distro boot(distro_bootcmd)
七、通过U-Boot下载固件
在U-Boot中,有多种方法可以通过U-Boot将镜像更新到emmc中,可以选择任何一种简单易用的方法。
- fastboot: 请查阅fastboot
- rockusb: 请查阅rockusb