1 下载ARM Trusted Firmware
1.1 Rockchip ATF
Rockchip 不提供 ATF 源代码,但是 ATF 二进制文件位于 rkbin repository。
1.2 Upstream ATF
从 github 中获取源代码:
git clone https://github.com/ARM-software/arm-trusted-firmware.git
2 支持设备
Upstream ARM Trusted Firmware 支持 Rockchip SoCs:
- RK3399
- RK3328
- RK3368
3 构建ATF
此处使用 mk-atf.sh 脚本来构建 ATF。
$ cat mk-atf.sh
#!/bin/bash
make realclean
CFLAGS='-gdwarf-2' \
CROSS_COMPILE=aarch64-linux-gnu- \
make PLAT=rk3399 DEBUG=0 ERROR_DEPRECATED=1 bl31
因为 RK3399 ATF 中有一个 cortex-M0 的代码,因此需要一个编译器。安装方法:
sudo apt-get install gcc-arm-none-eabi
可以在构建完成后得到 bl31.elf bl31.bin 。
注意:最新版本的ATF(包括 rockchip 版本和 upstream 版本)bl31.elf 代替了 bl31.bin,bl31.bin 现在不可用。
4 安装ATF
4.1 使用U-Boot SPL FIT镜像
复制 trust 二进制文件( optee.bin 或 bl31.elf )的目录,并将其重命名为 tee.bin(armv7)或 bl31.elf(armv8)。使用下面的命令来获得 u-boot.itb:
make u-boot.itb
输出 u-boot.itb 是一个包括 u-boot-nodtb.bin , board.dtb 与可以通过 SPL 加载的 trust 二进制文件。
4.2 使用Rockchip miniloader
或者,可以使用 Rockchip miniloader 和 U-Boot,这不需要 SPL。
ATF 是由 miniloader 加载的,因此应该将其打包为 miniloader 的已知格式:
trust_merger rk_tools/RKTRUST/RK3399TRUST.ini trust.img
根据分区定义,在地址偏移 0x6000 处写入 trust.img。