启动文件关系¶
理解每个文件由谁读取,可以避免把 U-Boot 设备树、Linux 设备树和根文件系统混在一起。
TF 卡启动链¶
V3S BootROM
-> TF 卡 8KiB 偏移处的 SPL/U-Boot
-> FAT32 第 1 分区的 zImage
-> FAT32 第 1 分区的 sun8i-v3s-strongpi.dtb
-> ext4 第 2 分区的根文件系统
| 文件 | 来源 | 写入位置 |
|---|---|---|
u-boot-sunxi-with-spl.bin |
U-Boot 编译 | 整盘 8KiB 偏移 |
zImage |
Linux 编译 | 第 1 分区 |
sun8i-v3s-strongpi.dtb |
Linux 的 spinand DTB 重命名 | 第 1 分区 |
| 根文件树 | Buildroot rootfs.tar 解包 |
第 2 分区 |
TF 版 U-Boot 的 bootargs 指定 root=/dev/mmcblk0p2。
SPI NAND 启动链¶
V3S BootROM
-> NAND 中的 SPL
-> 0x020000 的 u-boot.img
-> 0x100000 的 Linux DTB
-> 0x120000 的 zImage
-> 0x720000 起始的 UBI/UBIFS 根文件系统
NAND 版 U-Boot 的 bootargs 指定:
root=ubi0:rootfs rootfstype=ubifs ubi.mtd=3
两类设备树¶
| 文件 | 使用者 | 作用 |
|---|---|---|
uboot/u-boot.dtb |
U-Boot | U-Boot 阶段的串口、SPI、显示等硬件 |
kernel/.../sun8i-v3s-strongpi-spinand.dtb |
Linux | Linux 驱动、NAND 分区、网络、触摸、音频等硬件 |
修改 Linux 设备树不会自动改变 U-Boot 的屏幕初始化或启动命令;修改 U-Boot 设备树也不会替代 Linux DTB。
更新规则¶
- 修改 U-Boot:重新写入
u-boot-sunxi-with-spl.bin和u-boot.img,TF 卡则重新制作整盘镜像。 - 修改 Linux 设备树:重新编译并写入/复制 DTB。
- 修改内核:重新编译并写入/复制
zImage。 - 修改根文件系统:重新生成
rootfs.tar,再制作 ext4 或ubi.img。