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