微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 16 位嵌入式目标上进行单元测试

如何解决在 16 位嵌入式目标上进行单元测试

我目前正在尝试评估对为 16-bit based dsPIC device 编写的某些代码进行单元测试的最佳方式。用于为目标编译 C 代码的编译器是 Microchip's XC16

我找不到任何仿真工具,例如用于 ARM 的 QEMU。我真的很想为此使用像 GTest 或 Cpputest 这样的单元测试框架。我最后的手段是在目标上运行这些单元测试,但使用任何框架的机会是清晰的(构建和空间问题)。我脑海中出现的另一个想法是在带有 m16 标志的主机上使用 GCC 来生成 16 位代码,但这种解决方法不能保证相同的结果,因为 XC16 是一个不同的编译器(即使基于 GCC)。

是否有解决此问题的通用、正确的方法?目标是能够在主机 PC 上为具有不同架构的目标使用单元测试框架。

解决方法

我同意用户 busybee。单元测试应该是一种简单、廉价的方法,用于验证您的代码行为是否正确。代码行为不应受字长、CPU 架构或内存碎片的影响。这意味着您应该能够直接在 PC 上编译和运行测试和代码,而不是在目标或模拟器上。

当然,您必须以合理可移植的方式编写嵌入式代码,使其在 16 位 PIC 和 32 位 x86(或 64 位 x86,如果您喜欢冒险)上的行为相似。这意味着要特别注意整数/指针类型并为所有相关外设编写垫片包装器(理想情况下垫片层非常简单,编译器能够在微控制器上完全优化它们)。

必须直接与没有填充层(即驱动程序)的外围设备对话的代码无法轻松进行单元测试。还没有找到一个好的解决方案 - 到目前为止,我只是手动测试这些部件,然后尽量不要接触它们。

这就是我对微控制器项目所做的(当然,我使用的是 32 位架构)。无法想象每次我想运行单元测试时都旋转模拟器或闪烁一个真正的微型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。