Skip to main content

100ASK T113S3 Pro FEL RAM 安装器原理与安全边界

本章目标

理解主机侧 OpenixCLI 和板端 Linux installer 分别证明什么,避免把“RAM 文件传输完成”误报成“NAND 安装成功”。

职责划分

阶段执行者责任
计划生成板级脚本固定角色、路径、地址和 SHA-256
USB 设备选择wrapper + OpenixCLI只绑定一个明确物理端点
SPL 执行与返回OpenixCLI + 主线 SPL初始化 DDR3并回到 BootROM FEL
DRAM 传输OpenixCLI写入 U-Boot、installer FIT 和 payload
NAND 检查与写入Linux RAM installerMTD 几何、哈希、擦写、读回、UBI/UBIFS
重启后登录监控独立 UART monitor安装完成标志之后必须出现新登录提示
断电冷启动人工/受控电源验证掉电保持和正常 BootROM 启动链

OpenixCLI 计划约束

make-openix-plan.py 生成绝对路径 JSON。OpenixCLI 在打开 USB 前检查:

  • artifact 数量为 1 至 8;
  • 第一个且唯一一个 SPL 位于 0x00020000
  • SPL 是精确长度的主线 eGON.BT0,不是厂商 Boot0;
  • 恰好一个 U-Boot proper,entry 等于其 load address;
  • 所有路径为绝对路径;
  • 地址按 4 字节对齐且互不重叠;
  • 单文件、总大小和计划大小不超过上限;
  • 每个文件先复制到 0600 私有快照并重新计算 SHA-256。

USB 打开后源文件即使变化,也不会改变本次传输快照。

R528 SPL 执行

OpenixCLI 只接受目标 R528/T113 device ID,随后:

  1. 在 scratch SRAM 执行关闭 I-cache 的短程序;
  2. 将 SPL 绕开 R528 SRAM swap 区分段写入并读回;
  3. 备份被 swap 区覆盖的 SPL 字节;
  4. 安装受限的 SRAM return thunk;
  5. 执行 SPL;
  6. 等待 250 ms,读取 spl_addr + 4eGON.FEL
  7. 同一 handle 失败时,只允许在原 libusb:BUS:PORT 进行有限次数重连;
  8. 设备 ID 或物理位置变化立即失败。

该过程不会迁移到另一块 Allwinner 设备。

RAM 交接事件的真实含义

OpenixCLI 成功终点为:

{
"event": "complete",
"phase": "ram_handoff_complete",
"scope": "fel_ram_handoff",
"installerStatus": "not_observed"
}

它只证明:

  • SPL 已返回 FEL;
  • 所有 RAM artifact 已按计划传输;
  • U-Boot entry 已执行。

它不证明 Linux 已启动,也不证明 NAND 已擦写。

Linux installer 启动检查

安装器接管 UART3,首先打印:

T113S3 MAINLINE SPI-NAND INSTALLER
LYNX_PROGRESS phase=installer_started progress=55 partition=payload

随后执行:

  1. 0x44800000 保留内存恢复 payload;
  2. 校验压缩归档 SHA-256;
  3. 解包并校验内部 SHA256SUMS
  4. 检查 SPL 1 MiB、U-Boot 4 MiB、FIT 和 UBI 大小;
  5. 检查 mtd0-mtd4 名称和容量;
  6. 检查 writesize 2048 和 erasesize 131072;
  7. 检查 sys 坏块计数。

只有全部通过才进入写入。

写入与验证顺序

62%  flash_erase + nandwrite mtd0 / SPL
67% flash_erase + nandwrite mtd1 / U-Boot
72% flash_erase + nandwrite mtd3 / boot.itb
nanddump --bb=padbad + SHA-256 回读
78% ubiformat mtd4 / sys.ubi
94% ubiattach + ubinfo + 挂载 ubi0:rootfs
检查 /sbin/init 可执行
100% installer_complete + reboot

失败统一输出:

LYNX_PROGRESS phase=installer_failed progress=0 partition=unknown
INSTALL FAILED - emergency shell on ttyS3

安装器停在 shell,不自动继续下一次写入。

验证方法

主机侧必须同时保存:

  • OpenixCLI JSONL;
  • 独立 UART 原始日志;
  • 本次 artifact SHA-256;
  • USB 物理位置;
  • 源码提交。

UART monitor 只在本次 installer_complete 之后看到新的 t113s3pro-mainline login: 才返回成功。日志中较早的旧登录提示不能满足本次安装。

失败处理与回滚

  • OpenixCLI 终止:手动让板卡重新进入 FEL,再启动新任务;
  • 不允许终止失败后自动重试;
  • installer emergency shell:先保存 /proc/mtd、bad block、dmesg 和失败阶段;
  • NAND 写入中断:板卡可能不可冷启动,但仍可从 BootROM FEL 进入恢复;
  • 串口监控失败:不得据 OpenixCLI 50%/complete 判定安装成功。