首先硬實時系統(tǒng)不是硬實時操作系統(tǒng),
硬實時系統(tǒng)描敘的是一個結(jié)果,而硬實時操作系統(tǒng)純粹是軟件。
硬實時系統(tǒng)本質(zhì)是確定性,100%的確定性,任務(wù)在某個條件下開始,多長時間執(zhí)行完,都必須100%確定,例如繼電器控制邏輯。
實際上沒有所謂的軟實時,軟實時的概念在不同的人和不同的環(huán)境,其意義不一樣,例如3D射擊游戲,它的實時就是人眼不能感到有明顯抖動,而在控制行業(yè),軟實時系統(tǒng)要求是盡可能的達(dá)標(biāo),達(dá)不到標(biāo)準(zhǔn)也沒有太大關(guān)系(不會有設(shè)備損壞,人員安全,功能沒有完成),這樣說來,任何系統(tǒng)都可以是軟實時,軟實時本質(zhì)就是幾率,例如,達(dá)到1us的響應(yīng)有99%的,達(dá)到1ms的響應(yīng)有99.9%的幾率,可以認(rèn)為window也是軟實時系統(tǒng)。
硬實時操作系統(tǒng)的很多特點(搶占任務(wù)調(diào)度,優(yōu)先級等),都是為了實現(xiàn)確定性而提供的實現(xiàn)手段,實時操作系統(tǒng)只是提供了一種方便實現(xiàn)實時系統(tǒng)的平臺可能性(裸機也可以達(dá)到)
而要保證系統(tǒng)硬實時,要
1)足夠強大的硬件平臺,也就是是輸入、處理、輸出都是確定性的,性能是滿足的
2)任務(wù)的劃分是合理的,要確保硬實時任務(wù)的確定性,例如最高硬實時任務(wù)是最高優(yōu)先級
如果沒有上面2點,無論怎樣單片機還是操作系統(tǒng)都不能達(dá)到硬實時的效果。這里有一個優(yōu)秀的51實時系統(tǒng)RTX51原理分析與移植大家可參考下:http://www.torrancerestoration.com/mcu/254.html
單片機裸機是否可以實現(xiàn)硬實時?
單片機裸機當(dāng)然可以實現(xiàn)硬實時,而且單片機裸機是響應(yīng)最快、最確定性、開發(fā)最簡單直接的硬實時系統(tǒng)開發(fā)平臺,單片機裸機的缺點是系統(tǒng)大了之后,會導(dǎo)致開發(fā)任務(wù)過大,任務(wù)間通訊工作量大,任務(wù)只能簡單的輪詢,沒有優(yōu)先級概念,如果系統(tǒng)任務(wù)劃分簡單,沒有太多的外部依賴,完全可以采用單片機做硬實時系統(tǒng)。
何時使用實時操作系統(tǒng)?
系統(tǒng)復(fù)雜度比較大,有很多的任務(wù),而且任務(wù)可能是不同的人在開發(fā),任務(wù)間有較多的通訊,操作系統(tǒng)或者第三方提供很多的庫,不必從頭開發(fā)。
實時系統(tǒng)和嵌入式有關(guān)系么?
根本是不同的概念,實時系統(tǒng)著重在確定性,嵌入式著重在系統(tǒng)的體積
硬實時系統(tǒng)是否一定是通過軟件系統(tǒng)實現(xiàn)?
硬實時系統(tǒng)實現(xiàn)方式很多種,機械方式,繼電器方式,F(xiàn)PGA方式,單片機方式,操作系統(tǒng)方式,很多的實現(xiàn)方式運行時根本沒有軟件
系統(tǒng)的好壞,首先是總體設(shè)計,在基于了解業(yè)務(wù)的基礎(chǔ)上才能做出好的設(shè)計,如果,業(yè)務(wù)都不了解,就關(guān)注在實現(xiàn)手段上,就舍本逐末了。
如果了解了業(yè)務(wù),可以比較好的劃分任務(wù),例如,將人機交互任務(wù)放置在普通的PC機上,將控制任務(wù)或者對時間要求高的任務(wù)放置在下位機上(PCI板子或者通訊連接的外部板子),這樣即使是很搓的系統(tǒng),其結(jié)果組合起來也是相當(dāng)好的。
至于具體實時系統(tǒng)的實現(xiàn),類型太多,對于大部分系統(tǒng),只要了解即可,對于很核心的幾個系統(tǒng),其類型分別為
硬件級別的FPGA
單片機級別的
強實時系統(tǒng)級別的,UCOS,VXWORKS,RTAI
弱實時系統(tǒng)級別的,wince
另外一個系統(tǒng),肯定有實時的部分和非實時部分,所以實際系統(tǒng)并不一定要全部是實時的,如果上下位機或者雙內(nèi)核系統(tǒng),就比較符合實際的情況
即使在usos中,界面部分一般也是非實時任務(wù)
對于方案的選擇,其實大部分是在和工作量和復(fù)雜度做斗爭,
如果在PC機上,由于微軟和其他廠商提供的現(xiàn)成的東西,所以無需自底開發(fā),除非,自己做了自己的板子,需要寫驅(qū)動。
而對于SOC,由于開發(fā)商提供的東西并不多,大部分都是都是數(shù)據(jù)手冊,然后開發(fā)工具基本就是編譯器和燒寫器,所以對其的開發(fā)基本要自底開始,首先要會底,然后才可以考慮操作系統(tǒng)、協(xié)議棧移植等問題。對于單片機提供商提供的api封裝,用戶最好自己驗證,可能有錯誤。
PC機擴展方式多種,PCI,USB,以太網(wǎng)等等,根據(jù)需要而定
window做實時控制缺點
包袱太重,系統(tǒng)任務(wù)基本是不能定制的,
這些任務(wù)可能會導(dǎo)致系統(tǒng)資源的消耗的不確定性
系統(tǒng)不能裁剪,大小不能定制
內(nèi)核不開發(fā),系統(tǒng)接口不開放,除了問題無法定位
雖然有缺點但還是可以通過一些方法來補救的,
方法詳見我的另一篇文章“如何提高window實時性能”
linux做實時控制基本沒有上面缺點,
但是相對ucos,這些操作系統(tǒng)還是包袱過重,做簡單控制要熟悉的上下文太多,工控機系統(tǒng)適合做大數(shù)據(jù)處理、復(fù)雜耦合處理、人機操作復(fù)雜、原型試驗性質(zhì)、對體積不敏感的東西