小型ARM微控制器的RTOS内核之间的可量化差异 [英] Quantifiable differences between RTOS kernels for small ARM microcontrollers

查看:102
本文介绍了小型ARM微控制器的RTOS内核之间的可量化差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

微控制器有许多不同的RTOS.我专门在寻找支持ARM Cortex M处理器的RTOS.另外,我对封闭源解决方案不感兴趣.

There are many different RTOS available for microcontrollers. I am specifically looking for RTOS that support the ARM Cortex M processors. Also, I am not interested in closed source solutions.

试图比较网站和邮件列表中每个RTOS的相对优点似乎很困难,因为它们似乎具有相同的功能并且做同样的事情.真正的区别显然只有在尝试将每个RTOS用于某些任务之后才会出现.

Attempting to compare the relative merits of each RTOS from websites and mailing lists seems pretty difficult as they mostly seem to have equivalent features and do the same thing. The real differences become apparently only after trying to use each RTOS for some tasks.

我知道这是一个主观的问题,可能很难回答-但是必须有很多人实际上已经尝试了几种不同的RTOS,并且对每种RTOS的优缺点形成了看法.

I know this is somewhat subjective question and probably hard to answer - but there must be many people out there who have actually tried several different RTOS and formed an opinion of the relative merits of each one.

我对FreeRTOS,ChibiOS和Coocox CoOS特别感兴趣,但也欢迎其他选择.

I am specifically interested in FreeRTOS, ChibiOS and Coocox CoOS, but other choices are also very welcome.

例如:在ChibiOS中,ISR似乎可以调用任何系统功能,但是这些调用必须包装在chSysLockFromIsr()/chSysUnlockFromIsr()中,并且在这些部分中代码不可抢占.在CoOS中,唯一可调用的函数是以isr_开头的函数,例如isr_PostSem()isr_PostMail()isr_PostQueueMail()isr_SetFlag(),但是那些功能在内部使用服务请求队列,这意味着大多数请求是可抢占的.

For example: it would seem that in ChibiOS, ISRs can call any system functions, but those calls must be wrapped in chSysLockFromIsr()/chSysUnlockFromIsr() and the code is not preemptable during those sections. In CoOS, the only functions callable are the ones starting with isr_ such as isr_PostSem(), isr_PostMail(), isr_PostQueueMail() and isr_SetFlag(), but those functions internally use a service request queue which means most of the request is preemptable.

推荐答案

在选择RTOS时可能要考虑的一些功能:

Some of the features that one could take into account while choosing the RTOS:

  • 上下文切换时间
  • 中断延迟
  • 同步机制(标志,信号量,互斥体,邮箱,队列等)
  • 优先级倒置处理
  • 内存管理支持(即内存池)
  • 计划政策支持
  • MMU支持
  • 流程支持
  • 内存占用量
  • 内核本身的效率
  • POSIX与非POSIX API
  • 可用的软件生态系统(也称为中间件)
  • ...
  • context-switch time
  • interrupt latency
  • synchronization mechanisms (flags, semaphores, mutexes, mailboxes, queues, ...)
  • priority inversion handling
  • memory management support (i.e. memory pools)
  • scheduling policies support
  • MMU support
  • process support
  • memory footprint
  • efficiency of the kernel itself
  • POSIX vs. non-POSIX API's
  • software eco-system available (a.k.a middleware)
  • ...

需要重点关注的点取决于要运行的应用程序.但总的来说,这些是我记得的东西,它们在各种RTOS之间有所不同.

Which point(s) to put more focus, depends on the very application you're going to run. But generally, these are the things I can remember of which make difference between various RTOS's.

这篇关于小型ARM微控制器的RTOS内核之间的可量化差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆