docs+chore: SUOTA 安全收尾——GPIO_MAP 固化 BE 序、排障全记录与 K4 解法路线入库
This commit is contained in:
1 parent
94fea411a9
commit
237084c4a2
3 files changed
+31
-3
No files matched your search
+14
@@ -127,6 +127,20 @@
|
|||||||
- 对策:客户端预算→1800s;bridge build 7 加 OTA 分阶段事件(mem_dev/gpio_map/block_sent/progress/end/reboot)+ 带响应写 15s 超时,重跑定位卡点
|
- 对策:客户端预算→1800s;bridge build 7 加 OTA 分阶段事件(mem_dev/gpio_map/block_sent/progress/end/reboot)+ 带响应写 15s 超时,重跑定位卡点
|
||||||
- 设备睡眠行为补充:**无唤醒按钮**,自动周期醒(用户确认),守候循环法有效
|
- 设备睡眠行为补充:**无唤醒按钮**,自动周期醒(用户确认),守候循环法有效
|
||||||
|
|
||||||
|
### 2026-07-29:SUOTA 排障到底 + 安全收尾(用户决策)
|
||||||
|
|
||||||
|
**三层根因全部定位并修复**,推进至设备内部最终门禁:
|
||||||
|
|
||||||
|
1. **传输层**:asyncio StreamReader 64KiB 行限制 → 144KB 镜像请求永不到达(此前三轮"静默"真凶;空镜像探针 0.6s 全通证明管线无恙)。build 9 修复。
|
||||||
|
2. **协议层**:状态码 16 = MEM_DEV 信息应答(固件反汇编 0x07FCB770 实证),非失败。build 10 修复。
|
||||||
|
3. **引脚层**:GPIO_MAP 字节序——探针(tools/gpio_probe.py,max_blocks=2 安全模式)实证 **BE 序 {05,06,00,40} 唯一电气有效**,已固化为服务端默认。
|
||||||
|
|
||||||
|
**最终阻断(vendor 级)**:固件首缓冲处理校验 0x38000 的 'pR' 产品头(0x07FCB4AA),本机裸 'pQ' 直启无此头 → 状态 20 中止。强推 END 有变砖风险(END 写 0xAA 标志+复位;恢复需 JTAG)。**用户决策:安全收尾**。
|
||||||
|
|
||||||
|
**解法路线(遗留 K4)**:①逆向 vendor 固件目录(qbsg.top /api/firmware/catalog)是否含产品头/引导镜像;②研究裸启设备产品头自举写入路径;③评估 JTAG/UART 写头。
|
||||||
|
|
||||||
|
**本轮 bridge 迭代**:build 1→11 部署于 host-win(全部 sha256 校验+原子替换+逐级备份,熠管家执行);build 12 候选=GPIO_MAP 默认 C(已入库待部署)。
|
||||||
|
|
||||||
### 会话时间线
|
### 会话时间线
|
||||||
|
|
||||||
- 08:14 目标设定(治理+规划+执行)
|
- 08:14 目标设定(治理+规划+执行)
|
||||||
|
|||||||
@@ -31,17 +31,29 @@
|
|||||||
## 待第二轮确认/执行
|
## 待第二轮确认/执行
|
||||||
|
|
||||||
1. ~~慢速目视序列~~ 已完成(见 #10-12 行)
|
1. ~~慢速目视序列~~ 已完成(见 #10-12 行)
|
||||||
2. **G4 SUOTA 首刷**:仅改版本串镜像已备(analysis/firmware/fw_tst.img,预检通过),**用户决定本轮跳过**(2026-07-28),后续择机执行:build 5 在线、流程就绪(ota --yes → 观察重启 → 回滚)
|
2. **G4 SUOTA 首刷**:已推进至设备内部产品头门禁(见下"SUOTA 排障全记录"),**用户决策安全收尾**(2026-07-29),后续解法见遗留项
|
||||||
3. 固件 no-op 验证:rotation/wifi 应无屏效
|
3. 固件 no-op 验证:rotation/wifi 应无屏效
|
||||||
4. 六抖动算法屏显差异、模板 6 种屏显
|
4. 六抖动算法屏显差异、模板 6 种屏显
|
||||||
|
|
||||||
|
## SUOTA 排障全记录(2026-07-29)
|
||||||
|
|
||||||
|
| 层 | 问题 | 根因与处置 |
|
||||||
|
|---|---|---|
|
||||||
|
| 传输 | 三轮"首块前静默停滞" | **asyncio StreamReader 64KiB 行限制**,144KB 镜像请求永不到达(build 9: limit=4MiB) |
|
||||||
|
| 协议 | 状态码 16 误杀 | 固件反汇编实证 = MEM_DEV type 0x13 信息应答(0x07FCB770),build 10 按信息码处理 |
|
||||||
|
| 引脚 | 块1 状态 22(0x38000 读失败) | GPIO_MAP 字节序错误;探针实证 **BE 序 {05,06,00,40} 电气有效**(已固化为服务端默认) |
|
||||||
|
| 门禁 | 状态 20(产品头无效) | **设备 0x38000 无有效 'pR' 产品头**(裸 'pQ' 直启),固件中止首缓冲处理——vendor 级设计,强推有砖险,**用户决策安全收尾** |
|
||||||
|
|
||||||
|
设备全程零风险(探针均 max_blocks=2 安全模式,不发 END)。
|
||||||
|
|
||||||
## 已知问题
|
## 已知问题
|
||||||
|
|
||||||
| # | 问题 | 状态 |
|
| # | 问题 | 状态 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| K1 | 停车牌 EF+双写号码:命令 ACK 但屏不显(含 11 位号码、去 e2 变体均试) | 待查:疑似固件家族格式分叉(d8 hex-concat)或渲染与模式联动;协议帧与 web 证据一致 |
|
| K1 | 停车牌 EF+双写号码:命令 ACK 但屏不显(含 11 位号码、去 e2 变体均试) | 待查:疑似固件家族格式分叉(d8 hex-concat)或渲染与模式联动;协议帧与 web 证据一致 |
|
||||||
| K2 | 设备睡眠快(广播窗 30-60s) | 已有工作法:batch 单连接 + 守候循环 |
|
| K2 | 设备睡眠快(广播窗 30-60s,无唤醒按钮、自动周期醒) | 已有工作法:batch 单连接 + 守候循环 |
|
||||||
| K3 | 多次命令间隔断连(WinError -2147023673)1 次 | 瞬态(睡眠间隙),重连即恢复 |
|
| K3 | 多次命令间隔断连(WinError -2147023673)1 次 | 瞬态(睡眠间隙),重连即恢复 |
|
||||||
|
| K4 | **SUOTA 产品头门禁**:0x38000 无 'pR' | 解法案:①逆向 vendor 镜像目录是否含产品头镜像 ②研究裸启设备的产品头自举写入路径 ③评估 JTAG/UART 写头 |
|
||||||
|
|
||||||
## 环境备注
|
## 环境备注
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,9 @@ SPOTA_GPIO_MAP_UUID = "724249f0-5ec3-4b5f-8804-42345af08651"
|
|||||||
SPOTA_PATCH_DATA_UUID = "457871e8-d516-4ca1-9116-57d0b17b9cb2"
|
SPOTA_PATCH_DATA_UUID = "457871e8-d516-4ca1-9116-57d0b17b9cb2"
|
||||||
SPOTA_PATCH_LEN_UUID = "9d84b9a3-000c-49d8-9183-855b673fda31"
|
SPOTA_PATCH_LEN_UUID = "9d84b9a3-000c-49d8-9183-855b673fda31"
|
||||||
MEM_DEV_SPI_FLASH = bytes([0x00, 0x00, 0x00, 0x13])
|
MEM_DEV_SPI_FLASH = bytes([0x00, 0x00, 0x00, 0x13])
|
||||||
GPIO_MAP_DEFAULT = bytes([0x00, 0x00, 0x06, 0x05])
|
GPIO_MAP_DEFAULT = bytes([0x05, 0x06, 0x00, 0x40])
|
||||||
|
# GPIO_MAP 实证(2026-07-29 gpio_probe):BE 序 = APK 整数 0x05060040,唯一电气有效
|
||||||
|
# ({00,00,06,05}/{40,00,06,05} 均致 0x38000 读失败=状态 22;C 读成功=状态 20 系产品头缺失,非引脚问题)
|
||||||
END_SIGNAL = bytes([0x00, 0x00, 0x00, 0xFE])
|
END_SIGNAL = bytes([0x00, 0x00, 0x00, 0xFE])
|
||||||
REBOOT_SIGNAL = bytes([0x00, 0x00, 0x00, 0xFD])
|
REBOOT_SIGNAL = bytes([0x00, 0x00, 0x00, 0xFD])
|
||||||
BLOCK_SIZE = 240
|
BLOCK_SIZE = 240
|
||||||
|
|||||||
Reference in new issue
Block a user