# EG800 FT1 工厂烧录与产测上位机 本工具配套 `test/factory-test` 分支的独立产测固件,支持批量烧录、USB CDC 协议采集、6 个硬件节点判定和结果落盘。 ## 主要功能 - 产测固件和正式固件分开保存,每个工位可独立选择。 - 烧录串口和产测 CDC 串口分开配置,避免把 DIAG/AT/CDC 当成同一个端口。 - 使用原厂 `adownload.exe -u -a`,先进入等待状态,再由关机设备上电触发烧录。 - 提供“烧录选中”单工位入口;USB 自动等待的批量任务按工位顺序执行,避免抢设备。 - 只解析以 `FT1 ` 开头的协议行;普通 SDK 日志只显示,不进入产测数据库。 - 严格校验协议版本、消息类型、节点编号/名称、会话 ID 和递增序号。 - 显示 `BOOT_AUDIO`、`POWER_ADC`、`AUDIO_LOOPBACK`、`ESIM`、 `DATA_CALL`、`NFC` 的实时状态与结构化数据。 - 收到 `session_result` 或 `power_off` 时自动保存完整 JSON 和汇总 CSV。 - 保存 IMEI、ICCID、NFC UID、失败码、固件版本、节点耗时和总耗时。 ## 目录和启动 完整烧录工具位于: ```text burn_tool/aboot-tools-2024.08.08-win-x64/adownload.exe ``` 发布程序: ```text factory_host/dist/EG800FactoryHost.exe ``` 默认“产测固件”指向已包含五个产测 MP3 的 FT1 整包;默认“正式固件”指向 `version` 目录中的正式内层 `-fac.zip`。两者都可在外置 `factory_host_config.json` 中替换,烧录时不要选择 `-target.zip` 外层归档。 双击表格中的工位可以分别设置烧录口和产测 CDC 口。默认 USB 自动等待模式不需要 填写烧录口;产测 CDC 口仍需填写。“烧录选中”要求只选择一个工位;“批量烧录” 在未选中行时作用于全部工位,选中后只作用于选中工位。 单工位烧录时保持设备关机并连接 USB,选择工位后点击“烧录选中”。工位状态显示 “等待上电”后再给设备开机。此时 `adownload` 会捕获 AROM USB 下载口并开始烧录, 操作顺序与 Aboot 的 `usbOnly + usbAutoEnable` 默认设置一致。 串口和协议记录位于: ```text factory_host/dist/logs/factory_results.csv factory_host/dist/logs/sessions/*.json ``` ## FT1 结果规则 产测结果完全采用固件的 `session_result`,上位机不会用模糊正则猜测硬件是否通过。 非零失败码会显示 `docs/factory_test.md` 中对应的中文含义。收到 `power_off` 后会再次 刷新同一 JSON 文件,但不会在 CSV 中重复增加记录。 `AUDIO_LOOPBACK=PASS` 表示 GPIO84(原三击测试按键)的录放数据链路成功。 Loopback 仍然是按住录音、松开回放,最长录音 5 秒。 ## 产测音频包 重新生成音频包: ```powershell python -B .\factory_host\build_factory_audio_package.py ``` 脚本会执行以下检查: 1. 源目录必须且只能包含五个固定文件名。 2. 每个文件必须为 16 kHz、单声道、48 kbps MP3。 3. 使用 SDK `mklfs-v2.exe -m` 生成 262144 字节 `customer_fs.bin`。 4. 立即反向解包镜像并逐文件比对 SHA-256。 5. 输出 ZIP、清单及校验值到 `factory_host/dist/factory_audio/`。 不要直接覆盖正式业务 `customer_fs.bin`。需要构建产测整包时,按照 `docs/factory_test_windows_fs.md` 先备份业务镜像,再临时放入产测镜像。 ## 开发验证 ```powershell python -B -m unittest discover -s factory_host -p "test_*.py" -v powershell.exe -NoProfile -ExecutionPolicy Bypass -File factory_host\build_release.ps1 ```