# MCU验收工具

工具介绍: 为了规范产品主控MCU串口通信逻辑,确保MCU和模组能够顺利通信,参照 模组串口指令手册,特此推出该MCU验收工具,用于验证产品主控MCU串口逻辑是否符合规范

测试准备: 断开MCU和模组的串口通信线路,将MCU通过串口接入电脑

本地调试: 用于研发调试使用,不会从云端下载固件,也不会上传报告到云端,如果需要测试OTA功能,需要选择本地固件

线上测试: 用于生成正式的测试报告,工具会从云端下载固件进行测试,测试完成后可以上传测试报告到云端

操作说明: PC 工具选中待测MCU串口,输入待测model,然后选择测试模式和待测固件后,点击开始测试

screenshot

用例说明:

编号 用例标题 测试目的 测试步骤 通过标准
1 OTA测试 测试OTA交互流程 1. MCU发送get_down
2. 工具下发down update_fw
3. MCU收到指令后回复result "ready"
4. 工具收到 result "ready"后回复ok,MCU进入OTA状态,工具传输文件
5. MCU在OTA完成后重启,发送MCU指令,工具验证MCU版本
OTA成功后正确上报version和model
2 model测试 测试model指令交互流程 1. MCU上报model,工具回复error;MCU查询model,工具回复假model
2. MCU继续上报model,工具校验model
MCU正确上报model并在未收到ok回复时继续发送model指令
3 mcu_version测试 测试mcu_version交互流程 1. MCU上报mcu_version,工具回复error
2. MCU继续上报mcu_version,工具校验版本
MCU正确上报mcu_version并在未收到ok回复时继续发送model指令
4 ble_config测试 测试ble_config交互流程 1. MCU上报ble_config,工具回复error
2. MCU继续上报ble_config.工具检查指令,并给出指令回复
MCU正确上报ble_config指令并在未收到ok回复时继续发送ble_config指令
5 超长指令测试 测试MCU处理超长字节指令的能力 1. 工具在收到get_down时,发送512字节指令
2. MCU在收到512字节数据时回复result或error指令,工具检查MCU上报指令
MCU在收到超长字节指令时能够正确回复resut或error指令
6 未知指令测试 测试MCU处理未知指令的能力 1. 工具在收到get_down时,发送down unknown_command指令
2. MCU发送result或error指令
MCU在收到未知指令时能够正确回复error指令
7 mcu_version_req测试 测试MCU对mcu_version指令的支持 1. 工具在收到get_down时,发送down MIIO_mcu_version_req指令
2. MCU发送mcu_version指令,工具检查上报版本
MCU正确发送mcu_version指令
8 get_down轮询间隔测试 测试MCU轮询间隔符合规范 1. 工具在收到get_down时发送down none,统计100个get_down的时间间隔,间隔在100ms到400ms为通过 MCU发送100个间隔在100ms至400ms的get_down指令

注意事项:

  1. 测试账号必须是特定小米账号,该账号在企业组下有待测model

  2. MCU插入电脑上电时才会发送model等指令,请先将MCU接入电脑再开始测试

FAQ:

1. 什么是本地调试?

MCU固件来源被用来区分本地及线上。开发者预先在MCU上烧录固件或在电脑中存放待测试的固件开启的测试被称为本地调试。本地调试是线上测试的前置阶段,当开发者在本地调试固件无问题后,可开启线上测试进而上传最终测试报告。本地调试可自行选择是否进行OTA测试,可以快速展示固件问题,开发者可以根据工具日志信息定位相关问题

2. 什么是线上测试?

从开发者平台拉取固件开始的测试被称为线上测试。线上测试强制OTA,开发者从固件列表选择待测固件版本进行测试

3. 为什么要进行超长指令测试?

MCU在接受到远超512字节的数据时有可能会变砖,MCU必须有处理异常情况的能力

4. 为什么明明有上报mcu_version指令却依然测试失败?

根据开发者平台协议规则,平台要求MCU在上电后一直上报mcu_version和model指令,直到收到ok指令为止

5. 为什么MCU发出正确的model或mcu_version指令,工具会回error?

工具需要验证MCU交互逻辑的正确性。MCU在未收到ok指令时需要一直重发指令。工具在收到正确指令时会回复error并要求MCU重发此指令

6. 为什么MCU发出查询model指令会测试失败?

工具要求MCU上报model名称的指令符合规则,因此在收到model查询指令后会回复一个假model,要求MCU在收到假model指令时上报正确的model指令

7. MCU上电后会上报mcu_version,为什么还需要一个指令向MCU询问固件版本?

模组需要主动获取MCU版本