Ethercat解析(五)之初始化流程

一、EtherCAT入口

源代码执行命令sudo /etc/init.d/ethercat start,将会从文件module.c文件中的ec_init_module函数中开始往下执行初始化流程。

二、初始化大致过程

这里写图片描述

(1) ec_init_module
主要用于生成/dev/EtherCAT设备,并且调用ec_master_init初始化主机相关信息。

ec_master_init()的主要工作内容:

1.设置IDLE模式下数据发送周期;
2.初始化数据包队列;
3.初始化网络设备;
4.初始化master主状态机;
5.初始化参考时钟数据包;
6.初始化时钟数据包;
7.初始化对时监测数据包;
8.初始化字符设备,/dev/EtherCAT0;
9.初始化RTDM设备;

(2) IDLE状态进程
设备打开后,设备调用ec_master_enter_idle_phase,该函数中将启用ec_master_idle_thread进程

ec_master_idle_thread以设定的周期(send_interval)发送数据包并处理,其流程如下:
这里写图片描述
其中ec_master_idle_thread()的调用周期与系统滴答时间有关:

//send interval in IDLE phase
ec_master_set_send_interval(master, 1000000/HZ);

三、数据帧收发过程

Etherlab1.5.2 提供了Generic驱动,从而使Etherlab能通过任何网卡收发EtherCAT帧
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhangzheng_1986/article/details/82351185