版權(quán)聲明:本文主要內(nèi)容基于“北京盟通科技有限公司”授權(quán)提供的文件,由“創(chuàng)龍科技”進(jìn)行整理得出。感謝“盟通科技”的慷慨支持,讓更多人了解Linux系統(tǒng)的“實時拓展”選擇知識。
選擇爭論一直存在
大家知道EtherCAT是實時現(xiàn)場總線技術(shù),當(dāng)我們開發(fā)一款支持EtherCAT總線的控制器時,實時操作系統(tǒng)的選擇不僅對于產(chǎn)品本身是最重要的一部分,而且對產(chǎn)品研發(fā)的整個過程也影響深遠(yuǎn)。
根據(jù)EtherCAT主站提供商Acontis公司對全球新客戶的情況統(tǒng)計,選擇實時Linux系統(tǒng)的客戶比重在過去10年逐年增加,Acontis公司2019年所有新客戶中采用實時Linux作為控制器操作系統(tǒng)的比例已超過60%。
從近幾年的經(jīng)驗中,我們注意到一些客戶對實時性的理解存在偏差和誤區(qū)。此外,對于實時Linux系統(tǒng)的選擇,主要是采用Preempt RT還是Xenomai存在大量爭論。結(jié)合我們在以往項目中的經(jīng)驗以及實時Linux系統(tǒng)專家Jan Altenberg 2015年在Embedded Linux會議上的講演,我們整理出此文。希望可以幫助大家理解實時性,同時對在Preempt RT和Xenomai之間做出合適的選擇提供參考。
什么是“實時性”
我們在和客戶的交流中注意到,部分工程師會把實時性與執(zhí)行速度或性能相混淆。Altenberg在講演中特別強調(diào):實時性與執(zhí)行速度和性能無關(guān)!
無論是實時操作系統(tǒng)還是實時現(xiàn)場總線,實時性的含義不是越快越好,而是在規(guī)定的時間內(nèi)完成任務(wù)的確定性(Determinism and Timing Guarantees)。如果我們給實時性下定義,那么實時性就是關(guān)于時間的確定性。
實時性的一個重要特點,是在規(guī)定的時間段內(nèi)完成規(guī)定的任務(wù)。在技術(shù)討論中,有時客戶對EtherCAT協(xié)議不存在對錯誤數(shù)據(jù)自動重傳的機制有疑問,很顯然是忽略了實時性的這一特性。EtherCAT主站的工作原理,是按時間段(循環(huán)周期)發(fā)送數(shù)據(jù)。每個循環(huán)周期內(nèi)的過程數(shù)據(jù)(Process Data),只在這個周期內(nèi)到達(dá)從站才有意義,因此EtherCAT在協(xié)議層面不會自動在后續(xù)周期重新發(fā)送之前周期發(fā)送失敗的過程數(shù)據(jù)。
在Embedded Linux會議講演中,Altenberg還表述了一個很有趣的觀點,他希望大家忘掉“軟實時”(即Soft Real Time的提法),只存在實時和非實時的、確定性和非確定性的區(qū)別。能保證確定性,那就是“硬實時”(Hard Real Time)。
Xenomai和Preempt RT實現(xiàn)原理
目前,對實時Linux方案的選擇主要在Xenomai和Preempt RT之間。Xenomai是在Linux Kernel外增加獨立的微內(nèi)核的雙內(nèi)核方案,而Preempt RT是標(biāo)準(zhǔn)的單內(nèi)核實時方案。
Xenomai的實時應(yīng)用運行在微內(nèi)核中,而把Linux系統(tǒng)作為微內(nèi)核的一個低優(yōu)先級任務(wù)。與RTAI不同,Xenomai實時性在用戶空間實現(xiàn)。當(dāng)高優(yōu)先級的實時應(yīng)用程序不在微內(nèi)核運行時,Linux才有可能獲得運行時間。下圖是以Xenomai為代表的雙內(nèi)核方案的原理圖。
圖 1Xenomai雙內(nèi)核方案原理圖
Altenberg認(rèn)為雙內(nèi)核實時方案有幾個明顯不足。首先,維護工作量大。由于Linux不是直接在硬件上運行,因此Xenomai在維護微內(nèi)核的同時還需要維護硬件抽象層HAL層,這導(dǎo)致Xenomai的更新速度通常會比主線Linux落后一步。其次,不能使用標(biāo)準(zhǔn)C庫。Xenomai實時應(yīng)用的開發(fā)需要特殊的工具和庫以及單獨的API。
主流的實時Linux方案是基于Preempt RT的單內(nèi)核方案,通過最大限度地提高Linux內(nèi)核中的可搶占部分,使Linux本身具備實時性。下圖為Premept RT單內(nèi)核原理圖。
圖 2Preempt RT單內(nèi)核方案原理圖
由于大約80%的Preempt RT功能已經(jīng)融合進(jìn)Linux主線,因此任何Linux開發(fā)者都可以使用Preempt RT的Linux內(nèi)核組件。Preempt RT不僅僅把Linux變成實時系統(tǒng),同時提高了Linux的穩(wěn)定性。Preempt RT被廣泛接受并擁有龐大的社區(qū),開發(fā)者不需要深入了解Preempt RT,而是使用標(biāo)準(zhǔn)C庫開發(fā)實時應(yīng)用。開發(fā)者不需要深入了解Preempt RT,而是使用標(biāo)準(zhǔn)C庫開發(fā)實時應(yīng)用。Preempt RT就是Linux系統(tǒng),Preempt RT的實時應(yīng)用也是Linux的應(yīng)用。
隨著剩下的20%功能逐漸融入Linux主線,未來有可能不需要在Linux安裝補丁程序而直接使用Preempt RT。
Xenomai和Preempt RT性能對比
實時性能最重要的指標(biāo)是延時的大小。網(wǎng)上有不少流傳很廣的文章,表示Xenomai在延遲方面有優(yōu)勢。Altenberg并不認(rèn)同這種觀點,他認(rèn)為之所以得出這樣的結(jié)論,是對Preempt RT的錯誤配置造成的。
為了確切證實,他們的團隊分別找了Xenomai和Preempt RT專家,在相同的硬件平臺上進(jìn)行了測試。測試對象是高負(fù)載下Xenomai和Preempt RT在延時Latency和抖動Jitter兩個方面的表現(xiàn)情況。
Altenberg強調(diào)了兩點,第一是測試的最壞結(jié)果才有意義。另外一點是系統(tǒng)拿到中斷后,在用戶空間的應(yīng)用響應(yīng)延時是對應(yīng)用最有意義的。
在用戶空間的測試結(jié)果,Xenomai和Preempt RT最壞延時都在90-95微秒左右。當(dāng)在Linux系統(tǒng)中只使用單核測試時,Preempt RT最壞的延時只有大約80微秒,結(jié)果優(yōu)于Xenomai。
在Kernel空間延時的測試結(jié)果,Xenomai最高延時在30微秒,單核運行Preempt RT的最高延時60微秒。如果使用FIQ快速中斷的話,Preempt RT的最壞延時也可達(dá)到30微秒,平均延時甚至到達(dá)10微秒。
專家觀點
盟通指出:測試表明,對于開發(fā)人員最有意義的用戶空間內(nèi)最壞延時方面,兩種實時方案在該性能指標(biāo)上展示出近乎相同的數(shù)據(jù)。
但是Preempt RT幾乎已經(jīng)和Linux內(nèi)核主線合并,從系統(tǒng)的開發(fā)和維護角度,Preempt RT的工作量與標(biāo)準(zhǔn)Linux相同。這使Preempt RT與Xenomai相比具備更多優(yōu)勢,例如工程師開發(fā)更簡單、產(chǎn)品生命周期更長、系統(tǒng)維護工作更容易等。
實時系統(tǒng)工業(yè)平臺,盡在創(chuàng)龍科技
創(chuàng)龍科技很多ARM嵌入式處理器平臺已支持Preempt RT與Xenomai實時拓展,主要平臺如下。更多型號或細(xì)節(jié)內(nèi)容,歡迎與我們聯(lián)系。
圖 3創(chuàng)龍科技Linux實時系統(tǒng)平臺支持列舉
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19143瀏覽量
306090 -
ethercat
+關(guān)注
關(guān)注
18文章
705瀏覽量
38740 -
Xenomai
+關(guān)注
關(guān)注
0文章
10瀏覽量
7988 -
preempt-rt
+關(guān)注
關(guān)注
0文章
4瀏覽量
1708 -
創(chuàng)龍科技
+關(guān)注
關(guān)注
2文章
131瀏覽量
7741
發(fā)布評論請先 登錄
相關(guān)推薦
評論