1. 程式人生 > >FreeRTOS系列第1篇---為什麼選擇FreeRTOS?

FreeRTOS系列第1篇---為什麼選擇FreeRTOS?

1.為什麼學習RTOS?

         作為基於ARM7、Cortex-M3硬體開發的嵌入式工程師,我一直反對使用RTOS。不僅因為不恰當的使用RTOS會給專案帶來額外的穩定性風險,更重要的是我認為絕大多數基於ARM7、Cortex-M3硬體的專案,還沒複雜到使用RTOS的地步,使用狀態機就足夠了。

         對於現代的微處理器,特別是資源相對豐富ARM7、Cortex-M3硬體來說,RTOS佔用的硬體資源已經越來越可以忽略。所以在當今環境下,我們無需擔心RTOS會拖累效能。相反,RTOS提供的事件驅動型設計方式,使得RTOS只是在處理實際任務時才會執行,這能夠更合理的利用CPU。在實際專案中,如果程式等待一個超時事件,傳統的無RTOS情況下,要麼在原地一直等待而不能執行其它任務,要麼使用複雜(相對RTOS提供的任務機制而言)的狀態機機制。如果使用RTOS,則可以很方便的將當前任務阻塞在該事件下,然後自動去執行別的任務,這顯然更方便,並且可以高效的利用CPU。處理這類事件,是我使用RTOS的最大動力,但考慮到系統的穩定性,我不得不再三權衡RTOS可能帶來的一些弊端:

  1. 大多數RTOS程式碼都具有一定規模,任何程式碼都可能帶來BUG,何況是程式碼具有一定規模的RTOS,因此引入RTOS的同時也可能會引入該RTOS的BUG,這些RTOS本身的BUG一旦被觸發,影響可能是是災難性的。
  2. 熟練的使用RTOS是一項技能,需要專業的知識儲備和長期的經驗積累。不將RTOS分析透徹,很容易為專案埋下錯誤。典型的,像中斷優先順序、任務堆疊分配、可重入等,都是更容易出錯的地方。
  3. RTOS的優先順序巢狀使得任務執行順序、執行時序更難分析,甚至變成不可能。任務巢狀對所需的最大堆疊RAM大小估計也變得困難。這對於很多對安全有嚴格要求的場合是不可想象的。
  4. RTOS應該用於任務複雜的場合,以至於對任務排程的需求可以抵消RTOS所帶來的穩定性影響,但大部分的應用並非複雜到需要RTOS。

         以上原因是我拒絕在實際專案中使用RTOS的理由,但是否使用RTOS跟是否學習RTOS完全是兩碼事。我認為任何嵌入式軟體設計人員都應該至少學習一種RTOS,不僅是需要掌握RTOS背後的作業系統原理、學習RTOS的程式設計方式,更是為將來做準備。

         即便我認為現在的物聯網有點言過其實,但我依然看好物聯網的發展前景。隨著物聯網的發展,未來的嵌入式產品必然更為複雜、連線性更強以及需要更豐富的使用者介面。當處理這些任務時,一個好的RTOS就變得不可缺少了。

         書到用時方恨少,我希望自己永遠不會有這種感覺。所以從現在起,我要開始深入一個RTOS,探索它背後的原理,掌握其程式設計方法,避免其缺陷和陷阱,並將它安全的用在將來的專案中。

2.為什麼選用FreeRTOS?

         對比了許多RTOS,最終選擇FreeRTOS,原因是多方面的:

  1. SafeRTOS便是基於FreeRTOS而來,前者是經過安全認證的RTOS,因此對於FreeRTOS的安全性也有了信心。
  2.  大量開發者使用,並保持高速增長趨勢。2011、2012、2013、2014、2015、2017年(暫時沒有2016年的資料)的EEtimes雜誌嵌入式系統市場報告顯示,FreeRTOS在RTOS核心使用榜和RTOS核心計劃使用榜上都名列前茅。更多的人使用可以促進發現BUG,增強穩定性。
  3. 簡單。核心只有3個.c檔案,全部圍繞著任務排程,沒有任何其它干擾,便於理解學習。而且,我根本不需要其它繁多的功能,只要任務排程就夠了。
  4. 文件齊全。在FreeRTOS官方網站上,可以找到所有你需要的資料。
  5. 免費、開放原始碼。完全可以免費用於商業產品,開放原始碼更便於學習作業系統原理、從全域性掌握FreeRTOS執行機理、以及對作業系統進行深度裁剪以適應自己的硬體。
  6. 2017年底,FreeRTOS作者加入亞馬遜,擔任首席工程師,FreeRTOS也由亞馬遜管理。同時修改了使用者許可證,FreeRTOS變得更加開放和自由。背靠亞馬遜,相信未來FreeRTOS會更加穩定可靠。此外,以前價格不菲的《實時核心指南》和《參考手冊》也免費開放下載,這使得學習更加容易。

         學習的資料來源主要是FreeRTOS的官方網站(www.freertos.org)和原始碼。FreeRTOS的創始人RichardBarry編寫了大量的移植程式碼和配套文件,我只不過是沿著Richard Barry鋪好的路前進,所以,這沒什麼困難的。

         最後,感謝RichardBarry的付出,感謝Richard Barry的無私開源精神!

附錄1:2010~2017年EEtimes雜誌嵌入式市場調查報告有關RTOS使用榜截圖

2010和2011年RTOS使用榜

2012和2013年RTOS使用榜

2013年和2014年RTOS使用榜

2014年和2015年RTOS使用榜

2017年RTOS使用榜