Files
banban/factory_host/USAGE.md
T

174 lines
6.3 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.
# EG800 产测上位机使用说明
## 1. 发布目录
现场使用时至少保留以下内容,并保持相对目录不变:
```text
banban/
├─ burn_tool/
│ └─ aboot-tools-2024.08.08-win-x64/
│ ├─ adownload.exe
│ └─ 其他随工具提供的 DLL、配置和驱动文件
├─ factory_host/
│ └─ dist/
│ ├─ EG800FactoryHost.exe
│ ├─ factory_host_config.json
│ └─ factory_firmware/
│ └─ EG800AKCN_11LG-FT1-factory-test.zip
└─ version/
└─ 正式固件目录/
└─ *-fac.zip
```
`adownload.exe` 不能脱离原来的工具目录单独复制,否则可能缺少 DLL、配置或驱动。
## 2. 首次配置
上位机读取与 EXE 同目录的 `factory_host_config.json`。推荐配置:
```json
{
"flash": {
"downloader_path": "burn_tool/aboot-tools-2024.08.08-win-x64/adownload.exe",
"args": ["-u", "-a", "-s", "{baudrate}", "-q", "{firmware}"],
"timeout_seconds": 900,
"workers": 2
},
"firmwares": {
"production": "factory_host/dist/factory_firmware/EG800AKCN_11LG-FT1-factory-test.zip",
"official": "version/正式固件目录/EG800AKCN_11LG-版本号-fac.zip"
},
"serial": {
"baudrate": 115200,
"encoding": "utf-8",
"line_ending": "\\r\\n"
},
"protocol": {
"prefix": "FT1 ",
"version": 1,
"auto_save": true
}
}
```
- `production`:产测固件,包含 FT1 测试程序、开机/Loopback/NFC/关机音频,以及暂不参与流程的 GNSS 音频。
- `official`:正式业务固件,供产测完成后换烧。
- 固件路径可以使用相对于项目根目录的路径,也可以填写绝对路径。
- 必须选择可直接烧录的内层 FT1 ZIP 或 `*-fac.zip`,不要选择外层 `*-target.zip` 归档。
- 修改配置后重新启动上位机,或使用界面中的重新加载配置功能。
## 3. 烧录产测固件
1. 启动 `EG800FactoryHost.exe`,固件类型选择“产测固件”。
2. 设备保持关机,连接烧录器和 USB。
3. 选择工位后点击单工位烧录;批量生产时使用批量烧录。
4. 界面显示“等待上电”后再给设备开机。
5. 等待状态变成“烧录成功”,不要在烧录过程中拔线或关闭程序。
默认参数使用 `adownload.exe -u -a` 自动等待 AROM 下载设备,因此烧录口和产测 UART 是两个不同角色。
## 4. 自动识别并开始产测
烧录完成、设备正常启动并连接调试 UART 后:
1. 点击“扫描串口”可只识别设备并查看工位;直接点击“开始产测”也会先自动扫描。
2. 上位机被动监听所有候选 COM 口,不向设备发送 `IDENTIFY` 或 `START` 命令。
3. 只有能持续返回合法 FT1 状态广播的 UART 才会自动添加为工位。当前固件使用 `QL_DEBUG_UART_PORT`(GPIO29/30),不使用 USB CDC;AROM、主 UART、DIAG 和 AT 口不会被添加。
4. 每发现一台设备,上位机自动创建或复用一个空工位,并在工位表显示对应 COM 口。
5. 设备上电后自动开始测试;上位机只接收并解析每 500ms 一次的完整状态广播,不需要发送启动命令。
6. 未手工选中工位时,“开始产测”会启动所有已识别工位;选中工位时只启动选中的设备。
每个工位会实时显示:
- 当前测试节点和通过数量;
- 整机通过或失败状态;
- IMEI、ICCID、NFC UID;
- 失败码、结构化测试数据和实时串口日志。
产测固件当前依次执行:开机音频、电源 ADC、音频 Loopback、eSIM、数据连接和 NFC。
## 5. 测试结果与日志
默认自动保存位置:
```text
factory_host/dist/logs/factory_results.csv
factory_host/dist/logs/sessions/*.json
```
- `factory_results.csv`:每台设备一行,适合生产汇总。
- `sessions/*.json`:保存完整协议消息、节点耗时、失败码和各节点数据,适合追查单台设备。
- 普通 SDK 日志会显示在实时日志区,但只有 `FT1 ` 开头的合法协议消息会参与结果判定。
- 最终判定以设备发送的 `session_result` 为准,上位机不会根据普通文本日志猜测通过或失败。
## 6. 替换固件包
### 方法一:修改配置文件
把新固件复制到稳定目录,然后修改:
```json
"firmwares": {
"production": "新产测固件.zip",
"official": "新正式固件-fac.zip"
}
```
推荐每次替换后记录文件名、版本、文件大小和 SHA-256,避免现场混用旧包。
### 方法二:在界面选择
选择“产测固件”或“正式固件”类型,再使用界面的固件选择按钮指定对应 ZIP。选择后检查界面顶部显示的完整路径。
正式固件通常不包含 FT1 产测协议。换烧正式固件后,上位机不能再自动识别为 FT1 产测工位,这是正常现象。
## 7. 更新产测音频并生成固件
音频源目录:
```text
audio_prompts/factory_test/customer_fs/
├─ factory_boot_zh.mp3
├─ factory_audio_loopback_zh.mp3
├─ factory_nfc_test_zh.mp3
├─ factory_gnss_test_zh.mp3
└─ factory_shutdown_zh.mp3
```
文件必须保持脚本要求的名称和音频格式。更新后在项目根目录执行:
```powershell
python -B .\factory_host\build_factory_audio_package.py
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\factory_host\build_factory_firmware.ps1
```
生成物:
```text
factory_host/dist/factory_audio/customer_fs.bin
factory_host/dist/factory_audio/EG800AKCN_11LG-FT1-factory-audio.zip
factory_host/dist/factory_firmware/EG800AKCN_11LG-FT1-factory-test.zip
factory_host/dist/factory_firmware/firmware_manifest.json
```
固件脚本会临时替换构建目录中的 `customer_fs.bin`,完成后自动恢复业务镜像并核对哈希。若脚本报告恢复失败,不要继续发布固件,应先检查备份和当前业务镜像。
## 8. 重新打包上位机
开发环境先安装依赖:
```powershell
python -m pip install -r .\factory_host\requirements.txt
python -m pip install pyinstaller
```
运行测试并打包:
```powershell
python -B -m unittest discover -s factory_host -p "test_*.py" -v
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\factory_host\build_release.ps1
```
发布前至少使用一台设备验证:产测固件烧录、调试 UART 自动识别、START 握手、六项测试结果、JSON/CSV 保存,以及正式固件换烧。