100ASK T113S3 Pro 主线系统故障定位与恢复
本章目标
先判断失败发生在哪个阶段,再收集该阶段的证据。不要用修改后续 UBI 参数的方式处理前面的 USB、SPL 或 SPI 控制器问题。
故障定位入口
| 最后看到的标志 | 所属阶段 |
|---|---|
无 1f3a:efe8 | BootROM FEL/USB |
| 无 SPL 串口 | SPL 未执行或 UART 错误 |
DRAM: 128 MiB 后 USB 失败 | SPL 返回 FEL |
ram_handoff_complete 后无 installer | U-Boot/installer FIT/Linux UART |
installer_failed | Linux RAM installer |
| installer 100% 后无登录 | 温重启/冷启动链 |
Unknown boot source 4 | 冷启动 SPL 介质识别 |
U-Boot 读到全 ff | U-Boot SPI NAND 传输模式 |
cannot open mtd rootfs | MTD/UBI 命名错误 |
FEL 设备找不到
现象
no Allwinner FEL/FES USB device found
检查
lsusb | grep -i '1f3a:efe8'
OPENIXCLI_BIN=../OpenixCLI/target/release/openixcli \
../OpenixCLI/target/release/openixcli --output jsonl scan
处理
- 确认连接的是 SoC OTG 数据口,不只是调试串口;
- 虚拟机中重新连接 USB 到 guest;
- 停止占用 libusb endpoint 的后台扫描程序;
- 重新让板卡进入 FEL。
多个 Allwinner 设备
auto 会拒绝猜测。根据 scan 输出选择明确的 libusb:BUS:PORT,并核对物理板卡。
SPL 没有输出
依次检查:
- UART3 PB6/PB7 接线和 115200;
CONFIG_CONS_INDEX=4是否进入最终.config;- SPL 是否为 24576 字节精确 eGON 文件;
- eGON magic、长度和 checksum;
- DDR 参数和板卡版本。
SPL 返回 FEL 失败
典型错误:
MAINLINE_SPL_RETURN_READ_FAILED
MAINLINE_SPL_RETURN_RECONNECT_FAILED
检查 SRAM swap 地址、SPL stack、return thunk、PLL_PERI0 保留、250 ms 等待以及原物理 USB 端点是否重新出现。禁止回退到直接跳 BootROM 0x20 的历史实验。
Unknown boot source 4
确认 0004-sunxi-recognize-r528-spinand-boot-source.patch 已进入 U-Boot 构建。R528 的值 4 表示 SPI NAND。
Loading Environment 时复位
确认:
CONFIG_ENV_IS_NOWHERE=y
# CONFIG_ENV_IS_IN_FAT is not set
# CONFIG_ENV_IS_IN_SPI_FLASH is not set
U-Boot 从 NAND 读到全 ff
U-Boot 专用 DTS 不得强制 quad width。Linux DTS 可以保留 quad 属性,两套 DTS 不应简单复制覆盖。
主机停在 50% 或 RAM handoff
OpenixCLI 只负责 RAM 交接。立即查看独立 UART:
- 是否出现
installer_started; - payload 哈希是否通过;
/proc/mtd是否正确;- 是否进入写入 phase;
- 是否进入 emergency shell。
没有 UART installer 证据时,writtenBytes 只是 RAM 传输字节,不是 NAND 写入量。
安装器进入 emergency shell
在 UART3 shell 中保存:
cat /proc/mtd
for f in /sys/class/mtd/mtd*/name \
/sys/class/mtd/mtd*/size \
/sys/class/mtd/mtd*/writesize \
/sys/class/mtd/mtd*/erasesize \
/sys/class/mtd/mtd*/bad_blocks; do
echo "$f=$(cat "$f" 2>/dev/null)"
done
dmesg
| 失败位置 | 优先检查 |
|---|---|
| payload SHA-256 | 分片顺序、地址、同一构建身份 |
| MTD geometry | NAND 型号、DTS、页和擦除块大小 |
| bad block 拒绝 | 厂坏块与旧 ee ee OOB 元数据 |
nandwrite | 写保护、供电、MTD 驱动 |
| readback SHA | 坏块处理、长度、产物混用 |
ubiformat | PEB、VID/OOB/ECC |
| UBIFS mount | UBI 卷名、LEB 和 rootfs 完整性 |
cannot open mtd rootfs
正确关系:
MTD 分区:sys
bootargs:ubi.mtd=sys
UBI 卷: rootfs
root: ubi0:rootfs
安装完成但没有登录
检查顺序:
- U-Boot 是否读到
boot.itb; - FIT kernel/FDT 哈希;
- earlycon 和 UART3;
ubi.mtd=sys;- UBI attach;
- UBIFS mount;
/sbin/init和 ttyS3 getty。
手工 setenv 能启动只用于定位,不能作为验收结果。
串口监控被其他程序打断
一个历史失败任务是诊断客户端关闭了 LYNX/UI 共用的 /dev/ttyACM0。安装期间只允许一个串口所有者;状态查询不能额外打开或关闭串口。
恢复 Tina 或已验证主线系统
- 完全停止当前安装任务;
- 保存所有 host/UART 错误记录;
- 让板卡重新进入 BootROM FEL;
- 选择已验证且哈希完整的恢复 bundle;
- 使用与介质匹配的 NAND-aware 恢复方式;
- 恢复后重新执行完整冷启动验收。
禁止用 dd 烧写 256 MiB 逻辑 raw 文件到 SPI NAND。raw 文件不包含正确的 OOB、ECC 和坏块处理语义。
故障记录模板
日期:
板卡/NAND:
源码提交:
artifact SHA-256:
USB 物理位置:
最后成功阶段:
原始错误:
UART 最后 100 行:
是否发生 NAND 擦写:
是否能够重新进入 FEL:
下一步: