最近想试验下这个方案!!!
1.选用基于AM5728处理器为Linux 嵌入式开发平台, 并且在该平台上运行集成Xenomai 实时补了的Li nux操作系统。
2.安装Etherlab + Xenomai
3.移植到AM5728处理器上
Xenomai2.6.2.1的安装步骤及说明
https://github.com/ART-robot/ethercat_install
4.Beagle Board x15 control GPIO
https://blog.csdn.net/yaked/article/details/50499886
分割线
- IGH + generic driver(可以跑DC,但是没有实时保证,没有什么意义,跑RTDM会死机)
- IGH + RTAI (RTDM官方说要加 ,主站的周期放到实时线程里面,能用,还可以,可能会死机)
- IGH + xenomai(包含RTDM实时驱动,比较麻烦一点,做成的话,稳定性高一点)
介绍下实时:
非Linux阵营:VxWorks,RTEMS
Linux阵营 :RT-linux,Preempt-rt,WindRiver Linux,RTAI,Xenomai。
xenomai3.0的RTDM和xenomai2.x(i210)的RTDM不一样,修改IGH的代码,会有BUG,比如说多个伺服,6个会进入OP慢的问题,coe通信可能也有问题。
RTAI:
(Real-Time Application Interface)是对Linux内核的硬实时扩展,它遵循自由软件规范;它可以提供工业级的RTOS功能,而且其所有的功能都可无缝的通过GNU/Linux环境访问。RTAI项目是由意大利米兰理工学院航天工程系(DIAPM)发起开发的遵循GPL的开源项目。
RTAI目前的稳定版本是3.3(以下的分析基于3.2),支持的CPU类型包括I386,PPC和ARM,在ARM类型处理器上的移植官方软件包仅包含对EP9301和PXA255的支持;
目前,基于RTAI已经有了很多的应用,如RTnet,USB4RT,RTCAN等。
RTnet是基于Xenomai和RTAI的开源的硬实时网络协议栈;它使用标准的以太网硬件,并且已经支持流行的网络芯片;它以确定性的方式实现了UDP/IP,ICMP和ARP,并且给内核模块和实时用户进程提供了POSIX套接字接口。
xenomai:
Xenomai 基于Adeos(Adaptive Domain Environment for Operating System)实现双内核机制
双内核的实现方案中,实时内核和标准Linux内核同时存在,实时进程会被优先交给小型的实时内核(或称为辅助内核)来处理,实时内核对它们做出相应的调度,一般的非实时任务会继续交给标准的Linux内核来处理,而实时任务则由实时内核来完成响应。通常,实时内核是由一套可动态加载的模块来提供的,类似于任何一般的子系统那样,在Linux源码树中进行直接编译。
Adeos是"the Adaptive Domain Environment for Operating System"的简称,即操作系统的适应性域环境。Adeos的设计初衷是为了满足多个操作系统能够共享底层的硬件设备。它通过轮流创建实时域的方式来保证实时域具有高于其他域的优先级。利用Adeos的这种能力,实时操作系统既能与其他执行的域分享底层硬件,同时,也具有优先接收中断管道的优势。Adeos中所注册的每个域都会分配到一个静态的优先级,在中断管道中传递的事件会按照域的优先级进行依次传递,进而区别高低优先级,并保证实时性能的实现。
当Adeos运行在操作系统中,它很容易能从底层硬件获取确定性的实时动作。在Linux主机中,这意味着创建一个内核模块能够通过Adeos的域机制加载到内部,并从中断管道中获取一个优先级状态。一旦它实现了,将能够提供所有的确定的能力需求来满足实时任务的需要。
当系统安装的Adeos能够识别和做出反应后,将不能通过Adeos的通常操作干预系统和调用系统修改结构。更确切的讲,只能使用Adeos提供的原始的stall/unstall。这将保证Adeos一定程度上能控制系统中所发生的事件。
RTDM:
Real Time Driver Mode:实时驱动模型
具体步骤教程:点击下载