繁体   English   中英

如何在不闪烁的情况下为 ESP32 运行单元测试?

[英]How to run a Unit-Test for ESP32 without flashing it?

从其他语言和平台了解到,我们希望在代码闪存到硬件之前的构建过程中使用单元测试。 这对于不需要 ESP32 硬件的简单功能测试应该是可能的。

但据我们所知,C++ 代码是为 ESP32 芯片编译(和链接)的,不应在开发系统或 CI/CD 管道中运行。

有没有办法在另一个系统上模拟 ESP32(用于 C++)或以任何其他方式运行单元测试?


注意:我们正在使用“platformio”进行构建。

使用qemu_esp32模拟器可以做到这一点。 您可以编译您的测试运行器并直接在模拟器上运行它,而不是将它烧写到真正的 esp32 芯片上。

以下是如何执行此操作的示例(改编自esp32_qemu_unity_test_action ):

  1. 像往常一样编译测试运行器。 在您继续之前,您可能实际上想要 flash 这只是为了知道您的测试运行器和测试正在运行。
idf.py build
cd build 
  1. 通常当你 flash 一个 esp32 时,你正在将几个二进制文件写入特定位置。 此命令将所有这些合并到一个完整的二进制图像中。
esptool.py --chip esp32 merge_bin --fill-flash-size 4MB -o flash_image.bin @flash_args
  1. 运行 esp32 模拟器并提供完整的二进制 flash 图像。
/opt/qemu/bin/qemu-system-xtensa -nographic -no-reboot -machine esp32 -drive file=flash_image.bin,if=mtd,format=raw -serial file:output.log

通过指定-no-reboot ,模拟器将简单地退出而不是重新启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM