Files
banban/factory_host/README.md
T

3.5 KiB

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、失败码、固件版本、节点耗时和总耗时。

目录和启动

完整烧录工具位于:

burn_tool/aboot-tools-2024.08.08-win-x64/adownload.exe

发布程序:

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 默认设置一致。

串口和协议记录位于:

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 秒。

产测音频包

重新生成音频包:

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 先备份业务镜像,再临时放入产测镜像。

开发验证

python -B -m unittest discover -s factory_host -p "test_*.py" -v
powershell.exe -NoProfile -ExecutionPolicy Bypass -File factory_host\build_release.ps1