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