我正在开发一个库,用于通过 RS-422 端口与 FPGA 进行串行通信。这个库是一个更大项目的一部分。
我知道我可以测试它的某些部分,如消息生成。您设置输入,您可以测试字节数组是否与预期匹配。但是,如果我想做一个更通用的测试,我该如何为它生成单元测试呢?我必须编写 FPGA 行为的模拟器吗?是否可以单独测试库?
我正在开发一个库,用于通过 RS-422 端口与 FPGA 进行串行通信。这个库是一个更大项目的一部分。
我知道我可以测试它的某些部分,如消息生成。您设置输入,您可以测试字节数组是否与预期匹配。但是,如果我想做一个更通用的测试,我该如何为它生成单元测试呢?我必须编写 FPGA 行为的模拟器吗?是否可以单独测试库?
我想说的是,使用模拟器或模拟进行测试会让您比使用真实的东西更容易地练习您的代码路径。
理想情况下,一个人使用预先存在的东西。否则,构建仿真可能不是一件小事。但是,如果您对协议的理解不足以模拟它,那么您肯定无法与之通信:-)
您可以制作一个可以用作模拟器的模拟类。只需让您的 write 函数处理您发送的信息并将结果保存在某种缓冲区中,这可能只是一个普通的字符串。然后创建一个读取字符串的读取函数,将其擦除,然后将其返回给您。
您是要对 FPGA 的驱动程序进行单元测试,还是要对协议进行单元测试?因为如果你想同时测试两者,对我来说它已经看起来像是一个(系统)集成测试。
是的,可以单独测试通信库。确保您的通信协议与设备驱动程序没有过多交织;这样你就可以单独测试它。
我的建议:
在测试 FPGA+通信库时我会感兴趣的错误类型:
至于模拟:我在 Matlab/Simulink 中运行代码取得了非常好的结果(即使用 TrueTime,一个免费插件)。然后可以使用 Simulink 连接到回路中的硬件 (HIL) 或回路中的模型。或者,可以使用软件模型(但如果您靠近硬件,通常很难模拟非常有趣的异步事件;即中断处理程序)