首页 > 代码库 > 《实时控制软件》第三周作业
《实时控制软件》第三周作业
一、Xenomai的简介
1.简介
Xenomai 是一种采用双内核机制的Linux 内核的强实时扩展。优先级高于Linux 内核,它负责处理系统的实时任务。Xenomai 无缝集成到Linux操作系统,从而无障碍所有的Linux软件栈源代码和更多的东西Xenomai 实时内核为开发强实时应用提供了丰富的功能, 主要包括实时线程调度与管理用户空间实时任务支持中断服务线程同步服务实时对象注册服务和动态内存申请等。
和典型的Linux实时方案( RTLinux和RTAI) 相比,Xenomai拥有自己的两个特色: 一是支持完全的性能优异的用户态下的实时性; 二是它兼容常见的vxworks pSOS+ VRTX等成熟的实时操作系统的API,这为各类传统实时操作系统的实时程序快速移植到新的平台上提供了便利,同时还提供了原生API和实时驱动模型( RTDM) 。
2. 结构
Xenomai项目起始于2001年。从2003年夏天起,Xenomai和RTAI有了两年时间的合作,期间开发了广为人知的RTAI/fusion项目分支。到2005年,Xenomai项目又重新独立出来。而从2.0.0版本开始,Xenomai在硬件平台的移植就一直是基于Adeos构架来实现的。
在基于ADEOS技术的Xenomai系统中,通常有A、B、C和D四种类型的交互。如图所示:
1. A类交互是各个域和硬件设备直接联系,包括访问内存等;
2. B类交互指当ADEOS接收到硬件中断后,会根据中断来对相应的域进行中断服务;
3. C类交互指当前域内的操作系统主动向ADEOS请求某些服务;
4. D类交互是指ADEOS接收硬件产生的中断和异常,同时也可以直接控制硬件
Xenomai在ADEOS系统中的域优先级要高于标准Linux域,每当中断到来之后,ADEOS先调度Xenomai对该中断进行处理执行中断相应的实时任务,只有当Xenomai没有实时任务和中断需要处理的时候,ADEOS才会调度Linux运行,这就保证了Xenomai的中断响应速度和实时任务不受Linux的影响,从而提供了实时系统的可确定性。
Xenomai 还提供了用户态下的任务的混合执行模式,即任务运行于主域时,任务是由Xenomai直接调度的,可以随时抢占标准Linux的非实时任务; 当任务运行于从域时,任务由标准Linux内核调度,任务切换的时间较长且不支持随时抢占,但可以应用Linux所有的系统调用 然而,由于某些具体任务具有优先级继承的 特 性,在 标 准Linux 进 行 内 核 调 用 时,标 准Linux中断可能抢占实时任务的调度权,对实时任务造成不必要的延时 对此,Xenomai 引进了中断屏蔽机制,即在实时任务执行过程中,任何来自标准Linux内核的中断都将被延迟处理 它支持的优先级继承的策略,可以防止它检测到一个同步对象时发生优先级的翻转。
实时操作系统的实时性的一个评价指标是任务响应延迟,这其中一个就是中断延迟时间 为了能从根本上解决中断延迟时间过大的问题,ADEOS巧妙地通过一种虚拟中断技术来有效地减少中断服务时间和中断分派时间,以此获得更佳的任务响应时间 当产生一个硬中断时,系统既不去查看中断向量表,也不去执行相应的中断服务程序,而是将事件直接记录到一个事件表中,然后立即将CPU的控制权返回给操作系统 此过程仅需保存中断模拟程序的寄存器,从而省去了在硬件服务中要保存上下文环境的时间。
二、对于小组任务的看法
对于一个软件的开发包括很多的步骤,从最开始的需求分析入手,到系统架构,每一部分的编写实现等,都需要每个人好好协作,发挥自己的特点与优势,完成这个软件。
对于二轴机械手的仿真,我对轨迹插补任务比较有兴趣,这部分要求算法的计算比较好,设计一个比较好的模型方便编程。我软件编写能力比较弱,但有比较好的逻辑思维能力和数学计算能力,因此在功能分析、算法设计方面比较有兴趣。
三、编程作业
编程作业已上交于GITHUB。
《实时控制软件》第三周作业