嵌入式系統採用linux系統,怎樣保證實時性?


根據題主的問題,你可以根據實時需求選擇一些實時Linux方案,然後在這個方案上針對特定需求做進一步的優化。

首先要明確自己的需求,是硬實時環境(Safety-Critical,低延時,比如幾十個us內)還是軟實時(幾百個us~幾個ms),還是普通的低延遲桌面等。

Linux本身已經有硬實時的方案,比如 @deep-pro 提到的風河的RT Linux,其實還有西班牙一家研究所的XtratuM+PartiKle,還有其他的比如Xenomai,RTAI等。另外,內核官方還有完全搶佔內核(Preempt-RT Linux)的支持,這個在某些情況下也達到了硬實時要求,比如我09年移植的MIPS實時搶佔Linux在Loongson-2F上的Latency已經達到100us以下,看圖:

原圖地址:https://www.osadl.org/Latency-plot-of-system-in-rack-2-slot.qa-latencyplot-r2s4.0.html?latencies=showno=slider=159

:這個機器(龍芯2F盒子)是我導師09年帶到OSADL的,放在那裡幾年了,一直跑著沒出什麼問題,實時性一直都很穩定,現在都支持:Linux 3.12.24-rt38 拉。

如果要求再低一些,用內核裡頭的其他搶佔選項就可以。

然後就是各種優化,包括驅動(irq, preempt disable), spin lock等使用,中斷函數線程化,mdelay替換為usleep_range()等,詳細可以參考我幾年前寫的論文吧:Research and Practice on Preempt-RT Patch of Linux。

利益相關:【泰曉科技|TinyLab.org】專註於產品級嵌入式Linux研發與交流,歡迎一線工程師參與分享與交流。


看具體是做什麼的,對實時性的要求有多高,如果有硬實時性要求,建議不要使用嵌入式Linux,轉向實時嵌入式系統。如果只是希望響應快速,可以從以下幾個方面入手:

1、裁減內核的時候記得選上可搶佔式內核。

2、從軟體架構上下功夫,實現快速響應,重要事件的優先響應等等。

3、硬體的操作盡量使用中斷代替查詢。


用風河的RT linux,可以理解為在一個「vxwroks」上虛擬了一個linux出來,實時任務在「vxworks」上跑

這個在技術上保證是硬實時

我理解的實時,就是看能不能提供證書。商業實時linux賣的就是這個證書。

想起一個殘忍的笑話:我只看你有沒有殘疾證,不看你有沒有腿。


推薦閱讀:

矽谷之路13:從Storm到Heron的Twitter實時大數據之路

TAG:Linux | Android開發 | 嵌入式系統 | 實時操作系統 |