diff --git a/PROGRESS.md b/PROGRESS.md index 1ad0ff0..702df5e 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -141,6 +141,19 @@ **本轮 bridge 迭代**:build 1→11 部署于 host-win(全部 sha256 校验+原子替换+逐级备份,熠管家执行);build 12 候选=GPIO_MAP 默认 C(已入库待部署)。 +### 2026-07-29:路线 1 完成——工厂布局破解,G4 完整解法就位 + +**vendor 固件渠道全逆向**: +- qbsg.top catalog(免认证):PP_da14585_4.2_CH.img 与本机镜像 sha256 一致 +- **file_down.php 线刷固件 PP_da14585_4.2_CH.bin(224KB)= 完整工厂布局**:'pP' 二级引导@0x0 + 双 bank 'pQ'@0x2000/0x14000 + **'pR' 产品头@0x38000**(指向两 bank) +- NEW.bin 同构,其 app1 体 == vendor OTA NEW.img 体(OTA .img=bank 镜像,互证) + +**SUOTA 门禁定案**:本机为裸布局(app 直写 0x0,无引导/产品头),非引脚/协议问题。烧后健康复查:DIS 原固件未变、331f 通道正常(零写入实证)。 + +**G4 完整解法**(docs/firmware-layout.md): +- 路径 A:DA14585 ROM UART 线刷恢复工厂布局(已存档 .bin 固件;需开盖接 UART,用户物理操作) +- 路径 B(已具备):图像/激活 flash 写 + 全部 BLE 功能 + 离线 keygen 激活 + ### 会话时间线 - 08:14 目标设定(治理+规划+执行) diff --git a/analysis/web/PP_4.2_CH.bin b/analysis/web/PP_4.2_CH.bin new file mode 100644 index 0000000..2b77be3 Binary files /dev/null and b/analysis/web/PP_4.2_CH.bin differ diff --git a/analysis/web/PP_4.2_NEW.bin b/analysis/web/PP_4.2_NEW.bin new file mode 100644 index 0000000..a58488e Binary files /dev/null and b/analysis/web/PP_4.2_NEW.bin differ diff --git a/docs/firmware-layout.md b/docs/firmware-layout.md new file mode 100644 index 0000000..f616368 --- /dev/null +++ b/docs/firmware-layout.md @@ -0,0 +1,53 @@ +# 闪存布局与固件可控路径(4.2寸 DA14585 设备) + +> 证据:analysis/web/PP_4.2_CH.bin / PP_4.2_NEW.bin(vendor 线刷固件,file_down.php 下载)、 +> app/firmware-PP_da14585_4.2_CH.img(OTA 镜像)、docs/firmware-analysis.md + +## 1. 工厂布局(线刷 .bin,总 0x38018 字节) + +| 区域 | 偏移 | 内容 | +|---|---|---| +| 二级引导 | 0x00000–0x01FFF | **'pP'**(0x5070)+ 向量表(SP=0x07FD7B00, Reset=0x07FC00B5) | +| Bank A | 0x02000–0x13FFF | **'pQ' 应用镜像 1**(CH: 72424B / NEW: 71460B,flags 0x01AA) | +| Bank B | 0x14000–0x37FFF | **'pQ' 应用镜像 2**(50416B,flags 0x00AA,无版本串——恢复/备援镜像) | +| 产品头 | 0x38000 | **'pR'**(24B):`7052 0000 0020 0000 0040 0100 ffff…` | + +产品头格式(24B):`[0:2] 'pR' · [4:8] image1_addr=0x00002000 · [8:12] image2_addr=0x00014000 · 其余 0xFF`。 + +验证:NEW.bin 的 app1 体与 vendor OTA 的 NEW.img 体**完全一致**——OTA .img 即 bank 镜像。 + +## 2. 本机布局(实测推断) + +本机 0x0000 处为 'pQ' 应用(raw 直写单镜像,无 'pP' 引导、无 app2、**0x38000 无 'pR'**)。 +证据:SUOTA 首缓冲校验 0x38000 产品头失败(状态 20,GPIO 电气有效下真读结果)。 + +引导链:DA14585 boot ROM → 0x38000 有 'pR' 时走产品头双 bank;无则裸启 0x0 的 'pQ'(本机路径)。 + +## 3. SUOTA 与布局的关系 + +固件 SUOTA 接收器(0x07FCB3F0)首缓冲处理时: +1. 读 0x38000 'pR' → 定当前活动 bank +2. 把新镜像写入**另一 bank**(0x2000/0x14000 之一) +3. END 时更新产品头指向新 bank → 复位 → boot ROM 按 'pR' 引导新固件 + +本机无 'pR' → 校验失败(状态 20)→ 全程零写入。**vendor OTA 在裸布局设备上同败**(vendor 级前提:设备须为工厂布局)。 + +## 4. 固件可控路径(G4 完整解法) + +### 路径 A:线刷恢复工厂布局(一次性硬件操作) + +- 固件:`analysis/web/PP_4.2_CH.bin`(或 NEW.bin)——本仓库已存档 +- 方法:DA14585 ROM UART 线刷。芯片无有效镜像时 ROM 进入 UART boot(公开协议,Dialog AN-B-011;vendor 亦提供 ota.apk/线刷工具入口) +- 硬件:开盖,接 UART(DA14585 UART boot 引脚 P0_4/P0_5 区域,需查板焊盘)+ USB-UART 适配器 +- 效果:恢复工厂布局 → vendor OTA 与 `ppclock ota` 均可用(含 CH→NEW 升级通道) + +### 路径 B:免线刷的软件利用(当前已具备) + +- 图像上传(cmd 03)写 flash 0x2E000 区——可用于自定义显示内容持久化 +- EF 激活写 flash 0x3Fxxx 区——无门禁,已可离线激活(`activate --auto`) +- 其余全部功能经 BLE 可控(见 field-test-result.md) + +## 5. 遗留确认项 + +- 板级 UART 焊盘位置与线刷触发方式(需开盖万用表/试触,用户物理操作) +- vendor 线刷工具(file_down.php 的 ota.apk 或其一键激活页 onejihuo.html 线索)