文章將介紹實時操作系統(tǒng)RTOS,分析為什么在嵌入式系統(tǒng)中使用它。
什么是實時操作系統(tǒng)
操作系統(tǒng)的定義:
一個計算機系統(tǒng)可以大致分為四個部分:硬件(Hardware),操作系統(tǒng)(operating system),應(yīng)用程序(application programs),使用者(user)。
硬件包含了CPU,存儲空間,輸入輸出設(shè)備等為整個系統(tǒng)提供了基礎(chǔ)的計算資源。
操作系統(tǒng)是一個控制程序,作為硬件和應(yīng)用程序之間的橋梁,主要是和硬件打交道,負(fù)責(zé)協(xié)調(diào)分配計算資源和內(nèi)存資源給不同的應(yīng)用程序使用,并防止系統(tǒng)出現(xiàn)故障。面對來自不同應(yīng)用程序的大量且互相競爭的資源請求,操作系統(tǒng)通過一個調(diào)度算法和內(nèi)存管理算法盡可能把資源公平,有效率地分配給不同的程序。
應(yīng)用程序則通過調(diào)用操作系統(tǒng)提供的API接口獲得相應(yīng)資源完成指定的任務(wù)。
一個通用操作系統(tǒng)提供的主要功能有(可見下圖藍色的部分):
任務(wù)(應(yīng)用程序)的調(diào)度管理
堆棧和內(nèi)存管理
文件管理
隊列管理
中斷和定時器管理
資源管理
輸入輸出管理
值得注意的是,操作系統(tǒng)自身需要占用一定的計算資源和內(nèi)存資源,對于片上資源有限的單片機,可能需要根據(jù)需求剪裁操作系統(tǒng)的大小和功能。
實時性的含義
實時操作系統(tǒng)(RTOS-Real Time Operating System)中實時(Real Time)指的是任務(wù)(Task)或者說實現(xiàn)一個功能的線程(Thread)必須在給定的時間(Deadline)內(nèi)完成。
業(yè)界總有種誤解認(rèn)為如果能堆砌更多的處理器核心數(shù)目,更高的處理器頻率,更大的內(nèi)存,更快的總線速度系統(tǒng)就能一定達到實時性的表現(xiàn)。但是強大的計算能力并不能保證系統(tǒng)的實時性。
舉一個簡單例子比如汽車中的安全氣囊,在傳感器檢測到汽車發(fā)生碰撞后,安全氣囊需要在30ms內(nèi)完全打開,不然司機和乘客的人身安全將受到極大的威脅。即使車載ECU有很強大的計算能力,但是如果因為要執(zhí)行其他復(fù)雜計算任務(wù)或者任務(wù)調(diào)度的問題導(dǎo)致對汽車狀態(tài)的監(jiān)測和安全氣囊的響應(yīng)時間超過規(guī)定的時間,實時性無法得到保障導(dǎo)致系統(tǒng)失效和人員傷亡,這將會是非常嚴(yán)重的系統(tǒng)問題。
再舉個例子比如特斯拉的車載系統(tǒng):車機系統(tǒng)采用的是Linux系統(tǒng),而汽車的驅(qū)動模塊和剎車模塊使用的是各自獨自的系統(tǒng)。整個娛樂系統(tǒng),觸摸屏以及智能駕駛系統(tǒng),都與汽車的驅(qū)動完全分開,確保了系統(tǒng)的實時性。
一些其它的實時任務(wù)包括導(dǎo)彈的制導(dǎo),無人駕駛等。為了保障這些實時任務(wù)能在給定的時間內(nèi)完成,需要一個實時系統(tǒng)對這些任務(wù)進行調(diào)度和管理。一個實時操作系統(tǒng)能盡力保障每個任務(wù)能在一個已知的最大運行時間(Maximum Response Time)內(nèi)完成,包括:
對中斷和內(nèi)部異常的處理
對安全相關(guān)的事件的處理
任務(wù)調(diào)度機制等
當(dāng)然系統(tǒng)的穩(wěn)定性不能僅僅依靠實時操作系統(tǒng),安全功能(fail-safe function)相關(guān)的設(shè)計也是必須要考慮到的。在Netflix的紀(jì)錄片《一落千丈:波音大調(diào)查》中就提到,導(dǎo)致兩起波音最新機型737 Max的失事事故的直接原因在于當(dāng)飛機的迎角傳感器發(fā)生故障,機上裝載的機動特性增強系統(tǒng)(MCAS)誤認(rèn)為飛機處于失速狀態(tài),無視飛行員的操縱強制自動接管飛機,持續(xù)壓機頭導(dǎo)致了慘劇的發(fā)生??梢娍v使波音的飛控系統(tǒng)非常穩(wěn)定,但如果對傳感器的數(shù)值判定和使用不當(dāng)并缺少安全性冗余設(shè)計,系統(tǒng)的整體穩(wěn)定性依然無法得到保障。
操作系統(tǒng)的種類
目前比較流行的實時操作系統(tǒng)包括黑莓QNX,FreeRTOS,uCOS,RT-Thread等。在上圖中可以看出,除了Linux和Windows通用操作系統(tǒng)外,接下來便是FreeRTOS受到廣大開發(fā)者的青睞。圖表中也羅列了一些國產(chǎn)的系統(tǒng)。比如騰訊發(fā)布和開源的TencentOS tiny,這是一個面向物聯(lián)網(wǎng)的實時操作系統(tǒng)。華為也推出了鴻蒙LiteOS, 萬物互聯(lián)未來可期。和實時操作系統(tǒng)(Real Time Operating System)相對應(yīng)的是通用操作系統(tǒng)(General Purpose Operating System)。
通用操作系統(tǒng)包括Linux,Windows,MAC等主流的操作系統(tǒng)。這些操作系統(tǒng)大家每天都在使用,功能也十分強大,只是它們有時為了保障系統(tǒng)的流暢運行,就不能保證每個程序都能實時響應(yīng),在易用性和實時性之間有所取舍。而且單片機有限的片上資源也不足以支撐通用操作系統(tǒng)的運行。
正所謂術(shù)業(yè)有專攻,在嵌入式領(lǐng)域中,嵌入式實時操作系統(tǒng)(RTOS)可以更合理、更有效地利用CPU的資源,簡化應(yīng)用軟件的設(shè)計,縮短系統(tǒng)開發(fā)時間,從而更好地保證系統(tǒng)的實時性和可靠性。
FreeRTOS的介紹
FreeRTOS 是一個迷你的實時操作系統(tǒng)內(nèi)核。作為一個輕量級的操作系統(tǒng),功能包括:任務(wù)管理、時間管理、信號量、消息隊列、內(nèi)存管理、記錄功能、軟件定時器、協(xié)程等,可基本滿足較小系統(tǒng)的需要。由于RTOS需占用一定的系統(tǒng)資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數(shù)實時操作系統(tǒng)能在小RAM單片機上運行。相對μC/OS-II、embOS等商業(yè)操作系統(tǒng),F(xiàn)reeRTOS操作系統(tǒng)是完全免費的操作系統(tǒng),具有源碼公開、可移植、可裁減、調(diào)度策略靈活的特點,可以方便地移植到各種單片機上運行。
FreeRTOS的官網(wǎng)地址:https://www.freertos.org/
官網(wǎng)上會有關(guān)于FreeRTOS的最新新聞和技術(shù)文檔,如果大家吃透了FreeRTOS的技術(shù)文檔的話,其實也就不需要讀文章了哈哈。
FreeRTOS的特性
具有搶占式或者合作式的實時操作系統(tǒng)內(nèi)核
功能可裁剪,最小占用10kB左右rom空間,0.5kB ram空間
具有低功耗模式
有互斥鎖、信號量、消息隊列等功能
運行過程可追蹤
STM32CubelDE
STM32CubeIDE 是一個多功能的集成開發(fā)工具,集成了TrueSTUDIO和STM32CubeMX,它是STM32Cube軟件生態(tài)系統(tǒng)的一部分。STM32CubeIDE是一個先進的C/C++開發(fā)平臺,具有STM32微控制器的IP配置,代碼生成,代碼編譯和調(diào)試功能。
相對而言對使用STM32平臺的童鞋們來說使用FreeRTOS非常方便和強大,因為它被集成到了STM32的開發(fā)環(huán)境當(dāng)中。
如上圖所示,強烈安利使用STM32CubeIDE進行STM32平臺項目的開發(fā)。通過舉手之間的配置,F(xiàn)reeRTOS就被部署到了項目中去。在項目結(jié)構(gòu)中中間件(Middlewares)你可以看到FreeRTOS這個文件。同時FreeRTOS的參數(shù)設(shè)置,添加刪除任務(wù),定時器,消息隊列等都可以通過下面的圖形化界面進行配置,之后文章會詳細(xì)介紹。
標(biāo)準(zhǔn)庫和HAL庫
還有一點要說明的事情,STM的開發(fā)包括寄存器開發(fā),標(biāo)準(zhǔn)庫文件開發(fā),還有HAL庫開發(fā)三種開發(fā)方式。市面上很多應(yīng)用教程都是針對標(biāo)準(zhǔn)庫設(shè)計的。本系列教程將統(tǒng)一采用HAL(Hardware Abstraction Layer)庫,這是一個痛苦的選擇,但是因為意法半導(dǎo)體(ST)已經(jīng)停止對標(biāo)準(zhǔn)庫文件的維護和開發(fā),為了與時俱和移植性便利性選擇了HAL庫。HAL庫的原理和標(biāo)準(zhǔn)庫大同小異,所以學(xué)起來其實并不會太累,只是需要跳離舒適區(qū)慢慢適應(yīng)。
審核編輯 :李倩
-
寄存器
+關(guān)注
關(guān)注
31文章
5360瀏覽量
120859 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37瀏覽量
123537 -
STM32
+關(guān)注
關(guān)注
2270文章
10918瀏覽量
356881 -
RTOS
+關(guān)注
關(guān)注
22文章
818瀏覽量
119778
原文標(biāo)題:RTOS在STM32中的應(yīng)用
文章出處:【微信號:ARM與嵌入式,微信公眾號:ARM與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論