ChibiOS 性能与资源占用 - Meta-Team/Meta-Embedded GitHub Wiki
前置阅读:ChibiOS 线程编写
STM32F4 的计算资源还是很充足的,即使我们目前没有编译优化,CPU 占用率依然在可接受范围内,RAM 也较为充足。
由于嵌入式控制对实时性要求较高,CPU 占用率应保持在较低水平,允许任务被及时调度。在计算机网络中,当注入率(Injection rate,可以理解为网络负载)接近饱和时,网络延迟指数级上升,对于 RTOS 也应该有类似的规律。
当发现 Meta-Embedded 出现算力不足的问题时,优先开启编译器优化(O2)(工具链 CMake 进阶配置 Build Type)。现代编译器优化能力很强,O2代码与O0代码性能相差十倍并不奇怪。
ChibiOS 自带资源使用监测,Meta-Embeeded 参考了 ChibiStudio 的性能报告插件,将其整合至 Shell 中。在 Shell 中输入 stats 指令:

stats 指令显示各线程的运行时间、CPU 占用、进程栈余量。主要关注 all 和 free stack 两项,前者可以理解为线程的 CPU 占用,后者是剩余线程栈空间大小(参见 ChibiOS 线程编写)。
main 和 idle 均可以当作空闲线程,两者 CPU 占用相加即是未使用的 CPU。
如果发现一个线程占用率接近 100%,而其他线程接近 0%,很可能是线程没有 sleep(常见问题 失去响应)
更新历史
- 2022.01.17 初始版本。liuzikai