天天看點

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年的資料)、2019年(暫時沒有2018年的資料)的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: EEtimes雜志嵌入式市場調查報告有關RTOS使用榜截圖

附錄1.1  2010和2011年RTOS使用榜

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

附錄1.2  2012和2013年RTOS使用榜

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

附錄1.3   2013年和2014年RTOS使用榜

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

附錄1.4   2014年和2015年RTOS使用榜

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

附錄1.5   2017年RTOS使用榜

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

附錄1.6   2019年RTOS使用榜

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