发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[问答] 嵌入式设计中,如何评估最适合应用的 RTOS?
482 rtos 嵌入式
分享
目前,使用 RTOS 的一项挑战在于许多开发人员习惯于没有操作系统 (OS) 的裸机环境,因而为特定应用选择合适的 RTOS 难度颇大。对 RTOS 市场的快速网络调查表明,市面上共有百余种 RTOS 可供开发人员使用,从开源系统到经认证的商业 RTOS。

那么,该如何选择 RTOS 并开始使用呢?如何评估最适合应用的 RTOS?

1
已退回2积分
2019-7-26 14:15:59   评论 分享淘帖 邀请回答

相关问题

6个回答
RTOS 选择的考虑因素

实时操作系统是开发人员构建应用程序代码的基础。为确保应用基础牢固且能经受考验,选择合适的 RTOS 至关重要。不过在多数情况下,RTOS 选择仅依据单一参数:成本。
虽然成本是一个重要的考虑因素,但不应该是唯一的因素。如果开发团队难以连接、实施系统或对所选择的 RTOS 缺乏支持,即便花费十倍于商业 RTOS 的成本也是很平常的,更不用说因此而损失的项目时间。一般而言,开发团队为应用选择 RTOS 时应考虑八个不同的类别,其中包括:
  • 法律责任与风险
  • 性能
  • 特性
  • 成本
  • 生态系统
  • 中间件
  • RTOS 供应商
  • 工程偏好
每个类别均可能包含几项标准,评估各款 RTOS 时应参照这些标准。例如,在法律责任方面,团队可能需要考虑以下事项:
  • RTOS 侵权责任
  • 赔偿
  • 保修
  • 需要从法律角度审查 RTOS
在性能方面,开发人员可能需要考虑以下事项:
  • 可执行内存占用
  • RAM 占用
  • 最高的确定性
  • 运行时效率
开发和执行团队检查各个主要类别,确定用于评估 RTOS 的标准。一旦确定了标准,就可以使用 Kepner-Tregoe (KT) 矩阵来评估几种不同的 RTOS。这种合理的决策模型有助于收集、优先排序和评估信息,且侧重于评估和确定风险的优先级,以期消除决策过程中的个人偏见,进而作出最佳选择,同时将负面影响降至最低。

2019-7-26 14:17:31 评论

举报

用于]
图]
图]图 1 和图 2 中示例的评估标准数量多,涵盖面广,可能超出了大部分开发团队所设想的评估范围,而只需将权重设置为 0 或隐藏电子表格相应的行,即可轻松删减标准数量。

用于着手 RTOS 开发的平台
开发人员认为较难评估]首先介绍的是 STMicroelectronics 的 STM32Cube 平台。STM32Cube 平台支持 FreeRTOS,属于 STMicroelectronics 的 STM32CubeMx 和 STM32CubeIDE 开发环境的一部分。这些工具可让开发人员方便地启用 FreeRTOS,他们只需选中 FreeRTOS 框,然后使用 FreeRTOS 配置工具来设置所有配置值即可。因此开发人员能够非常快速地着手运行 FreeRTOS,以便开始评估其功能和性能特点。

在]STM32F429 采用 Arm® Cortex®-M4 处理器,时钟速度高达 168 MHz。该微控制器支持 2 MB 的闪存和 256 KB 的 SRAM,代码和内存足以用于高级应用的开发。该开发板还包括 LCD、数个 LED 和可扩展的 I/O。

图 3:STM32F429I Discovery 开发板成本低廉,采用 Arm Cortex-M4 处理器,可为开发人员提供充分的处理能力以评估 RTOS。(图片来源:STMicroelectronics)
若基于]
图]最后介绍的一款开发板是 STM32L0 Nucleo 板 (NUCLEO-L073RZ)(图 5)。STM32L0 Nucleo 板基于 Arm Cortex-M0+,旨在实现最低能耗,非常适合电池供电的低功耗物联网边缘设备。STM32L0 微控制器的时钟速度高达 24 MHz,具有 192 KB 的闪存和 20 KB 的 SRAM。该开发板的特性可满足 RTOS 运行的最低需求,组件很简单,只包括用户开关和 LED。
图 5:NUCLEO-L073RZ STM32L0 开发板基于 Arm Cortex-M0+ 处理器,旨在为低功耗设备提供高性能。(图片来源:STMicroelectronics)
接下来介绍的是]例如,如果开发人员使用 STMicroelectronics 开发板,并希望将 Express Logic 的 ThreadX RTOS 与 IAR Systems 的 Embedded Workbench 编译器和开发环境结合使用,那么编译器需要使用 IAR 产品,RTOS 需使用 Express Logic 产品,就必须分别购买使用许可证。但是,开发人员只需购买 Renesas Synergy 平台中的某个微控制器,就能免费使用这些工具和 RTOS 以及其他中间件。
若开发人员希望在高端处理器上测试]
图 6:Renesas Synergy 的 SK-S7G2 开发板附带商用开发工具,包括 Express Logic 的 ThreadX RTOS。(图片来源:Renesas)
另一款可用于测试]
图 7:Renesas Synergy 的 TB-S5D5 开发板为开发人员提供 1 MB 的代码闪存和 384 KB 的 SRAM,可用于测试 ThreadX。(图片来源:Renesas)
对于开发人员,尤其是对物联网应用感兴趣的开发人员,其他值得关注的选择还有]Synergy Cloud1 物联网套件让开发人员可以通过 Wi-Fi 连接至云端,而 Cloud2 蜂窝物联网套件则可通过蜂窝网络连接。这两款开发板均基于 S5D9 处理器,具有板载传感器和 LED 可从云端进行监视和控制。此外,这两款套件还附带 ThreadX 等预装软件,因此开发人员可使用自带 RTOS 测试整个连接解决方案。(开发人员可以此评估上述 KT 矩阵的中间件部分。)
图 9:Renesas Synergy 的 AE-Cloud2 蜂窝物联网套件是专为物联网设备设计的开发板,可通过 Wi-Fi 或蜂窝网络连接至云端。该套件可以控制 LED、监控来自 AWS 或 Azure 等云服务提供商的传感器值。(图片来源:Renesas)

关于上述平台的一个重要注意事项:评估 RTOS 时,请确保执行同环境比较。例如,若在时钟速度达 168 MHz 的 STM32F429 Discovery 板上评估 FreeRTOS,则请确保使用相同的开发板或时钟速度相同的开发板来评估其他 RTOS。


2019-7-26 14:19:09 评论

举报

RTOS 的使用技巧与诀窍
每款 RTOS 都有各自的“技巧与诀窍”,但有几条经验法则可以普遍应用于各款 RTOS:
  • 静态分配任务和 RTOS 对象。动态分配任务和对象需要使用内存分配程序 (malloc()),而这具有非确定性,可能会导致堆碎片问题,从而导致性能变差,甚至在最坏的情况下导致系统崩溃。
  • 根据应用需求更改默认堆栈大小。对于多数任务而言,许多 RTOS 提供的默认堆栈值过大,这会导致 RAM 浪费。手动配置默认堆栈大小,但请务必根据任务的功能和需求调整各任务的堆栈大小。
  • 从任务调用的函数必须可重入。从多个任务调用该函数时,若被更高优先级的任务中断,即可确保不存在损坏其他任务数据的风险。
  • 尽量使用内存块池(如有)。内存块池是具有确定性行为的内存池,可用于运行时动态分配内存。该方法比使用 malloc() 更稳妥,但多数开源操作系统并不具备此内存管理功能。
  • 最大限度地减少应用中使用的任务数。使用 RTOS 时,许多开发人员喜欢创建大量任务,但是创建任务就需要任务控制块及相关的独立堆栈空间,因此创建不必要的任务会大幅减少可用内存。


2019-7-26 14:21:16 评论

举报

物联网设备的应用促使嵌入式系统的软件复杂度相应增加,因此为了帮助开发人员克服这一挑战并将复杂性进行抽象化,使用 RTOS 已成为必要之举。然而,诀窍不仅仅在于选择 RTOS。每款 RTOS 都各有所长,若选择的 RTOS 与开发人员的应用需求不符,则可能会浪费大量的时间和精力。

相反,开发人员应采取积极主动的方法来选择 RTOS,仔细评估各个不同方面,不光是 RTOS 本身的特性,还包括 RTOS 供应商以及遇到问题时可用的支持等外围因素。一种有效方法则是使用 KT 矩阵仔细评估待选 RTOS,然后在完全支持该系统的微控制器平台上运行所选择的 RTOS,以确保其适合应用。

2019-7-26 14:22:52 评论

举报

不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢。
2019-7-30 10:03:04 评论

举报

不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢
2019-8-7 17:55:52 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表