Hello everyone,
我是图卢兹大学软件定义电力电子学研究员 Luiz Villa。我的团队正在尝试将 RTOS 嵌入到微控制器中,以便在电力电子设备中创建更友好的嵌入式控制开发过程。我们尽可能避免使用 ISR,原因有两个:
- 它使软件开发中的协作变得更加容易(我们的项目是开源的)
- 中断使代码执行时间不确定(我们希望避免这种情况)
我们想在线程速度方面在 Zephyr 和 RIOT-OS 之间做一个基准测试。我们需要一个以 20kHz 运行的代码,其中包含两到三个线程:
- ADC 采集和数据平均
- 控制的数学计算(使用 CMSIS)
- 与外界的交流
由于时间对我们来说如此重要,我们需要知道:
- 在 Zephyr 和 RIOT-OS 中执行线程的最短时间是多少?
- 在 Zephyr 和 RIOT-OS 中切换线程所需的时间?
我们的初步结果表明:
- 单线程测试时睡眠时间为0us,Zephyr的周期为9us,暴动为5us
- 单线程测试时sleep时间10us,Zephyr周期39us,riot 15us
我们使用带有以下代码的 Nucleo-G474RE:https ://gitlab.laas.fr/owntech/zephyr/-/tree/test_adc_g4
我们对我们的结果感到非常惊讶,因为我们预计这两个操作系统消耗的资源都比它们少得多。
你怎么看?您是否尝试过尽可能快地运行这些操作系统?你的结果是什么?你测试过 Zephyr 的线程切换时间吗?
Thanks for reading
Luiz