在开发相对复杂的嵌入式系统应用时,在实际硬件可用之前就开始开发固件和应用软件会很有帮助。基于所选目标处理器的开发套件虽然有用,但存在局限性,因为它们可能不支持实际应用中会用到的所有外设。许多开发套件支持外设的添加(即插即用),因为它们提供了 Arduino 连接器 ,可以连接包含所需外设的扩展板,或者提供了诸如 PMod [1] 连接器或 Mikroe [2] 连接器等接口,用于连接各种传感器和外设。另一种方法是使用像 Renode 这样的模拟器来模拟目标系统,并在其上开发和测试应用代码。
在物联网嵌入式应用开发中,Zephyr RTOS 的使用正快速增长,这些应用涉及组成网络的多个设备,可能包含有线和无线通信链路。这一增长趋势得益于 Nordic、STM、Microchip 和 Silabs 等公司对 Zephyr RTOS 的采用。
越来越复杂的应用正以越来越紧迫的开发周期被开发出来。其中一些应用除了需要满足实时性要求外,还具有安全关键和安防特性。因此,有必要在硬件开发的同时并行开发和测试应用代码及相关固件。
现代持续集成和持续交付方法依赖于能够自动化测试、版本控制和交付的能力。测试和测试自动化可以受益于像 Renode 这样强大且可扩展的模拟器的可用性。
除了用于开发和测试联网的多节点应用外,Renode 还可用于单节点应用的开发,特别是在实际目标板尚未可用的情况下。
模拟器与仿真器并不相同。区分两者的一个好方法是想象汽车模拟器或飞行模拟器。如果汽车或飞行模拟器实际上能将用户从一个地方运送到另一个地方,那它就是仿真器。
复杂应用开发可能涉及部分模拟和部分仿真,例如仿真微控制器核心,但模拟外设、传感器或通信链路。
模拟器 |
仿真器 |
|
---|---|---|
目的 |
替代真实设备 |
揭示应用行为 |
编码 |
汇编程序和编译的高级语言代码 |
使用模拟器 API 的高级语言 |
被模仿的环境 |
软件和硬件两方面 |
软件的最终行为(用户将体验到的内容) |
性能 |
可能会很慢 |
通常运行编译后的代码,因此速度更快 |
使用场景 |
在详细内部行为层面进行测试 |
测试外部(可见/可感知)行为 |
仿真器的使用场景
-
在目标设备尚未确定、不可用或价格昂贵时开发软件
-
评估应用程序如何与用户或某些外部环境交互时
-
检查使用不同类型外设的效果,例如:
-
使用具有不同屏幕尺寸和不同屏幕分辨率的 UI(用户界面)设备
-