本文探討IgH EtherCAT Master針對Linux/Windows/RTOS等不同操作系統(tǒng)的移植。
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請注明出處。如有問題,歡迎指正。博客地址: 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版本,具備良好的可移植性,能夠輕松適配各類操作系統(tǒng)乃至裸機(jī)環(huán)境。然而,在功能豐富度與實時性能表現(xiàn)上(除裸機(jī)外)遠(yuǎn)不如IgH。想要應(yīng)對復(fù)雜的EtherCAT應(yīng)用場景則會非常困難。SOEM的協(xié)議棧運作依托于應(yīng)用層接口的驅(qū)動,其內(nèi)部并無獨立任務(wù)(線程)。
相比之下,IgH誕生較早,IgH功能全面,同時注重實時性能。為了在Linux上獲得良好的實時性能和低CPU利用率,同時方便多主站使用時進(jìn)程間隔離等原因,IgH設(shè)計之初就基于Linux內(nèi)核態(tài),今天看來可移植性較差。
igh的高實時性能得益于Linux內(nèi)核態(tài)可直接操作網(wǎng)卡收發(fā),功能全面得益于其內(nèi)部采用的多任務(wù)狀態(tài)機(jī)架構(gòu),這些任務(wù)驅(qū)動機(jī)制通過系統(tǒng)調(diào)用向用戶空間的EtherCAT應(yīng)用提供服務(wù),極大簡化了應(yīng)用層面的接口交互,使得EtherCAT應(yīng)用操作接口變得極為簡單。
那么IgH能移植到Linux用戶態(tài),或者其他zephyr、freertos、rtems、rtthread等RTOS嗎?答案是當(dāng)然能。
IgH整體框架及運行原理本詳見博客文章 【原創(chuàng)】EtherCAT主站IgH解析(一)--主站初始化、狀態(tài)機(jī)與EtherCAT報文 。
那么IgH能移植到裸機(jī)嗎?理論上可以,但比較麻煩。但是IgH整體設(shè)計就是多任務(wù)的,關(guān)鍵點是沒有任務(wù)調(diào)度,幾個狀態(tài)機(jī)如何驅(qū)動?不考慮權(quán)衡投入產(chǎn)出、可復(fù)用性,你可以自行嘗試。
IgH雖然運行在Linux內(nèi)核態(tài),但并不與Linux內(nèi)核的耦合,整個協(xié)議棧只用到了Linux的基本服務(wù)。
操作系統(tǒng)服務(wù) | 描述 |
---|---|
任務(wù)(線程)調(diào)度 | 每個主站,內(nèi)部狀態(tài)機(jī)運行需要2個任務(wù),EoE 1個(可選)、應(yīng)用層周期任務(wù) |
睡眠(定時服務(wù)) | 任務(wù)睡眠,讓出CPU;應(yīng)用層通信周期控制,如果RTOS沒有高精度定時接口,可啟一個硬件timer回調(diào)更加精確。 |
讀取時間戳 | EtherCAT子報文對象維護(hù)需要收發(fā)時間戳 |
動態(tài)內(nèi)存分配 | master、slave、datagram、eoe、eeprom等對象需要動態(tài)內(nèi)存分配 |
event(非必須) | 應(yīng)用調(diào)用主站服務(wù)時阻塞到事件等待,主站完成服務(wù)后通過事件喚醒應(yīng)用 |
Semaphore/mutex | 同步互斥 |
TCP/IP網(wǎng)絡(luò)協(xié)議棧 | 主站已支持二層網(wǎng)絡(luò)包轉(zhuǎn)發(fā),若設(shè)備本身需要TCP/IP網(wǎng)絡(luò)遠(yuǎn)程調(diào)試工具需要TCP支持;可選實現(xiàn)主站EOE |
關(guān)于RTOS的高精度定時器詳見博客文章 不同RTOS中POSIX接口的實現(xiàn)差異 ,相關(guān)章節(jié)。
其他一些數(shù)據(jù)結(jié)構(gòu)以及網(wǎng)絡(luò)接口相關(guān):
圖片信息:(需要在文章中保留圖片信息)
機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)