基于rockpi4b启动流程(1)

本文详细介绍了RockPi4B的启动流程,包括镜像介绍和打包脚本解析。主要涉及idbloader.img、u-boot.img、trust.img、boot.img和rootfs.img五个分区,以及如何通过mk-image.sh脚本生成boot.img和system.img。内容涵盖DDR初始化、ARM Trust Firmware、uboot启动、GPT分区表创建等关键步骤。
摘要由CSDN通过智能技术生成

镜像介绍

根据官网提供的代码仓库,获取源码,README中有介绍各个仓库如何编译及编译出的镜像名称。是以Debian 系统为案例。
https://github.com/radxa/rockchip-bsp

最终编译出两个镜像,rk3399_loader_v1.12.112.bin和system.img

烧录之后开机进入uboot命令行,看下part list

=> part list mmc 0
Partition Map for MMC device 0  --   Partition Type: EFI
Part    Start LBA       End LBA         Name
Attributes
Type GUID
Partition GUID
1     0x00000040      0x00001f7f      "loader1"
attrs:  0x0000000000000000
type:   0fc63daf-8483-4772-8e79-3d69d8477de4
guid:   f89d5d3c-d4ce-4c2c-a2a4-a4568672de37
2     0x00004000      0x00005fff      "loader2"
attrs:  0x0000000000000000
type:   0fc63daf-8483-4772-8e79-3d69d8477de4
guid:   92467811-debc-4be9-ba0c-85703c475b92
3     0x00006000      0x00007fff      "trust"
attrs:  0x0000000000000000
type:   0fc63daf-8483-4772-8e79-3d69d8477de4
guid:   44ee5a82-67ea-46fb-9b1e-ac02ac6ef0db
4     0x00008000      0x00107fff      "boot"
attrs:  0x0000000000000000
type:   c12a7328-f81f-11d2-ba4b-00a0c93ec93b
guid:   6400ce01-5eee-4390-b529-06a1d84bf246
5     0x00108000      0x007a7fde      "rootfs"
attrs:  0x0000000000000000
type:   0fc63daf-8483-4772-8e79-3d69d8477de4
guid:   b921b045-1df0-41c3-af44-4c6f280d3fae

通过上述信息可以看到总共有5个分区,分别是loader1,loader2,trust,boot和rootfs。

通过查看build/mk-image.sh可以看到相应分区对应的镜像名称,对应关系如下:
loader1 ----》 idbloader.img
loader2 ----》uboot.img
trust --------》trust.img
boot --------》boot.img
rootfs ------》idbloader.img

idbloader.img

idbloader.img文件是一个Rockchip格式的预加载程序,在SoC启动时工作,它包含:

  • 由Rockchip BootROM知道的IDBlock 头;
  • DDR初始化程序,由BootROM加载到SRAM,运行在SRAM内部;
  • 下一级加载程序,由MaskROM加载并运行在DDR上;
u-boot.img

u-boot.bin 是uboot源码编译后生成的原始二进制映像,可以直接烧录到设备的闪存中。而u-boot.img则是通过mkimage工具在u-boot.bin基础上增加了一个头部信息,这个头部信息可能也包括一些额外的数据,例如启动参数和内核映像地址等。
因此,通过使用u-boot.img而不是 u-boot.bin,可以使引导ROM更容易地识别uboot映像,并更好地指导uboot在设备上正确启动。

trust.img

因为RK3399是ARM64,所以我们还需要编译 ATF (ARM Trust Firmware),ATF 主要负责在启动uboot之前把CPU从安全的EL3切换到 EL2,然后跳转到uboot,并且在内核启动后负责启动其他的CPU。

boot.img

boot.img是由Image ,rk3399-rock-pi-4b.dtb和rk3399.conf这三个文件组成的一个vfat类型的img。
rk3399.conf内容如下:

label kernel-4.4
    kernel /Image
    fdt /rk3399-rock-pi-4b.dtb
    append earlycon=uart8250,mmio32,0xff1a0000 swiotlb=1 coherent_pool=1m earlyprintk console=ttyS2,1500000n8 rw root=PARTUUID=b921b045-1d rootfstype=ext4 init=/sbin/init rootwait
rootfs.img

rootfs是根据github中debian的文件系统编译出的img, 用于文件系统的使用。

打包脚本介绍

主要介绍mk-image.sh,源码如下:

#!/bin/bash -e

LOCALPATH=$(pwd)
OUT=${LOCALPATH}/out
TOOLPATH=${LOCALPATH}/rkbin/tools
EXTLINUXPATH=${LOCALPATH}/build/extlinux
CHIP=""
TARGET=""
  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linux顿悟吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值