红联Linux门户
Linux帮助

在ARM体系下的实时Linux

发布时间:2008-09-20 10:38:13来源:红联作者:Around
也许在嵌入式领域,不选择Linux的原因主要有两点吧:

1、不容易上手,不容易开发,维护成本高,工作量大....

2、实时性差

这里暂且不说第一点。现在,很多人都在讨论Linux实时化的问题。做工程的人,能选择的可能就是RTLinux、RTAI也或者是其他实时Linux等东西。

这里大体说一下思路。Linux的实时性差主要因为两个问题:

1、调度算法--------这个在2.6内核下加入的抢占,还能好一点

2、中断响应速度太慢--------主要是因为某些情况下,关闭中断时间太长

RTAI(或者RTLinux)采用的方法是,用软件接管了中断的控制。让实时中断可以得到及时的响应。在此基础上,在Linux内核之外,又加了一层实时调度的内核。Linux内核是运行在这个实时系统上的优先级最低的任务。因此,实时任务和中断就得到了保证。不过,在非x86的体系下,RTAI有很多问题需要解决。按照我在ARM上移植的经验,确实遇到不少麻烦。而且,中断程序入口的复杂,给中断响应本身也带来了更多的不确定性。

我的思路和RTLinux的原理基本类似,但是,我利用了ARM处理器本身的特点。ARM(我只看过ARMv4 ARMv5 ARMv6的体系)处理体系本身提供了两个外设中断入口,FIQ和IRQ。通常的操作系统,Linux、winCE、Vxworks仅仅使用了一个中断IRQ。而FIQ在这些系统的ARM移植体系下,基本都是没有使用的。FIQ是比IRQ优先级更高的中断,它可以抢占IRQ甚至其他的ARM异常(具体可以参考ARM体系)。这就在硬件上为我们提供了一个实时中断的入口。利用这个思路,我在Pxa270的处理器上,Linux 2.6.9内核上实现了这个想法。并且,采用uC/OS-II实时调度内核来调度Linux,解决Linux的实时化的问题。我最后的试验结果证明,在ARM体系下,这种方法,带来的中断延迟和确定性,会比RTAI提高很多。另外,我也讨论了Cache-Locking技术对实时性的影响。
文章评论

共有 0 条评论