linux實時化改造:RT-Preempt 和 Xenomai
- Xenomai
- Preempt-rt
- Xenomai 3 和 Preempt-rt 有哪些優勢相比
Xenomai
<1> Xenomai簡介-百度百科
關鍵詞:
雙核心方案,在linux核心之外構造一個實時微核心。
微核心負責處理系統的實時任務,而Linux 則負責處理非實時任務,隻有當實時核心不再有實時任務需要處理的時候,Linux 核心才能得到運作的機會
<2> 深度講解Xenomai 實作原理
Preempt-rt
<1> 基于Preempt-RT實時SMP Linux系統1: 實時性
關鍵詞:
單核心方案,對主線傳統的Linux核心打入PREEMPT_RT更新檔,使核心成為硬實時作業系統
Xenomai 3 和 Preempt-rt 有哪些優勢相比
問:
我可以在我的開發闆PREEMPT_RT直接在核心環境中執行POSIX應用, 使用Xenomai3 這是什麼原因它?
答:
假設你的應用程式已經完全是POSIX,而且性能也滿足,則,而且也沒有理由去使用它Xenomai3.但是,你可能會考慮基于以下兩點Xenomai3.
- 你想移植遺留的嵌入式應用到Linux上而不用改動API(*移植性更好). 比方說,你不想在POSIX接口上重寫API, 這時候Xenomai就能發揮它的用場.由于它通過一個共通的實時性來支援多個程式設計接口,包含傳統的RTOS API, Xenomai3也将在基于PREEMPT_RT的系統上支援這些API.
- 你的目标闆的性能不足,或/而且你想要你的實時任務給系統追加最小的負載(對處理器/微控制器性能要求較低). 這就是雙核心機制優于原生的搶占系統的一個地方. 後者的情況下,全部的Linux系統必須運作内部代碼(如優先級繼承,中斷線程化)來防止實時處理被延遲, 可是在雙核心系統裡, 并沒有這樣的必要,由于實時核心是差别于Linux核心獨立運作的,故而,通常的Linux動作并不會對實時動作有影響,它甚至都不須要知道實時核心.
總而言之, 對這類問題并沒有一個統一的答案:它實際上依賴于你對性能的要求(實時性上:Xenomai優于PREEMPT_RT)和你的開發闆的性能. 這是一個case-by-case的東西. 僅僅是說"我們能夠在最壞情況下達到X微秒"卻不指明闆子的性能并沒有什麼意義.