嵌入式应用的测试代码

SRo*_*Roe 15 c testing embedded atmega

背景:

我正在利用Atmel AVR atmega2560开发一个大型项目.该项目包含许多基于硬件的功能(7个SPI设备,2个I2C,2个RS485 MODBUS端口,大量模拟和数字I/O).我为所有这些设备开发了"驱动程序",它们为主应用程序循环提供了访问所需数据的接口.

题:

我正在开发的项目最终必须符合SIL标准.

我希望能够测试代码并提供良好的代码覆盖率.但是,我无法找到任何信息来开始我应该如何设置这样的测试框架.

我的想法是,我可以拥有一套自动化测试,可以测试未来的错误修复和功能添加,以确定它们是否破坏了代码.问题是我不明白如何在芯片上测试代码.

我是否需要硬件来监控设备上的I/O并模拟外部连接的设备?任何可以提供的指针都将受到高度赞赏.

--Steve

Eli*_*sky 12

这是一个非常好的问题 - 嵌入式开发人员的共同关注点.不幸的是,大多数嵌入式开发人员并不像您那样关注并且仅在真实硬件上测试代码.但正如另一个答案所指出的,这基本上可以测试代码的名义功能而不是角落/错误情况.

这个问题没有一个简单的解决方案.但是,有一些指导方针和技术可以做得相对较好.

首先,将代码分成几层.一层应该是"硬件无关" - 即函数调用.不要要求用户直接写入HW寄存器.另一个(下层)处理HW.可以"模拟"该层以测试更高级别.如果没有HW,则无法真正测试较低级别,但它不会经常更改并需要深度HW集成,因此这不是问题.

"测试工具"将是您的所有高级HW不可知代码,具有专门用于测试的"假"低级别.这可以模拟硬件设备的正确和错误功能,从而允许您在PC上运行自动化测试.