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幀
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章