190 lines
3.7 KiB
Markdown
190 lines
3.7 KiB
Markdown
|
||
## 1. 系统升级流程
|
||
|
||
当 U 盘中存在 `update.zip` 时,执行以下流程:
|
||
|
||
```text
|
||
update.zip
|
||
↓
|
||
读取压缩包内容(不解压)
|
||
↓
|
||
判断根目录是否存在 ValidationFile.ini
|
||
├── 存在
|
||
│ ↓
|
||
│ 按新版签名包处理
|
||
│ ↓
|
||
│ 解压
|
||
│ ↓
|
||
│ 校验内层 update.zip 与 ValidationFile.ini
|
||
│ ↓
|
||
│ 校验通过后升级内层 update.zip
|
||
│
|
||
└── 不存在
|
||
↓
|
||
按旧版标准 升级包处理
|
||
↓
|
||
直接解析并升级原始 update.zip
|
||
```
|
||
|
||
### 说明
|
||
|
||
- `update.zip` 为系统升级包;
|
||
|
||
- 使用 Java `ZipFile` 接口读取压缩包内容,不进行解压;
|
||
|
||
- 判断压缩包内部是否包含 `ValidationFile.ini`;
|
||
|
||
- 若存在 `ValidationFile.ini`:
|
||
|
||
- 认为该文件是新版签名升级包;
|
||
|
||
- 解压升级包;
|
||
|
||
- 对解压后的内层 `update.zip` 和 `ValidationFile.ini` 执行签名/完整性校验;
|
||
|
||
- 校验通过后开始升级内层 `update.zip`;
|
||
|
||
- 校验失败时升级失败,不得回退到旧版直接升级流程;
|
||
|
||
- 若不存在 `ValidationFile.ini`:
|
||
|
||
- 认为该文件是旧版标准 升级包;
|
||
|
||
- 不解压、不执行新增签名校验;
|
||
|
||
- 直接解析原始 `update.zip` 并执行系统升级基础校验;
|
||
|
||
- 基础校验通过后开始升级。
|
||
|
||
### 系统升级包结构
|
||
|
||
旧版标准 升级包:
|
||
|
||
```text
|
||
U盘/update.zip
|
||
├── payload.bin
|
||
├── payload_properties.txt
|
||
└── META-INF/com/android/metadata
|
||
```
|
||
|
||
新版签名升级包:
|
||
|
||
```text
|
||
U盘/update.zip
|
||
├── update.zip
|
||
└── ValidationFile.ini
|
||
```
|
||
|
||
|
||
---
|
||
|
||
## 2. MCU 升级流程
|
||
|
||
### 2.1 update_mcu.zip 升级
|
||
|
||
当 U 盘中存在 `update_mcu.zip` 时,执行以下流程:
|
||
|
||
```text
|
||
update_mcu.zip
|
||
↓
|
||
解压
|
||
↓
|
||
校验
|
||
↓
|
||
升级
|
||
```
|
||
|
||
### 说明
|
||
|
||
- `update_mcu.zip` 为 MCU 压缩升级包;
|
||
|
||
- 解压后执行校验;
|
||
|
||
- 校验通过后开始 MCU 升级。
|
||
|
||
|
||
---
|
||
|
||
### 2.2 cortex-gdm4.bin 升级
|
||
|
||
当 U 盘中存在 `cortex-gdm4.bin` 时,执行以下流程:
|
||
|
||
```text
|
||
cortex-gdm4.bin
|
||
↓
|
||
直接升级
|
||
```
|
||
|
||
### 说明
|
||
|
||
- `cortex-gdm4.bin` 为 MCU 二进制升级文件;
|
||
|
||
- 不进行解压及校验;
|
||
|
||
- 直接执行 MCU 升级。
|
||
|
||
### 2.3 MCU 文件优先级
|
||
|
||
当同一个 U 盘中同时存在 `update_mcu.zip` 和 `cortex-gdm4.bin` 时:
|
||
|
||
```text
|
||
优先使用 update_mcu.zip
|
||
```
|
||
|
||
### 说明
|
||
|
||
- `update_mcu.zip` 带签名/完整性校验,安全性更高;
|
||
|
||
- `cortex-gdm4.bin` 仅用于兼容旧版 MCU 升级方式;
|
||
|
||
- 若两者同时存在,默认按新版 `update_mcu.zip` 流程处理。
|
||
|
||
|
||
---
|
||
|
||
## 3. MCU 文件识别规则
|
||
|
||
|文件名称|处理方式|
|
||
|---|---|
|
||
|update_mcu.zip|解压 → 校验 → 升级|
|
||
|cortex-gdm4.bin|直接升级|
|
||
|其它文件|不处理|
|
||
|
||
---
|
||
|
||
## 4. 整体流程汇总
|
||
|
||
```text
|
||
系统升级:
|
||
|
||
update.zip
|
||
↓
|
||
读取 ZIP 内容(不解压)
|
||
↓
|
||
根目录是否存在 ValidationFile.ini?
|
||
├── 是 → 新版签名包 → 解压 → 校验内层 update.zip → 升级内层 update.zip
|
||
└── 否 → 旧版标准 升级 包 → 直接解析并升级原始 update.zip
|
||
|
||
|
||
MCU升级:
|
||
|
||
① update_mcu.zip
|
||
↓
|
||
解压
|
||
↓
|
||
校验
|
||
↓
|
||
升级
|
||
|
||
② cortex-gdm4.bin
|
||
↓
|
||
直接升级
|
||
|
||
说明:
|
||
|
||
- 系统升级中,只要检测到 `ValidationFile.ini`,就必须完成签名校验;
|
||
- 签名校验失败时,不允许回退为旧版直接升级;
|
||
- MCU 升级中,`update_mcu.zip` 优先级高于 `cortex-gdm4.bin`;
|
||
- `cortex-gdm4.bin` 仅作为旧版 MCU 升级兼容路径保留。
|
||
```
|