EtherCAT是一種由Beckhoff開發(fā)的開放實(shí)時(shí)以太網(wǎng)技術(shù),廣泛用于對精度和實(shí)時(shí)性要求較高的運(yùn)動(dòng)控制設(shè)備和采集設(shè)備中。
由于我們處于特殊的位置,使我們在推廣EtherCAT主站協(xié)議棧的過程中,我們經(jīng)常會(huì)圍繞實(shí)時(shí)Linux系統(tǒng)與客戶展開討論。根據(jù)EtherCAT主站提供商Acontis公司對全球新客戶統(tǒng)計(jì),選擇實(shí)時(shí)Linux系統(tǒng)的客戶比重在過去10年逐年增加。2019年新客戶中采用實(shí)時(shí)Linux作為控制器操作系統(tǒng)已超過60%。
從近幾年的經(jīng)驗(yàn)中,對于實(shí)時(shí)Linux系統(tǒng)主要聚焦在采用RT-Preempt 還是Xenomai的爭論上。結(jié)合實(shí)時(shí)Linux系統(tǒng)專家Jan Altenberg在Embedded Linux會(huì)議上的講演。整理出此文,希望可以在RT-Preempt 和Xenomai之間選擇做出參考。
實(shí)時(shí)性
在和客戶的交流過程,部分工程師會(huì)把實(shí)時(shí)性與執(zhí)行速度或性能相混淆。Altenberg在講演中強(qiáng)調(diào):實(shí)時(shí)性與執(zhí)行速度和性能無關(guān)!
實(shí)時(shí)性的含義不是越快越好,而是在規(guī)定的時(shí)間內(nèi)完成任務(wù)的確定性(determinismand timing guarantees)。
在技術(shù)討論中,同樣客戶對EtherCAT協(xié)議不存在錯(cuò)誤數(shù)據(jù)自動(dòng)重傳機(jī)制有類似疑問。
EtherCAT主站的工作原理是按循環(huán)周期發(fā)送數(shù)據(jù)。所以EtherCAT在協(xié)議層面不會(huì)自動(dòng)在后續(xù)周期重新發(fā)送失敗的過程數(shù)據(jù)。
在Embedded Linux會(huì)議講演中,Altenberg還表述了一個(gè)有趣的觀點(diǎn),他希望大家忘掉“軟實(shí)時(shí)”即Softrealtime 的提法,只存在實(shí)時(shí)和非實(shí)時(shí)的、確定性和非確定性的區(qū)別。能保證確定性,那就是“硬實(shí)時(shí)” hardrealtime。
Xenomai和Preempt RT
目前,對實(shí)時(shí)Linux方案的選擇集中在Xenomai和Preempt RT之間。Xenomai是在LinuxKernel外增加獨(dú)立內(nèi)核的雙內(nèi)核方案,而Preempt RT是標(biāo)準(zhǔn)的單內(nèi)核實(shí)時(shí)方案。
圖1是Xenomai為代表的雙內(nèi)核方案的原理圖:

圖1 Xenomai原理圖
Altenberg認(rèn)為雙內(nèi)核實(shí)時(shí)方案有幾個(gè)明顯不足。首先,維護(hù)工作量大。其次,Xenomai不能使用標(biāo)準(zhǔn)C庫,實(shí)時(shí)應(yīng)用的開發(fā)需要特殊庫以及單獨(dú)的API。
主流的實(shí)時(shí)Linux方案是基于Preempt RT 的單內(nèi)核方案,通過最大限度地提高Linux內(nèi)核中的可搶占部分,使Linux本身具備實(shí)時(shí)性。如圖2 Premept RT原理圖所示:

圖2Preempt RT原理圖
大約80%的PreemptRT功能已經(jīng)融合進(jìn)Linux主線,所以任何Linux開發(fā)者都可以使用Preempt RT的Linux 內(nèi)核組件。
隨著剩下的20%功能逐漸融入Linux主線,未來有可能不需要在Linux安裝補(bǔ)丁程序而直接使用Preempt RT。
性能比較
實(shí)時(shí)性能最重要的指標(biāo)是延時(shí)。網(wǎng)上有不少文章,表示Xenomai在延遲方面有優(yōu)勢。Altenberg并不認(rèn)同這種觀點(diǎn),他認(rèn)為是對Preempt RT的錯(cuò)誤配置造成的。
為了證實(shí),他們的團(tuán)隊(duì)分別找Xenomai和Preempt RT專家,在相同的硬件上進(jìn)行測試。測試對象是高負(fù)載下Xenomai和Preempt RT在延時(shí)Latency和抖動(dòng)Jitter的表現(xiàn)整個(gè)測試程序運(yùn)行12個(gè)小時(shí)。
Altenberg強(qiáng)調(diào)了兩點(diǎn),第一是測試的最壞結(jié)果才有意義;另外一點(diǎn)是系統(tǒng)拿到中斷后,在用戶空間的應(yīng)用響應(yīng)延時(shí)是對應(yīng)用最有意義的。
在用戶空間的測試結(jié)果,在測試中的最壞延時(shí),Xenomai和 Preempt RT都在90-95 微秒左右。當(dāng)在Linux系統(tǒng)中只使用單核測試時(shí),PREEMPT RT最壞的延時(shí)只有大約80微秒,結(jié)果優(yōu)于Xenomai。
在Kernel空間延時(shí)的測試結(jié)果,Xenomai最高延時(shí)在30微秒,單核運(yùn)行Preempt RT的最高延時(shí)60微秒。如果使用FIQ 快速中斷的話,Preempt RT的最壞延時(shí)也達(dá)到30微秒,平均延時(shí)甚至到達(dá)10微秒。
最終,對于開發(fā)人員最有意義的用戶空間內(nèi)最壞延時(shí)方面,兩種實(shí)時(shí)方案在該性能指標(biāo)上展示出近乎相同的數(shù)據(jù)。
但是Preempt RT幾乎已經(jīng)和Linux內(nèi)核主線合并,從系統(tǒng)的開發(fā)和維護(hù)角度,Preempt RT的工作量與標(biāo)準(zhǔn)Linux相同。這使Preempt RT與Xenomai相比具備更多優(yōu)勢。
審核編輯 :李倩
-
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5984瀏覽量
180578 -
Linux
+關(guān)注
關(guān)注
88文章
11746瀏覽量
218916 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7395瀏覽量
129223
原文標(biāo)題:如何選擇Linux操作系統(tǒng)實(shí)時(shí)擴(kuò)展的討論
文章出處:【微信號(hào):ilinki,微信公眾號(hào):智匯工業(yè)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
如何選擇嵌入式系統(tǒng)操作系統(tǒng):操作系統(tǒng)特征
NuttX實(shí)時(shí)操作系統(tǒng)
實(shí)時(shí)操作系統(tǒng)和Linux分時(shí)操作系統(tǒng)有哪些區(qū)別呢
Linux操作系統(tǒng)原理及應(yīng)用
Linux操作系統(tǒng)實(shí)時(shí)性分析及改進(jìn)策略
如何選擇實(shí)時(shí)操作系統(tǒng)
Linux分時(shí)操作系統(tǒng)的實(shí)時(shí)性分析
為什么選擇Linux操作系統(tǒng)?制約標(biāo)準(zhǔn)Linux操作系統(tǒng)實(shí)時(shí)性的因素
實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng)的區(qū)別
什么是分時(shí)操作系統(tǒng),Linux屬于實(shí)時(shí)操作系統(tǒng)嗎?
選擇實(shí)時(shí)操作系統(tǒng)(RTOS)的要點(diǎn)詳解
Linux是實(shí)時(shí)系統(tǒng)還是分時(shí)操作系統(tǒng)?
linux是實(shí)時(shí)系統(tǒng)還是分時(shí)操作系統(tǒng)
鴻道Intewell操作系統(tǒng)的Linux實(shí)時(shí)拓展方案
如何選擇Linux操作系統(tǒng)實(shí)時(shí)擴(kuò)展
評(píng)論