欢迎来到天天文库
浏览记录
ID:33507845
大小:1.11 MB
页数:23页
时间:2019-02-26
《小型微控制器上的实时操作系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、www.tecoss.org小型微控制器上的实时操作系统author(TranNguyenBaoAnhSu-LimTan)作者单位(新加坡工程中心南洋理工大学)译者注:T-Engine中国开源社区在参展2010年12月的日本东京Tronshow时看到T-Engine官方宣传资料上引用了IEEE杂志的一篇文章“REAL-TIMEOPERATINGSYSTEMSFORSMALLMICROCONTROLLERS”的内容,该文章详细对uC/OS、uTenux(uT-Kernel)等多种RTOS进行了性能测试,社
2、区感觉对国内的读者会很有帮助,正好大连理工大学软件学院的学生康海龙在实验室实习,康海龙同学很积极的利用业余时间翻译成了中文,再次深表感谢,也希望大家能够通过这篇文章对常用的RTOS有更深的了解。实时操作系统已经在基于微控制器和处理器的嵌入式系统设计中获得了普及。本文讨论实时操作系统和通用操作系统间的差异,在小型微控制器系统开发中使用实时操作系统的优缺点,以及用于实时操作系统基准测试的方法。基准测试结果表明没有明显的赢家,在不同的标准下,每个实时操作系统上的执行比其他的更好一些。嵌入式实时系统用于各种用途
3、,如控制或处理数据。实时操作系统是一种带有一套API的软件,开发人员可以使用这些API来构建应用程序。为支持一些嵌入式系统的需要,实时操作系统满足最后期限。但是,使用实时操作系统并不能保证系统一定能满足最后期限,因为这些系统也取决于整个系统的设计。虽然嵌入式实时系统主要是在高端32位CPU的微处理器或微控制器上使用,但是在中端(16位和8位)处理器的系统上提供这些功能,也有着日益增长的趋势。实时操作系统和通用操作系统间的比较操作系统管理计算机系统的共享资源。不同于通用操作系统,实时操作系统是被专门设计来
4、实现实时响应。在其他方面,实时操作系统也不同于通用操作系统。首先,实时操作系统提供抢占式的基于优先级的调度方法。调度方案指的是实时操作系统怎样为执行的任务指定CPU周期。因此,调度方案影响操作系统如何执行各种软件程序。大多数通用操作系统分配任务的执行时间片数相同(例如通过轮番调度)。实时操作系统经常分配任务的优先级,高优先级的任务可以在执行过程中抢占低优先级大连悠龙咨询服务有限公司(www.uloong.cc)第1页www.tecoss.org的任务(抢占式调度)。其他实时操作系统采取协同调度,这通常意
5、味着正在运行的任务必须明确地调用调度器来进行任务之间的切换。此外,实时操作系统允许可预见的任务同步。在通用操作系统中,任务同步,是难以预测的,原因是操作系统可直接或间接地在应用软件中引入延迟。在实时操作系统中,任务同步必须是时间可以预测的。该系统服务必须存在已知的、可预期的执行时间。通用操作系统和实时操作系统的主要区别是,实时操作系统支持确定性行为。在实时操作系统中,即使任务的数量在增加,任务分派时间,任务切换延迟和中断延迟必须是时间可预测的和一致的。与此相反,当任务数量的增加时,通用操作系统(主要是由
6、于其分时办法)减少系统的整体响应,并不能保证在一定的时间内调用服务的执行。动态内存分配(malloc()在C语言中),虽然在通用操作系统被广泛地支持,但是在实时操作系统中不建议使用,因为它产生不可预测的行为。相反,实时操作系统提供固定大小的内存分配,他们为每个请求只分配固定大小的内存块。小规模嵌入系统的实时操作系统可利用的实时操作系统包括商业,私有和开源系统。许多系统设计师相信被设计使用小型微控制器的小规模嵌入系统(即ROM最大值128KB和RAM最大值4KB的微型控制器)不需要实时操作系统。然而,实时
7、操作系统为这个范围的设备提供重大好处。例如,开发人员可以使用实时操作系统优化软件开发。在使用小型微控制器进行系统开发,软件生产率是一个关键问题,因为上市时间的压力以及缩短的开发周期(见2004年嵌入式系统设计调查http://www.embedded.com/columns/survey)。对于涉及复杂的代码的项目,实时操作系统是一种有效的工具来管理和分发软件开发人员之间的任务。使用实时操作系统,项目负责人可以把整个软件分割成模块任务,便于个体程序员处理。此外,其他开发人员能够开发低级别的驱动程序。实时
8、操作系统也提供了更好的和更安全的同步机制。在没有实时操作系统的小型嵌入式系统开发中,开发人员通常使用全局变量来用于同步、模块和函数间通信。但是,使用全局变量可以导致错误和软件安全问题,特别是在高度的中断驱动的系统,(见2006年嵌入式系统设计调查http://www.embedded.com/columns/)。因为这些全局变量往往被共享和函数之间的访问,在程序执行过程中他们是非常容易被篡改。随着代码开始增长,这些错误隐藏得更深,从而更难以
此文档下载收益归作者所有