如何选择合适的嵌入式操作系统

描述

随着嵌入式设备的复杂性不断增加,软件开发任务已成为典型项目预算的最大组成部分。图形界面、网络协议和数据安全只是设计团队在其定制应用软件之上添加的一些新要求。随着软件负担的增加以及客户对更快响应时间和即时数据访问的需求,操作系统已成为组织和优先考虑软件和硬件交互例程的基本要素。与只有少数操作系统的桌面环境不同,嵌入式设计人员有数百种选择,正确的选择取决于每个项目的特殊需求和要求。

操作系统的基本功能是管理系统的外围设备和调度软件任务,以确保每个程序获得一些处理器时间。文件系统也是标准操作系统的一部分,用于存储软件模块和引导指令。操作系统的另一大好处是为常见的硬件外围设备提供网络软件和驱动程序,从而消除不断的重新发明。然而,嵌入式操作系统与其桌面操作系统完全不同。桌面系统假设有键盘、鼠标、显示器、硬盘和大量内存。但是,嵌入式产品没有这样的标准化。一个嵌入式系统可能没有硬盘和有限的内存,而另一个根本没有用户 I/O。嵌入式操作系统也必须是模块化的,QNX的Neutrino 实时操作系统(见图 1)。在确定操作系统之前,设计人员应该了解调度算法、内存要求、延迟、工具支持和定价模型。

图 1: QNX Neutrino RTOS 采用模块化框架,使设计人员能够为各种处理器架构创建优化的操作软件。

ARM

硬或软

当设计师将每个新项目的要求拼凑在一起时,实时性能是早期考虑的因素之一。操作系统供应商使用“硬”和“软”等术语来描述其系统的实时操作。硬实时系统被安排,因此任务保证在外部事件的精确时间长度内开始。硬实时系统是确定性的。软实时系统一般会列出启动例程的平均时间长度,但有一个小概率是最大时间可以长得多。任务关键型应用程序必须是确定性的。例如,工业执行器、安全气囊控制器,甚至街机游戏都必须在已知时间内做出反应。软实时应用程序通常会在几秒钟内做出响应,但偶尔的缓慢响应并不重要。

实时操作系统的基本架构包括程序接口、内核、设备驱动程序和可选的服务模块。内核是操作系统的核心,提供中断处理程序、任务调度程序、资源共享标志和内存管理。内核的服务是通过调用其应用程序接口 (API) 来请求的。内核在实时操作过程中一直处于活动状态,并且必须保持内存驻留。内核的主要功能之一是处理由外部或内部事件引起的中断。当中断发生时,处理器将控制权转移到中断服务程序,该程序登录中断,向调度程序发送消息,然后返回活动代码。调度程序设置单个任务的执行顺序,以确保较高优先级的任务可以抢占较低优先级的任务以维持确定性响应。最流行的调度技术是抢占式优先调度,其中任务可以中断较低优先级的任务并继续执行直到完成或直到被较高优先级的任务抢占。

开发工具链是选择操作系统的另一个大问题。开发人员将把大部分软件设计和调试工作用于与集成开发环境 (IDE) 交互,以便快速访问编辑器、编译器、链接器、下载器和运行时工具。大多数供应商提供完整的 IDE,包括源代码编辑器、代码管理器、指向编译器和链接器的链接、将代码下载到目标平台的软件,以及一个或多个调试器。软件供应商还提供软件性能分析工具来帮助开发人员分析和可视化软件中的实时活动。其中许多分析工具是可选的,会增加整体工具成本。Green Hills Software提供MULTI 集成开发环境(IDE) 以支持各种操作系统。IDE 软件工具在单个包中包含多个 C 编译器选项、编辑器、配置管理器、代码浏览器和调试器。MULTI 还具有DoubleCheck,这是一个集成的静态分析器,可以隔离由可能不在同一源文件中的代码段之间的复杂交互引起的错误。

节约成本

成本显然是选择嵌入式操作系统时的主要决定因素。由于使用软件基本上没有商品成本,因此供应商可以调整其定价模型以从各种来源产生收入。供应商可以收取初始许可费、每位工程师的开发席位、开发工具、每单位版税、持续支持或重大升级。为了公平地比较价格,必须为所考虑的每个操作系统计算总体拥有成本。计算必须包括计划在产品生命周期内交付的单位数量。尽管商业操作系统可能很昂贵,但节省成本是购买现成产品的重要原因。如果您可以购买并因此消除软件最复杂部分的编码、调试和文档,你应该仔细考虑。供应商将产品技术支持视为商业操作系统的主要优势。他们能够通过将成本分摊给所有客户来为软件的操作系统部分提供持续的支持。

在生命周期分析和与商业操作系统成本相关的“贴纸冲击”之后,设计人员通常还会考虑“免费”开源操作系统。尽管开源软件消除了一些初始成本问题,但仍然存在必须解决的重大问题。潜在的开源用户提出的一个问题是缺乏中央资源来提供类似于商业软件供应商的支持。开发人员通常可以通过 Internet 找到他们问题的答案,但没有人愿意研究和回答特定问题。开源产品被普遍化以适应最广泛的用户,并且可以迫使设计人员修改硬件配置,从而导致嵌入式设备的重复成本更高。还,开源软件不属于公共领域,用户必须遵守个人许可中规定的特定规则,这些规则可能会迫使设计者向专有软件公开源代码。即使存在这些障碍,开源操作系统仍广泛用于嵌入式设计。

占地面积小

选择操作系统时的一个额外考虑因素是在所需的初始硬件占用空间和在需要更新时添加功能的能力之间进行权衡。操作系统必须是可扩展的,以便用户可以选择他们需要的软件系统的那些部分或功能。随着不断变化的需求和嵌入式技术,设计人员希望能够下载新的软件模块以添加或修改功能以供将来更新。Mentor Graphics的Nucleus 实时操作系统可降低嵌入式设备的物料清单成本允许开发人员在多种处理器硬件上部署小至 2k 的内核。借助模块化结构,设计人员可以通过选择可用功能的子集以及支持系统的 ROM 和 RAM 的数量来降低操作系统的初始成本。

嵌入式设计人员最喜欢的捷径之一是使用商用现货 (COTS) 模块启动项目,以消除大部分硬件开发和测试。通过为目标硬件选择带有板级支持包的操作系统,可以将同样的快捷方式扩展到软件。例如,LynuxWorks为其LynxOS实时操作系统提供150 多个 COTS 处理器板的板支持包。这些封装包括 ARM、PowerPC、x86、MicroBlaze 和 MIPS 处理器板。这种方法可以缩短整体开发进度,使设计团队能够专注于嵌入式项目的专有部分。

随着客户对通用连接、更快的响应时间、复杂的功能和即时数据访问的需求扩展到越来越多的设备,设计人员可以期待实时操作系统软件成为未来嵌入式产品的标准。幸运的是,实时供应商和开源集合提供了大量现成的、可立即运行的软件包,以适应大多数嵌入式配置。挑战将是分析您的要求,以使操作系统与具有足够增长空间的应用程序相匹配,同时最大限度地减少成本和开发工作。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分