实时的嵌入式Linux系统,上部

ZDNet软件频道时间2003-10-30作者:zdnet china |
本文关键词:embedded
本文译自Builder.com,未经许可请勿转载
Linux已经在嵌入式应用程序领域获得了稳固的立足之地;但是标准的Linux内核没提供很多嵌入式应用程序所需要的可预测响应时期(predictable response times)。

在这个上下两部分的系列里,我将描述能够改善嵌入式Linux系统实时性能的主要方法。在本周,我将讨论有助于改善系统性能和响应能力的外部组件。

导致性能不佳的主要原因

导致实时性能不佳的主要因素有两个:过长的中断反应时间和任务切换反应时间。

  • 过长的中断反应时间是由于和中断一起运行的冗长核心代码段被禁止造成的。这就限制了操作系统响应中断的频率。
  • 任务切换反应时间。在一个普通的Linux内核里,用户模式的进程都是抢先多任务的(preemptible),但是到内核里的系统调用却不是。在极少的情况下,有些系统调用能够花几十或者几百毫秒来完成,而不会受到其它的进程的限制。

让硬件来解决问题

通过使用更快的处理器,你可以获得性能上巨大的提高。Monta Vista的报告表明:运行在800-MHz Pentium III这一级别处理器上的 Linux 2.4内核在最差的情况下都能够获得大约60毫秒的中断响应时间。

对于很多嵌入式系统来说,选择(更快的)处理器不太现实,它们只能使用与特定型号的ARM或者PowerPC兼容的嵌入式处理器。一个60毫秒的中断响应时间(或者大约60毫秒)不算很快,但是这对于很多实时的嵌入式应用程序来说已经是很不错的性能了。

其他的系统要对专门的硬件、协处理器,或者数字信号处理器(DSP)使用时间关键函数。这对于多媒体嵌入式Linux系统来说是一个很常用的方式,这也会给予Linux操作系统进行非关键控制、监控、用户界面,以及通信任务的自由。

Linux作为低优先权的线程运行

RTLinux将Linux内核作为简单实时操作系统(RTOS)或者子内核里优先权最低的线程来运行,从而避开了Linux内核性能的问题。RTLinux仿真了Linux内核所看到的中断控制器,这样关键的实时中断就能够保持激活,即使在被CPU中断的核心Linux内核请求被取消了的情况下。研究报告显示:这种方法在高速的处理器上能够获得低于10毫秒的中断反应时间。

这种方式的优势在于:实时和非实时的线程被分离的,而关键的实时函数会在固定的RTOS环境下运行,从而不受普通Linux内核的时间影响。

拥有两个内核就意味着有两组单独的API:一个用于Linux环境,另一个用于实时环境。此外,你将需要特殊的机制来实现实时和非实时环境之间的通信。

RTLinux的开发人员拥有底层虚拟化技术的美国专利(U.S. Patent 5,995,745),所以如果你想在非GPL的条款下使用RTLinux就必须支付专利使用费。换句话说,一定要先读读这份专利声明。

RTAI (实时应用程序接口)采取了硬件虚拟化的方式,这和RTLinux很类似。它是遵照GPL条款发布的,因为此就不需要支付同RTLinux专利相关联的专利使用费了。

我不是个代理律师,所以在你准备将这两个环境应用到商业项目里之前,请寻求法律建议,并仔细阅读授权条款。

在下部里,我将描述你可以用在普通Linux内核里用以提高其性能的内核补丁。


本文作者David Brenan是一名具有15年以上工作经验的独立嵌入式系统开发人员。他的作品包括设计过获奖的专业数字音频产品。





责任编辑:李宁

欢迎评论投稿

您看到此篇文章时的感受是:
支持
愤怒
无聊
暴汗
养眼
炒作
不解
标题党
搞笑
用户评论
用户名
评论内容
发表时间
- 发表评论 -
匿名
注册用户

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134