综述
RTAI 的设计思想源于 RT-Linux,设计一个专门处理实时任务的实时调度器, 通过虚拟中断技术把 Linux 当作一个优先级最低的实时任务来运行,系统中的实时任务和非实时任务分别运行在 RTAI 和 Linux 上。
出于可移植性考虑,早前版本的 RTAI 在硬件和 Linux 之间定义了一个实时硬件抽象层(Real-Time Hardware Abstraction Layer,RTHAL)。RTHAL 将 RTAI 中涉及到修改 Linux 的部分尽可能抽象成接口,RTAI 只需要通过这组接口与 Linux 交互,这样就能减少对 Linux 内核源码的直接修改,增强其移植性。后来由于涉及到RT-Linux 的知识产权问题,RTAI 从 3.2 版本开始用 ADEOS 技术取代了 RTHAL。
美国的 KarimYaghmour 于 2001 年提出 ADEOS(Adaptive Domain Environment for Operating System 操作系统自适应域环境),是为了解决当时大部分操作系统在适应性、灵活性、扩展性和兼容性上的局限。ADEOS 允许同一硬件资源灵活地被多个操作系统共享。
与 RTHAL 相比,ADEOS 的功能更加完善,RTAI 和 Linux之间的协同性更好。 基于 ADEOS 的 RTAI/Linux 系统主要由硬件、ADEOS、Linux 内核和 RTAI实时内核等部分组成。
各部分之间的逻辑关系见图
图 : 基于ADEOS的RTAI/Linux系统结构
在图中,各数字代表的含义如下:
①表示用户空间的应用程序和 Linux 内核之间的交互(系统调用);
②表示用户空间的应用程序和 RTAI 之间的交互(RTAI 的 LXRT 机制);
③表示 RTAI 实时任务和 RTAI 内核之间的交互;
④表示 RTAI 和 Linux 内核之间的交互,RTAI 的实现以 Linux 为基础;
⑤ 当作 ADEOS 不存在,各个域直接操作硬件(如内存访问、硬件访问)
⑥ ADEOS 接收到硬件中断后,执行 Linux 的中断服务程序
⑦
ADEOS 与 RTAI 之间双向通信。而且 RTAI 可主动向 ADEOS 申请服
务,通过它间接地实现 RTAI 和 Linux 之间的通信
⑧
ADEOS 与硬件之间双向交互。中断到来时,ADEOS 接收来自硬件
的控制;ADEOS 对硬件发出控制指令