有什么网站是做办公家具,建设网站怎样做,做se要明白网站,四川建设人才网官网登录版权声明#xff1a;本文为本文为博主原创文章#xff0c;转载请注明出处 https://www.cnblogs.com/wsg1100 如有错误#xff0c;欢迎指正。 本文简单介绍如何将 igh 移植到 zephyr、freertos、rtems、rtthread等RTOS #xff0c;甚至 windows 上。 ##前言
目前#xff0…版权声明本文为本文为博主原创文章转载请注明出处 https://www.cnblogs.com/wsg1100 如有错误欢迎指正。 本文简单介绍如何将 igh 移植到 zephyr、freertos、rtems、rtthread等RTOS 甚至 windows 上。 ##前言
目前EtherCAT商用主站有Acontis、TwinCAT3、KPA、Codesys等开源EtherCAT主站则主要有两大方案igh与SOEM两者设计天差地别SOEM开源于2008年底1.1.2版本具备良好的可移植性能够轻松适配各类操作系统乃至裸机环境然而在功能丰富度与实时性能表现上除裸机外远不如IgH应用层面想要应对复杂的EtherCAT应用场景会非常困难SOEM的协议栈运作依托于应用层接口的驱动其内部并无独立任务线程。
相比之下IgH诞生较早IgH功能全面同时注重实时性能为了在linux上获得良好的实时性能和低CPU利用率同时方便多主站使用时进程间隔离等原因IgH设计之初就基于linux内核态今天看来可移植性较差
igh的高实时性能得益于linux内核态可直接操作网卡收发功能全面得益于其内部采用的多任务状态机架构这些任务驱动机制通过系统调用向用户空间的EtherCAT应用提供服务极大简化了应用层面的接口交互使得EtherCAT应用操作接口变得极为简单。
那么IgH能移植到linux用户态或者其他RTOS吗答案是当然能本文做简单介绍。 IgH整体框架及运行原理本详见博客文章 【原创】EtherCAT主站IgH解析(一)–主站初始化、状态机与EtherCAT报文。 那么IgH能移植到裸机吗理论上可以但比较麻烦但是IgH整体设计就是多任务的关键点是没有任务调度几个状态机如何驱动不考虑权衡投入产出、可复用性你可以自行尝试。
IgH依赖操作系统服务
IgH虽然运行在linux内核态但并不与Linux内核的耦合整个协议栈只用到了linux的基本服务。
操作系统服务描述任务线程调度每个主站内部状态机运行需要2个任务EoE 1个(可选)、应用层周期任务睡眠定时服务任务睡眠让出CPU应用层通信周期控制如果RTOS没有高精度定时接口可启一个硬件timer回调更加精确。读取时间戳EtherCAT子报文对象维护需要收发时间戳动态内存分配master、slave、datagram、eoe、eeprom等对象需要动态内存分配event非必须应用调用主站服务时阻塞到事件等待主站完成服务后通过事件唤醒应用Semaphore/mutex同步互斥TCP/IP网络协议栈主站已支持二层网络包转发若设备本身需要TCP/IP网络远程调试工具需要TCP支持可选实现主站EOE
关于RTOS 的高精度定时器详见博客文章不同RTOS中POSIX接口的实现差异 ,相关章节。
其他适配
其他一些数据结构以及网络接口相关
网卡驱动主要实现轮询式无中断方式的二层网络包收发接口原Linux ethernet设备的抽象及skb的替代实现EtherCAT主站初始化流程调整链表、打印输出Linux相关特性删减修改GNU C、unlikely、likely、prefetch编译器特性等。