本文介绍了用于小型 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、ChibiiOS 和 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() andisr_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 的对比
  • 可用的软件生态系统(也称为中间件)
  • ...

更关注哪一点,取决于您要运行的应用程序.但总的来说,这些是我能记住的事情,它们在各种 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 内核之间的可量化差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-28 15:43