【Telink TL322X 测评】第四章:Flash 烧录、读回校验与调试链路测试
# 【Telink TL322X 测评】第四章:Flash 烧录、读回校验与调试链路测试* **本章把烧录链路单独展开,重点记录命令行烧录、Flash 保护、读回校验和 SHA256 校验结果。**
**## **4.0 当前自动化验证记录
**本章使用 OTA/Flash 方向的 **`feature_test` 配置做烧录链路验证,已经完成构建、烧录和读回校验:
| **项目** | **结果** |
| ------------------------- | ------------------------------------------------------------------------ |
| **SDK target** | `feature_test` |
| **FEATURE\_TEST\_MODE** | `TEST_OTA` |
| **固件** | `firmware\eval03_feature_ota_flash.bin` |
| **大小** | **133108 bytes** |
| **SHA256** | `6C52CB462225FD3F304E1B18C6DBACF0E8AC8FCC97E4EBE246EF0EAA433F99AB` |
| **烧录验证** | `verified`,读回 SHA256 与本地固件一致 |
| **日志** | `logs\flash_eval03_feature_ota_flash.log` |
| **最新验证日志** | `logs\flash_verify_eval03_latest.log` |
**本章已达到的效果:**`TC.exe all -> ulf -> wf -> rf` 的命令行链路可以用于 TL322X 固件写入和校验,读回 SHA256 可以作为后续所有章节确认烧录成功的标准。
## 4.1 本章任务目标
**本章主要完成以下任务:**
```
1. 梳理 BDT/TC 命令行常用烧录命令;
2. 验证 write flash、read flash、unlock flash、flash info、reset;
3. 使用读回文件和 SHA256 校验烧录结果;
4. 记录 Flash 写保护和 WinUSB 设备占用问题;
```
## 4.2 开发板与测试方式
**本章测试链路如下:**
```
TC.exe all 枚举 EVK
↓
TC.exe fi 读取 Flash MID / UID / 锁区
↓
TC.exe ulf 解除写保护
↓
TC.exe wf 写入本章固件
↓
TC.exe rf 读回同等长度内容
↓
对比本地 bin 与 readback bin 的 SHA256
↓
按需 rst -f 从 Flash 复位运行
```
## 4.3 独立工程与 SDK 基线
**本章记录目录为:**
```
D:\Project\Evaluation\Telink\eval_projects\03_flash_download_debug
```
**本章源码副本位于:**
```
src\sdk
```
**本章使用的主要源码入口为:**
```
src\sdk\vendor\feature_test\feature_ota
```
**工程关键文件:**
```
src\build_config.json
src\source_manifest.md
firmware\eval03_feature_ota_flash.bin
logs\flash_eval03_feature_ota_flash.log
logs\flash_verify_eval03_latest.log
tools\flash_verify_eval03.ps1
notes\flash_recovery_steps.md
```
## 4.4 关键源码与配置
**与本章相关的主要文件如下:**
| **文件** | **作用** |
| ---------------------------------------------------- | ---------------------------------------------------- |
| `src\sdk\vendor\feature_test\feature_config.h` | **通过**`FEATURE_TEST_MODE`选择 OTA/Flash 示例 |
| `src\sdk\vendor\feature_test\feature_ota` | **OTA/Flash 方向示例源码** |
| `src\sdk\boot\TL322X\D25F` | **TL322X boot 相关源码** |
| `src\sdk\drivers\TL322X\flash*` | **Flash 驱动和寄存器访问相关代码** |
| `notes\flash_recovery_steps.md` | **flash loader 异常恢复尝试记录** |
**本章实际构建时使用:**
```
FEATURE_TEST_MODE=TEST_OTA
```
## 4.5 编译、烧录与读回校验
**重新构建本章工程:**
```
powershell -NoProfile -ExecutionPolicy Bypass -File ..\run_tl322x_eval_matrix.ps1 -OnlyProjects 03_flash_download_debug -NoFlash
```
**构建并补烧:**
```
powershell -NoProfile -ExecutionPolicy Bypass -File ..\run_tl322x_eval_matrix.ps1 -OnlyProjects 03_flash_download_debug
```
**本章用于截图的精简验证脚本:**
```
cd D:\Project\Evaluation\Telink\eval_projects\03_flash_download_debug
powershell -ExecutionPolicy Bypass -File .\tools\flash_verify_eval03.ps1
```
**本章已验证的核心命令:**
```
TC.exe all
TC.exe fi -d 1 --chip=TL322X
TC.exe ulf 0 0 -d 1 --chip=TL322X
TC.exe wf 0 -i firmware\eval03_feature_ota_flash.bin -d 1 --chip=TL322X
TC.exe rf 0 133108 -o firmware\eval03_feature_ota_flash_readback.bin -d 1 --chip=TL322X
TC.exe rst -f -d 1 --chip=TL322X
```
**当前读回校验结果:**
```
Device:
vid_248a&pid_3228&evk_id_0001&bus_003&addr_025
Flash information:
flash mid = 0x00166085, flash status = 0x0000, lock area: 0x000000-0x000000
flash uid: 41 50 34 5a 39 39 38 03 00 20 76 4c 4c 01 45 78
Write flash:
Flash download finish. 133108 bytes
Read back:
All 133108 bytes have been saved at firmware\eval03_feature_ota_flash_readback.bin
Firmware SHA256:
6C52CB462225FD3F304E1B18C6DBACF0E8AC8FCC97E4EBE246EF0EAA433F99AB
Readback SHA256:
6C52CB462225FD3F304E1B18C6DBACF0E8AC8FCC97E4EBE246EF0EAA433F99AB
Result:
PASS, local firmware and flash readback are identical.
```
## 4.6 实测现象
**当前已经确认:**
```
1. TC.exe all 可以枚举到 vid_248a&pid_3228&evk_id_0001;
2. TC.exe fi 可以读取 Flash MID、UID 和锁区信息,当前锁区为 `0x000000-0x000000`;
3. 烧录前执行 ulf 可以确保后续写入处于 unlocked 状态;
4. 固件可以写入并读回校验通过;
5. 多个 TC 进程不能并行访问同一个 WinUSB 设备;
```
## 4.7 图片和视频展示
* `TC.exe all` 枚举开发板:
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/120514x0q554lx3d4ku22y.png)
* **Flash MID、UID、锁区信息:**
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/120541tdojblxtrlt8oxj7.png)
* **本地固件和读回固件 SHA256 对比:**
!(//m.qjumbo.com/forum/data/attachment/forum/202607/03/120612tsqygs37q78dramp.png)
## 4.8 问题记录
### 4.8.1 Flash 写保护
**Flash 信息中出现锁区时,直接写入可能失败。解决方法是烧录前先执行:**
```
TC.exe ulf 0 0 -d 1 --chip=TL322X
```
### 4.8.2 WinUSB 设备不能并行访问
**并行执行多个 TC 命令时可能出现 **`LIBUSB_ERROR_ACCESS` 或 `Get device handle fail`。解决方法是所有 TC 命令串行执行,脚本中也要避免并发访问同一个 EVK。
### 4.8.3 应用固件运行后 flash loader 可能失败
**在 BLE 应用运行后,后续曾出现 **`Executing sws_sync error`。当前处理方式是批量补烧时默认不自动 `rst -f`,先完成所有写入和读回校验,再按章节单独复位运行。
## 4.9 本章测试结论
**阶段性结论:**
```
1. TC 命令行烧录链路已经可用;
2. Flash 读回 SHA256 校验方法已经建立;
3. 三张命令行验证截图;
```
## 4.10 本章小结
**第四章把后续所有工程都会用到的下载链路单独固化下来。只要每个章节都保存本地固件 SHA256、读回 SHA256 和 TC 日志,就可以清楚区分“固件没有正确写入”和“固件写入正确但应用现象仍待验证”这两类问题。**
页:
[1]