硬件在环测试
HIL 工具在 ESP32-S31 开发板上运行检查;有线或无线对端测试还需要一块可编程测试板。主机脚本控制串口控制台并保存结果。
测试工具
工具 |
运行位置 |
用途 |
|---|---|---|
|
主机电脑 |
选择并协调测试用例 |
|
ESP32-S31 Linux |
运行板端检查 |
|
ESP32-P4 测试板 |
提供 GPIO、串口、总线等对端功能 |
P4 测试程序在测试启用输出前,保持夹具输出禁用,并在测试结束后恢复禁用状态。夹具接线和固件说明见其 README。
1. 运行主机测试
在主仓库工作目录中运行:
make check-host
该目标包含功能契约、selftest、覆盖层和 BTstack 回归测试。功能测试使用主机
C 编译器检查 I2C 命令生成、SPI 字序和 I2S 配置,并检查无线及构建接口约定。
BTstack 测试使用 make btstack-source 获取的固定源码;make fetch 也包含这一步。前置条件及完整的 check-fast
流程见开发环境。主机测试通过与开发板测试证据是两回事。
2. 准备开发板
构建完整开发板镜像并烧录 S31:
make image
make PORT=/dev/ttyUSB0 BAUD=2000000 flash-existing-all
请将 PORT 替换为 S31 串口设备。make image 在主机上构建并验证镜像;
make flash-existing-all 写入 dist/current 的完整匹配集,不重新构建;只有已安装布局相同时才保留 persist。首次安装或变更布局应先按烧录与首次启动备份并全新安装。完成
首次登录和启动检查后,为需要对端的用例
安装 P4 测试固件。按引脚表连接夹具,确保共地且信号电压兼容。启动主机测试程序前,关闭串口监视程序。
查看测试程序支持的用例和串口选项:
python3 tools/hil/s31_hil.py --help
3. 运行测试
使用两块开发板进行有线 I2C 测试:
mkdir -p logs
python3 tools/hil/s31_hil.py --board both --case i2c \
--output logs/hil-i2c.json
以 400 kHz 重复测试:
python3 tools/hil/s31_hil.py --board both --case i2c \
--i2c-speed 400000 --repeat 12 --output logs/hil-i2c-repeat.json
其他有线用例包括 gpio、uart、spi、i2s 和 pwm-pcnt。spi-stress 和 i2s-stress 使用更长的传输来评估性能和行为。
仅检查 S31 时,选择 --board s31:
python3 tools/hil/s31_hil.py --board s31 --case lp-core \
--output logs/hil-lp-core.json
python3 tools/hil/s31_hil.py --board s31 --case smp-irq-dma \
--output logs/hil-smp-irq-dma.json
主机测试程序和目标端代理的命令行选项不同。在电脑上控制测试时,请使用上面的主机程序示例。
存储测试
运行 sdmmc 或 usb-drive 前,插入相应的存储设备:
python3 tools/hil/s31_hil.py --board s31 --case sdmmc
python3 tools/hil/s31_hil.py --board s31 --case usb-drive
如果没有已激活的 sdmmc0 覆盖层,SD/MMC 用例会临时应用
sdmmc0 bus-width=1,用于 1 位 CLK/CMD/DAT0 接线。已有的覆盖层保持不变,
因此请核对其总线宽度和路由是否符合实际接线。该用例从卡中读取 1 MiB 数据。USB 用例默认只读。若要在数据可丢弃的测试盘上启用临时 64 KiB 写入测试,请添加 --allow-usb-write。
无线测试
连接 P4/C6 无线对端后,运行:
python3 tools/hil/s31_hil.py --board both --case c6-wifi \
--peer-connected --output logs/hil-wifi.json
python3 tools/hil/s31_hil.py --board both --case c6-ble \
--peer-connected --output logs/hil-ble.json
Wi-Fi 用例设置夹具接入点和临时 STA 配置,然后检查关联、地址分配和数据包交换。它还会临时更改无线服务,并在清理时恢复。
进行电源管理测试前,先查看当前的挂起限制。GPIO 唤醒需要连接 LP GPIO0–7,而不是夹具通常使用的较高编号引脚。
Flash 安全
当前连续布局没有 HIL scratch 分区。破坏性 Flash 测试必须验证实际 MTD 范围,不得使用 persist 或其他有效分区;缺少明确安全范围时应拒绝测试。不要通过旧偏移或手工创建 MTD 节点绕过检查。
查看结果
开发板结果使用 HIL1 JSON 记录。测试报告 PASS、FAIL 或 SKIP,并附上操作、证据级别和简短说明。
probe 级别的 PASS 表示注册或存在性检查通过;data 级别的 PASS 表示该条结果
所指的操作检查通过。两者都不能证明未经测试的模式或外设已正常工作。开始下一个用例前,请检查失败或跳过的前置条件,以及清理阶段的错误。
保存输出文件,并简要记录开发板、固件构建、接线和所用命令。数据传输测试应附上对端结果;电源测试应另外记录唤醒原因和电流测量值。如果结果改变了文档中的功能状态,请更新支持矩阵。
添加测试用例
添加测试所需的主机操作序列、S31 操作和对端响应。为等待设置超时,并为成功、错误和中断情况编写清理逻辑。有效的用例应检查返回数据或设备的实际行为;缺少必要设备或夹具时,应给出明确说明。