原创 怎样选择合适的嵌入式操作系统

2009-6-5 13:11 3308 5 5 分类: 软件与OS

选择合适的操作系统<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


作者:Dick Selwood


 


如果你正准备开始一个基于ARM系统的开发,你必须对你要开发的产品有个合理的规划。你必须做出几个决定:


 


并非首选?


 


通常,在选择一个操作系统之前,你已经作出了整个项目的预算,选择了合适的处理器,以及通过计算得到了实时性能的参数。然而,通过对用户的调查显示,一旦工程师作出了重要的投资决定,不仅是财务上的,还包括对开发工具、RTOS、其他的软件、开发板以及调试工具等所需要的学习时间,都是影响与现有投资是否兼容的决定性因素。所以,要谨慎的选择您所使用的RTOS-它会伴随您相当长的一段时间。


 


 


厂商标准


 


我们询问了一些主要的RTOS厂商,选择一个RTOS的标准是什么?在这篇文章的最后,有一个回复的表格,列举了基本的注意事项。那么,什么是最令人感兴趣的呢?那就是性能:具体的是由代码大小、中断延迟等等来衡量;还有一个重要方面,那就是有一个假定:这些衡量的参数是给定并且可以估量的。产品支持,工具,开发板以及相应的问题同样重要。价格成本的问题,不止版权费用,还包括所有权的全部费用,以及一些不可触摸的问题,像易用性等方面,我们以后将讨论这些方面。


 


 


首先-你需要一个操作系统吗?


你需要一个操作系统吗?


 


如果你正在使用一个32位的处理器,并且是一个相对复杂的项目,那么可能就需要多任务。对于多任务对处理器的竞争,需要一个仲裁机制来分配资源。如果是抢占式,那么打断一个任务取决于这个任务的优先级,这个时候必然需要一个操作系统。


 


 


开发或者购买


 


从各个方面来说,RTOS是一个额外的开销,所以为了省钱可以自己开发吗?这是可能的,但是有很多问题需要考虑。


第一个问题很简单:在开发RTOS方面你的专业技能如何?你是一个应用领域的专家还是一个OS方面的专家?RTOS供应商有一批专业的队伍来创建和开发RTOS。并且在你专注于RTOS开发的时候,必定会对应用程序的开发造成影响。如果你花了几千美元购买了一套商业RTOS,这些费用和你自己花费在研发RTOS方面的费用孰轻孰重呢?况且,还有维护和更新的问题。使用一个新的外设,意味着对驱动/接口更多的开发工作量。RTOS专家已经为您做了这些工作。您希望在除了您的应用代码之外,维护和调试更多的代码吗?


一个RTOS不仅仅是一个调度程序,一个商业的软件包通常提供:semaphores来表明资源正在被使用或者可用,mutex用来锁定资源,你所要做的就是开发自己的应用。


最后,是产品稳定性的问题。你能保证自己的OS代码和标准是一致的吗?就像其他的商业OS一样?对于一个高安全性的关键系统来说,使用一个自己的RTOS是非常不现实的。


 


 


开源或者商业


 


这在过去永远不是一个问题,因为不会有一个实时开放OS的源代码。但是时代改变了,实时Linux现如今有几个例程的源代码。但是使用开源的产品开发你自己的RTOS需要很多限定条件。明显的优点是免费,缺点是缺乏验证并且在支持新的外设方面的问题。一个折衷的办法就是购买一个商业的Linux版本,像Monta Vista或者Wind River的打包和扩展的Linux


除了Linux之外,还有一些其他的开源机构。FreeRTOS就是专注于嵌入式市场的应用,有一个实时内核和一些通信端口包括和ARM的通信,甚至还包括Cortex。其他的还包括TinyOSNicheTask


 


 


费用


 


费用问题远比初看起来的时候复杂。在极端的情况下,没有用合适的RTOS所带来的成本还包括推迟了产品上市时间,或者产品性能没有达到原来的预期等。


可见费用有最初的许可费用以及每个拷贝的版税。一些供应商有简单的商业模型,而另外一些却有着复杂的商业模型,在很低的许可费用和很高的版税之间提供一些选择,或者是很高的许可费用和很低的版税,或者,在一些情况下,没有版税。


在一定程度上,通过购买你得到了你所想要得。低成本通常是和功能受限联系在一起的,也许只有一个抢占式的调度和一个关键系统调用的选择,也许技术支持有限。你也许可以得到源代码自己修改。


用更高的费用,你可以期待更多,你可以得到一个很完整的应用平台,比如RTOS针对汽车电子的应用中,你可能从第三方得到编译器、一组接口及相关的软件,以及捆绑在一起的中间件,如网络栈,不同的通信协议(对汽车电子,CAN可以是给定的,FlexRay应当是可用的或是计划可用的)。这一包集合还可能包括开发工具、培训以及技术支持。平台概念就是提供所有基本的功能,由你来关注于不同的市场应用。是选择许可费用低的或者是开源的而版税高的RTOS,还是选择较高许可费用但版税低或者没有版税的RTOS,关键看企业是关注产品开发风险而讲究快速出产品,还是关注后期产品盈利。


 


举一个许可模型的例子,与IAR Embedded Workbench集成开发环境配合使用的IAR PowerPac RTOS和中间件,其收费模式是固定的license许可,不收版税。对同一个微处理器架构,这样的许可允许无限制的应用和项目。同时,IAR还提供Site license(一个公司内部可以有无限个用户使用)group license(最多可允许20个用户使用)


但是,使用RTOS的成本远不止价格。下面将要讨论的易用性是非常关键的:RTOS使用复杂,或者RTOS不能够提供一个应用所需要的所有性能,这些都将会给企业带来持续的时间、精力花费。


 


 


易用性


 


易用性是非常主观的一个概念。难以使用的RTOS带来时间和费用的成本,但是如何测量是否易于使用呢?一个方法是评判其文档,看其是否易读?逻辑结构是否合理?是否容易找到需要的信息?有很多产品就因为质量差的文档而大打折扣,一个不好的产品很少会有优秀的文档。


用户界面是另外一个问题,尽管每个人对用户界面的感觉都不同,但是一个好的界面应该是简单易用的,而不是奇奇怪怪的。


 


 


标准


 


POSIX标准提供了一个标准的用户和软件接口,如果达到这个标准,在理论上,将有助于用户更快的学习一个新的RTOS以及提供更为易用的接口。这些也许对你无关紧要,但是在保证稳定性方面,是非常有效的,无论是对于你的软件还是对于软件将来可能的变化,RTOS已经通过第三方的对一些关键点作了精细的检查。POSIX标准是RTOS的一个常规的功能,主要面向于大的嵌入式应用。


OSEK/VDX主要是针对汽车电子行业的标准,其定义了RTOS以及通讯协议。这个标准主要用来发展便携式的应用,带有最少的管脚,使用先进的时间调度机制。符合OSEK标准的RTOS(参见ISO 17356-3:2005), 对于要求一个紧凑的RTOS应用来说是非常有吸引力的。和此相关的是AUTOSAR,是基于OSEK RTOS建立的。


 


 


性能


 


选择一个RTOS,性能是关键的因素,但是没有一个简单的答案。不像处理器的性能那样,它没有一个中立的基准来评价其性能。对于供应商提供的性能评判,显然我们要小心对待。


有些方面可以被相对客观的评测,像RTOS的代码大小,但是像中断延迟/任务调度时间,尽管这些是可以测量的,但这依赖于处理器,由时钟、寄存器的数量等等因素来决定的。基准中比较重要的是中断数量或者任务切换等方面,但同样这受你所开发的应用程序影响。


性能和你的应用相匹配,是很重要的。很明显,性能不佳是不可以被接受的,但也没有必要一味追求系统并不需要的高性能。


 


 


软件包


 


就像我们之前讨论的,一个包括RTOS的软件包千差万别。但是完全没有必要去购买一个你并不需要的功能,保证你所购买的软件包刚好符合你的需要是非常关键的:例如从第三方添加一个TCP/IP协议栈需要时间,但有可能更好帮助产品推入市场。所以,你将会寻找对你所使用的外设的支持,例如flash控制器、你将要使用的通信接口如USB2.0或文件管理系统等中间件。


集成开发环境在软件包里非常有用,但是需要检查一下功能如何:软件包里包含什么?都是最好的工具吗?你也许已经有了一个IDE,或者觉得其它供应商能提供更多你需要的功能。你甚至可能已经或者希望将这些工具集成起来使用。Eclips致力于工具集成的工作,但是并不能包括所有的嵌入式工具。


很多RTOS供应商针对相应的处理器也提供开发板,并且提供一系列的I/O、接口以及板上外设,通常还包括一个用于调试的JTAG连接器。总之,你可以从那些提供开发套件的芯片厂商处购买,也可以从提供开发板、IDE等的第三方购买。


 


 


公司的选择


 


哪些公司在卖RTOS?他们的口碑怎么样,他们的拷贝卖了多少?当然,销量好的RTOS也并不一定适合你。但是你的新产品将会完全的依赖RTOS,所以你要确保你所购买的RTOS是否可靠并提供长期的支持。


另外一个需要考虑的问题是,RTOS厂商可以提供什么样的技术支持。一些公司提供免费的培训,有些却需要收费。他们是否可以提供本土的支持。如果仅有电话或者电子邮件的支持,因为时差的问题,可能对你的开发进度造成严重的影响。也许有时你需要更多的人手,一些供应商可以提供更多的咨询服务。这些费用将比较昂贵,但是咨询人员将会是RTOS方面的专家。


 


 


员工


 


使用一个广泛使用的RTOS,你需要决定什么时候开始招聘新员工,是全职还是合同制,你可以从使用OS方面的经验来决定合适的人选。使用一个不是很广泛使用的产品意味着可以招聘的对象将会减少很多,而且使用新手将会增加培训的成本。


 


 


前景预测


 


就像我们在开始提到的,你在RTOS以及相应的使用技巧方面,人力和现金方面,需要仔细考虑。这意味着你需要了解RTOS的开发进度。


现在具有使用多核平台的一个趋势,可以是用样CPU的多个拷贝,也可以是在同一个设备里的不同的核,例如具有两个核VLIW以及RISC的处理器。对于供应商如何处理这个问题的策略,是非常关键的。有些OS系统的已经有多核的能力,也有些供应商的软件可以在不同的核上运行不用的OS。


 


 


结论


 


选择一个RTOS是一个重要的决定,并且这是个复杂的问题。尽管一个产品在技术上满足你的需求,但是,如果你是需要一个准时交货价钱合理的产品,你还是要从全局考虑这个问题,而不仅仅是技术问题。所以,谁会说作为一个工程师是一件容易的事情?如果真是这样,你会享受这个过程吗?


 


 

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条