vesperW · 3 天前

何时放弃裸机开始使用RTOS

嵌入式开发人员在开始新项目时面临越来越多的挑战。在万物互联时代到来之前,嵌入式系统几乎没有或没有安全对策。如今,开发人员必须专注于增强嵌入式安全性,以防止在线对手和侧通道攻击,即使它们有致力于延长电池寿命并配置响应迅速且直观的用户界面。

多年来,对程序结构的态度也发生了变化,从简单的循环到使用状态机,对于复杂的系统,需要使用嵌入式实时操作系统(RTOS)。多核设备的广泛使用也影响了开发人员构建应用程序的方式。

使用RTOS可以在嵌入式系统中带来许多好处,包括更好的资源管理、可预测的应用程序行为和改进的响应性。然而,采用RTOS需要重新思考程序结构,关于基于RTOS的开发产业界仍然存在一些误解。资深媒体人Robert Huntley与Segger、Zephyr Project和北欧半导体(Nordic)的高管进行了交谈,了解到更多关于开发人员必须做出的关键决策,以及如何简化从传统程序结构向RTOS的过渡。

现存结构的作用

一个根本问题是,现存程序结构是否以及在哪里仍然有效。嵌入式RTOS供应商Segger(德国)的合作伙伴营销经理Dirk Akemann说:“这里仍然有时间片轮转的位置,但它越来越不受欢迎,这个问题与小资源MCU仍然相关。”

Image

Linux基金会嵌入式系统副总裁兼Linux托管开源Zephyr项目主任Kate Stewart也提出了类似的观点。“这一切都取决于系统设计,”她说,“这是关于弄清楚嵌入式系统如何与硬件配合使用,以及您是否必须对任务和调度有精确性要求。”

Image

Stewart说:“如果约束很简单,那么你可以使用循环。然而,如果您的设计使用更复杂的环境,想要利用安全、安全和通信协议,并且需要时间限制,则RTOS是必要的。”

Image

当被问及大学是否在向学生开发人员讲授使用RTOS的好处和如何使用时,Akemann表示有工作要做。他说:“一个计算机科学程序员,他们基本上知道如何编程,但这与嵌入式设计中的具体要求无关,而且真正解决这一问题的课程仍然很少,从电气工程专业的角度来看,它是相似的问题。”

RTOS具有可移植性

在实施基于RTOS的开发方法时,需要做出一些关键决定。Stewart说:“你必须了解的第一件事是在系统内工作所需的资源限制。你完成任务的处理器配置是什么?你需要消耗多少电力?然后还有考虑,您是否有完成任务所需的通信等内容要求,启动过程中是否有时间考虑因素,以及您可能需要的采样率是多少。另一个因素是设备是否必须与人机交互。”

Akemann指出了代码可移植性越来越重要。“如果您有在许多不同平台上运行的RTOS,当您选择的MCU不再可用或出现供应链问题时,您可以切换芯片。然而,请记住,如果你不使用RTOS,你的可移植性就会消失。”

首次使用RTOS的开发人员面临着学习曲线,但Akemann表示,这不是不可逾越的。他说:“通常,客户会实施相当笨重的一个应用程序,但根据我的经验,他们很快就习惯了。Segger通过为我们的embOS RTOS提供一份包含许多示例的手册来提供帮助。最初,人们只编写一个超级循环应用程序,并在将任务分配给特定进程之前将所有内容都放在一个任务中。他们甚至可能认为操作系统中存在一些魔力,操作系统将让他们有机会比以前做得更多。情况并非如此,但通常情况下,客户会很快习惯这种现实。”

纠正误解

关于RTOS的一个常见误解是,与类似的裸机方法相比,内存要求要高得多。Stewart反驳说“Linux基金会的开源RTOS Zephyr项目只需要10kB就可以运行一个Blinky应用程序(闪烁LED而不是显示“你好,世界”),然后您可以使用Zephyr Kconfig文件和设备树来添加您需要的其余部分,一切都已经集成到代码库中。”

Stewart还驳斥了RTOS是一个黑匣子的假设,她观察到:“当事情出错时,你需要有透明度和理解能力,这就是你通过开源RTOS获得的。因此,当事情不成功时,你可以把你的分析放到一个新的层级去做。”

Akemann谈到了这样的想法,即使用RTOS可以比没有RTOS做更多事情,同时在这个过程中对硬件施加“小限制”。他说RTOS将“增加一点执行时间,因为需要代码执行才能从一个任务切换到另一个任务”。

Akemann说,“另一个误解是,RTOS是一个完整的操作系统,就像Windows或Linux一样。嵌入式RTOS并非如此,它通常只是调度器本身。它不附带IP堆栈、USB堆栈或支持其他外围设备的协议。当然,一些供应商提供这些堆栈,但我们经常从客户那里听到的误解是,他们想要一个完整的操作系统”包括来自单一来源的一切中间件。

硬件抽象

北欧半导体(挪威)的开发人员营销经理Ali Aljaani就开发人员如何接受RTOS概念提供了见解。“对于开发人员来说,这是一个相当大的话题。”他说,“如果你设身处地为来自嵌入式大学课程的开发人员着想,你控制硬件的方法就是写寄存器。与将硬件设备参数放入头文件中不同,使用RTOS,硬件是从源代码中抽象出来的,就Zephyr而言,所有内容都被抽象成设备树,因此当您选择目标时,它会选择该硬件的设备树。”

Image

Aljaani说,Nordic认识到需要对从裸机方法切换到RTOS的工程师进行教育和指导,并做出了相应的响应。“随着硬件的不断改进、多个内核和丰富的外围设备,如果你想在裸机上做类似过程间通信的事情,那就是一场噩梦。我们决定对教育进行大量投资,并成立了北欧开发者学院。”Aljaani说“例如,我们的NR Connect SDK基础知识课程解释了Zephyr的行为,Zephyr是我们使用的核心RTOS组件,以及Kconfig和设备树的概念。这些需要都是动手操作的,所以我们从用一个很小的源代码解释想法开始,并继续构建。”

文章来自互联网,Robert Huntley是EE Times Europe的撰稿人

声明:本文部分素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

作者:strongerHuang
来源:strongerHuang

推荐阅读

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
2896
内容数
309
分享一些在嵌入式应用开发方面的浅见,广交朋友
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息