100ASK T113S3 Pro 主线镜像与分区设计
本章目标
冻结 SPI NAND 物理布局、安装阶段 DRAM 布局和镜像格式。U-Boot DTS、Linux DTS、安装器检查、启动命令和 OpenixCLI 计划必须使用同一组数值。
SPI NAND 分区
已验证的 256 MiB 开发布局为:
| MTD | 名称 | 偏移 | 大小 | 内容 |
|---|---|---|---|---|
mtd0 | spl | 0x00000000 | 1 MiB | 8 份主线 eGON SPL |
mtd1 | uboot | 0x00100000 | 4 MiB | 主线 U-Boot proper legacy image |
mtd2 | secure-storage | 0x00500000 | 1 MiB | 保留,只读 |
mtd3 | boot | 0x00600000 | 8 MiB | boot.itb |
mtd4 | sys | 0x00e00000 | 242 MiB | UBI,包含 rootfs 卷 |
总容量:
1 MiB + 4 MiB + 1 MiB + 8 MiB + 242 MiB = 256 MiB
不能把 SD/eMMC 的 GPT、MBR、ext4 或 genimage.cfg 固定偏移直接应用到 SPI NAND。
NAND 写入镜像
真正写入 NAND 的对象只有四个:
| 文件 | 目标 | 生成方法 |
|---|---|---|
spl-redundant.bin | mtd0 | 每个 128 KiB 擦除块起始处复制一份 SPL |
uboot-redundant.bin | mtd1 | u-boot.img 后补 ff 到 4 MiB |
boot.itb | mtd3 | Linux zImage + 板级 DTB + SHA-256 |
sys.ubi | mtd4 | rootfs.ubifs 封装为动态 rootfs 卷 |
secure-storage 不由安装器写入。
spl-redundant.bin的“8 份”是开发板已验证布局,不代表量产级坏块冗余策略。不同坏块分布仍需单独资格验证。
正常启动 FIT
boot.itb 使用:
| 对象 | load/entry |
|---|---|
| Linux zImage | 0x42000000 |
| 板级 DTB | 0x43000000 |
FIT 中 kernel 和 FDT 都带 SHA-256 节点。U-Boot 从 boot MTD 分区读到 0x44000000,随后 bootm 根据 FIT 指定地址展开。
FEL 安装阶段 DRAM 布局
| 角色 | 文件 | 地址 | 限制 |
|---|---|---|---|
| SPL | fel-sunxi-spl.bin | 0x00020000 | 精确 eGON SPL |
| U-Boot proper | fel-u-boot.bin | 0x42e00000 | entry 同地址 |
| 安装 FIT | fel-installer.itb | 0x44000000 | 最大 8 MiB |
| payload | fel-payload.part-* | 从 0x44800000 连续放置 | 总计最大 24 MiB |
安装 FIT 内部地址:
| 对象 | 地址 |
|---|---|
| installer Linux | 0x41000000 |
| installer DTB | 0x41800000 |
| installer initramfs | 0x41c00000 |
fel-payload-reserved-memory.dtso 保留:
0x44800000 - 0x45ffffff
避免内核把 payload 内存重新分配。
Payload 结构
封装脚本生成可复现 tar.gz:
fel-payload.tar.gz
├── spl-redundant.bin
├── uboot-redundant.bin
├── boot.itb
├── sys.ubi
└── SHA256SUMS
归档使用固定排序、时间戳 0、owner/group 0。随后按 5 MiB 切分为 1 至 5 个 fel-payload.part-*。
OpenixCLI 最多接受 8 个 artifact:
1 SPL + 1 U-Boot + 1 installer FIT + 最多 5 个 payload 分片
输出目录
out/t113s3pro-mainline-fel/
├── FEL_ARTIFACTS
├── FEL_SHA256SUMS
├── fel-sunxi-spl.bin
├── fel-u-boot.bin
├── fel-installer.itb
├── fel-payload.part-00
├── fel-payload.part-01
├── ...
├── fel-payload.tar.gz
├── spl-redundant.bin
├── uboot-redundant.bin
├── boot.itb
└── sys.ubi
验证方法
cd out/t113s3pro-mainline-fel
cat FEL_ARTIFACTS
sha256sum -c FEL_SHA256SUMS
仓库门禁还会检查:
- SPL 精确长度、eGON magic 和 checksum;
- 8 个 SPL 擦除块副本;
- U-Boot 分区镜像恰好 4 MiB;
- FIT 能被同构建
mkimage -l解析; - payload 成员和内部哈希;
- OpenixCLI 计划地址不重叠;
- 废弃 IMAGEWTY/Android/独立安装器产物不存在。
失败处理
| 错误 | 处理 |
|---|---|
| installer FIT 超过 8 MiB | 缩减 initramfs,不移动 payload 地址绕过检查 |
| payload 超过 24 MiB | 缩减 rootfs,不扩大保留区后直接烧录 |
| 分片超过 5 个 | 检查 payload 内容和压缩,不提高 OpenixCLI 上限 |
| 地址重叠 | 回到 FIT 和计划生成脚本统一修正 |
| 哈希不一致 | 删除本次输出并重新打包,禁止混用旧分片 |
需要保存的证据
每一批产物必须一起保存:FEL_ARTIFACTS、FEL_SHA256SUMS、OpenixCLI plan、顶层 SHA-256、源码提交和硬件验证状态。