Files
qianbian/docs/firmware-layout.md
T

54 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 闪存布局与固件可控路径(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 线索)