RK 系列启动与 U-Boot 打包概述(OK3506 适配说明)
本文总结 RK 系列 SoC 的典型启动流程、常见镜像格式与打包方法,结合 OK3506(RK3506,ARMv7)移植的实际经验给出要点与注意事项。
1. 启动阶段(简要)
Rockchip 引导通常分 5 个阶段(示意):
- BL1(ROM) — SoC 上电后执行的内部 ROM。
- BL2 / SPL(pre-loader / TPL) — 初始化 DRAM、外设并加载主 U‑Boot。
- BL31(EL3 runtime)/ OP-TEE(可选) — 安全监控与运行时服务(ARMv8)或 TEE(ARMv7 下为 tee.bin)。
- BL33(U‑Boot) — 主引导程序,负责加载 kernel/fit 等。
- Kernel / Rootfs — 正式引导 Linux。
OK3506 为 ARMv7,仅需 tee.bin 作 Trusted OS;ARMv8 平台还会有 bl31/bl32 等。

下图可以清晰的展示基于ARMV8的启动方式,在boot中是需要bl1,bl2,bl31,bl32的,在实际的uboot.fit中也会加入安全启动内容。但是要注意的是我用的rk3506的ARMv7的,所以只有安全启动的tee.bin,没有其他内容。

2. 常见镜像类型(RK 平台)
- kernel.img / zImage:内核。
- resource.img:DTB + logo 等资源(用于 RK/Android 格式与 FIT)。
- boot.img(RK 格式或 Android 格式):可包含 kernel + ramdisk + resource + DTB。
- u-boot.itb / u-boot.img:主 U‑Boot(含 ATF/TEE 时为 itb 格式)。
- trust.img:ATF/TEE(仅在需要时)。
- amp.img:多核异构系统下的 AMP 固件。
引导优先级通常:android > rk > distro(distro 为通用 FIT/文件系统加载方式)。

rk系列实际上支持三种固件制作方式,可以看下面。



还有两种uboot的格式。

3. FIT / ITS 打包
- .its 文件是 FIT 的源描述(images、configurations)。
- 打包用工具:建议使用源码树中编译的 …/u-boot/tools/mkimage,系统包 mkimage 常缺少 FIT 支持。
- 常见约定地址(示例,从板上日志确认):
- kernel load/entry: 0x01100000
- fdt load: 0x00063000
- device/rockchip 的 mk-fitimage.sh 会用占位符(0xffffff00/0xffffff01)替换为合适地址,通常不用手工硬编码。
示例 .its(核心字段)请保证 images 节点与 configurations 引用一致(使用 @1 单元名并在 configuration 中以字符串引用 “kernel@1”)。
4. partition / parameter.txt
- parameter.txt(或 GPT)定义闪存分区起始扇区与大小,SPL 和 U‑Boot 在不同阶段使用该信息。
- SPL 有时会硬编码默认偏移(例如 0x2000/0x4000),确保 SPL 的配置(CONFIG_MTD_BLK_U_BOOT_OFFS 等)与 parameter.txt 一致,或将正确的 parameter.txt 烧录到扇区 0。
- 使用 rkdeveloptool 时,若 SPL 未读取 partition 信息,需按 LBA(扇区)写入(例如:wl 0x4000 u-boot.itb)。
5. resource.img 与验证(Verified Boot)
- resource.img 常包含签名/哈希信息,U‑Boot 验证 FIT 时会查 resource(日志中显示
resource: sha256+)。 - 若启用 verified boot,确保同时烧录 resource.img 与对应的 FIT/u-boot,否则校验失败。
对于有大小核的情况来说,还需要制作amp.img

714

被折叠的 条评论
为什么被折叠?



