色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RTOS在STM32中的應用

ARM與嵌入式 ? 來源:ARM與嵌入式 ? 2023-03-06 10:34 ? 次閱讀

文章將介紹實時操作系統RTOS,分析為什么在嵌入式系統中使用它。

什么是實時操作系統

操作系統的定義:

一個計算機系統可以大致分為四個部分:硬件(Hardware),操作系統(operating system),應用程序(application programs),使用者(user)。

硬件包含了CPU,存儲空間,輸入輸出設備等為整個系統提供了基礎的計算資源。

操作系統是一個控制程序,作為硬件和應用程序之間的橋梁,主要是和硬件打交道,負責協調分配計算資源和內存資源給不同的應用程序使用,并防止系統出現故障。面對來自不同應用程序的大量且互相競爭的資源請求,操作系統通過一個調度算法和內存管理算法盡可能把資源公平,有效率地分配給不同的程序。

應用程序則通過調用操作系統提供的API接口獲得相應資源完成指定的任務。

一個通用操作系統提供的主要功能有(可見下圖藍色的部分):

任務(應用程序)的調度管理

堆棧和內存管理

文件管理

隊列管理

中斷和定時器管理

資源管理

輸入輸出管理

c710a420-bb5e-11ed-bfe3-dac502259ad0.png

值得注意的是,操作系統自身需要占用一定的計算資源和內存資源,對于片上資源有限的單片機,可能需要根據需求剪裁操作系統的大小和功能。

實時性的含義

實時操作系統(RTOS-Real Time Operating System)中實時(Real Time)指的是任務(Task)或者說實現一個功能的線程(Thread)必須在給定的時間(Deadline)內完成。

業界總有種誤解認為如果能堆砌更多的處理器核心數目,更高的處理器頻率,更大的內存,更快的總線速度系統就能一定達到實時性的表現。但是強大的計算能力并不能保證系統的實時性。

舉一個簡單例子比如汽車中的安全氣囊,在傳感器檢測到汽車發生碰撞后,安全氣囊需要在30ms內完全打開,不然司機和乘客的人身安全將受到極大的威脅。即使車載ECU有很強大的計算能力,但是如果因為要執行其他復雜計算任務或者任務調度的問題導致對汽車狀態的監測和安全氣囊的響應時間超過規定的時間,實時性無法得到保障導致系統失效和人員傷亡,這將會是非常嚴重的系統問題。

再舉個例子比如特斯拉的車載系統:車機系統采用的是Linux系統,而汽車的驅動模塊和剎車模塊使用的是各自獨自的系統。整個娛樂系統,觸摸屏以及智能駕駛系統,都與汽車的驅動完全分開,確保了系統的實時性。

一些其它的實時任務包括導彈的制導,無人駕駛等。為了保障這些實時任務能在給定的時間內完成,需要一個實時系統對這些任務進行調度和管理。一個實時操作系統能盡力保障每個任務能在一個已知的最大運行時間(Maximum Response Time)內完成,包括:

對中斷和內部異常的處理

對安全相關的事件的處理

任務調度機制等

當然系統的穩定性不能僅僅依靠實時操作系統,安全功能(fail-safe function)相關的設計也是必須要考慮到的。在Netflix的紀錄片《一落千丈:波音大調查》中就提到,導致兩起波音最新機型737 Max的失事事故的直接原因在于當飛機的迎角傳感器發生故障,機上裝載的機動特性增強系統(MCAS)誤認為飛機處于失速狀態,無視飛行員的操縱強制自動接管飛機,持續壓機頭導致了慘劇的發生。可見縱使波音的飛控系統非常穩定,但如果對傳感器的數值判定和使用不當并缺少安全性冗余設計,系統的整體穩定性依然無法得到保障。

c730ecc6-bb5e-11ed-bfe3-dac502259ad0.jpg

操作系統的種類

目前比較流行的實時操作系統包括黑莓QNX,FreeRTOSuCOSRT-Thread等。在上圖中可以看出,除了Linux和Windows通用操作系統外,接下來便是FreeRTOS受到廣大開發者的青睞。圖表中也羅列了一些國產的系統。比如騰訊發布和開源的TencentOS tiny,這是一個面向物聯網的實時操作系統。華為也推出了鴻蒙LiteOS, 萬物互聯未來可期。和實時操作系統(Real Time Operating System)相對應的是通用操作系統(General Purpose Operating System)。

通用操作系統包括Linux,Windows,MAC等主流的操作系統。這些操作系統大家每天都在使用,功能也十分強大,只是它們有時為了保障系統的流暢運行,就不能保證每個程序都能實時響應,在易用性和實時性之間有所取舍。而且單片機有限的片上資源也不足以支撐通用操作系統的運行。

正所謂術業有專攻,在嵌入式領域中,嵌入式實時操作系統(RTOS)可以更合理、更有效地利用CPU的資源,簡化應用軟件的設計,縮短系統開發時間,從而更好地保證系統的實時性和可靠性。

FreeRTOS的介紹

FreeRTOS 是一個迷你的實時操作系統內核。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能、軟件定時器、協程等,可基本滿足較小系統的需要。由于RTOS需占用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時操作系統能在小RAM單片機上運行。相對μC/OS-II、embOS等商業操作系統,FreeRTOS操作系統是完全免費的操作系統,具有源碼公開、可移植、可裁減、調度策略靈活的特點,可以方便地移植到各種單片機上運行。

FreeRTOS的官網地址:https://www.freertos.org/

官網上會有關于FreeRTOS的最新新聞和技術文檔,如果大家吃透了FreeRTOS的技術文檔的話,其實也就不需要讀文章了哈哈。

FreeRTOS的特性

具有搶占式或者合作式的實時操作系統內核

功能可裁剪,最小占用10kB左右rom空間,0.5kB ram空間

具有低功耗模式

有互斥鎖、信號量、消息隊列等功能

運行過程可追蹤

STM32CubelDE

STM32CubeIDE 是一個多功能的集成開發工具,集成了TrueSTUDIO和STM32CubeMX,它是STM32Cube軟件生態系統的一部分。STM32CubeIDE是一個先進的C/C++開發平臺,具有STM32微控制器的IP配置,代碼生成,代碼編譯和調試功能。

相對而言對使用STM32平臺的童鞋們來說使用FreeRTOS非常方便和強大,因為它被集成到了STM32的開發環境當中。

c7aa80d6-bb5e-11ed-bfe3-dac502259ad0.jpg

c7ca3764-bb5e-11ed-bfe3-dac502259ad0.jpg

如上圖所示,強烈安利使用STM32CubeIDE進行STM32平臺項目的開發。通過舉手之間的配置,FreeRTOS就被部署到了項目中去。在項目結構中中間件(Middlewares)你可以看到FreeRTOS這個文件。同時FreeRTOS的參數設置,添加刪除任務,定時器,消息隊列等都可以通過下面的圖形化界面進行配置,之后文章會詳細介紹。

c7f181ac-bb5e-11ed-bfe3-dac502259ad0.jpg

標準庫和HAL庫

還有一點要說明的事情,STM的開發包括寄存器開發,標準庫文件開發,還有HAL庫開發三種開發方式。市面上很多應用教程都是針對標準庫設計的。本系列教程將統一采用HAL(Hardware Abstraction Layer)庫,這是一個痛苦的選擇,但是因為意法半導體(ST)已經停止對標準庫文件的維護和開發,為了與時俱和移植性便利性選擇了HAL庫。HAL庫的原理和標準庫大同小異,所以學起來其實并不會太累,只是需要跳離舒適區慢慢適應。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5357

    瀏覽量

    120713
  • 操作系統
    +關注

    關注

    37

    文章

    6856

    瀏覽量

    123455
  • STM32
    +關注

    關注

    2270

    文章

    10910

    瀏覽量

    356642
  • RTOS
    +關注

    關注

    22

    文章

    817

    瀏覽量

    119732

原文標題:RTOS在STM32中的應用

文章出處:【微信號:ARM與嵌入式,微信公眾號:ARM與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32RTOS操作系統

    環境下,可以通過建模完成APP代碼生成。該工具包功能豐富涵蓋了APP應用建模所需。STM32RTOS操作系統RTOS是一款實時操作系統,其優越性不再贅述,
    發表于 08-17 07:48

    STM32CubeMX的標準庫支持RTOS

    STM32CubeMX,什么是線程安全設置?標準庫支持RTOS
    發表于 12-19 06:51

    STM32RTOS的中斷管理

    STM32F103上的 RTOS的中斷管理
    發表于 12-07 17:51 ?0次下載

    STemWin_Library_V1.1.1 STM324x9IEVAL 的 RTOS 工程顯示不正常的問題

    STemWin_Library_V1.1.1STM324x9I-EVAL的RTOS工程顯示不正常問題
    發表于 12-14 16:02 ?0次下載

    開源RTOSSTM32單片機的應用

    開源RTOSSTM32單片機的應用
    發表于 09-25 09:50 ?20次下載
    開源<b class='flag-5'>RTOS</b><b class='flag-5'>在</b><b class='flag-5'>STM32</b>單片機<b class='flag-5'>中</b>的應用

    簡述STM32單片機開發RTOS

    轉變到RTOS(Real Time Operating System)的思維,其實需要一個過程,而且開始的一段時間會很痛苦。但過一段時間理解了一些內容,能寫一些Demo之后,你會發現其實RTOS也不難。 現在FreeRTOSC
    的頭像 發表于 06-28 14:53 ?3512次閱讀

    STM32移植UCOS RTOS的步驟方法

    STM32移植UCOS RTOS的步驟方法,一步步的,很詳細
    發表于 09-23 17:22 ?8次下載

    DB4594_STM32F7 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展

    DB4594_STM32F7 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展
    發表于 11-23 08:30 ?0次下載
    DB4594_<b class='flag-5'>STM32</b>F7 系列用于 <b class='flag-5'>STM32</b>Cube 的 Azure? <b class='flag-5'>RTOS</b> 軟件擴展

    DB4560_STM32F4 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展

    DB4560_STM32F4 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展
    發表于 11-23 08:30 ?0次下載
    DB4560_<b class='flag-5'>STM32</b>F4 系列用于 <b class='flag-5'>STM32</b>Cube 的 Azure? <b class='flag-5'>RTOS</b> 軟件擴展

    DB4595_STM32L5 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展

    DB4595_STM32L5 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展
    發表于 11-23 08:30 ?0次下載
    DB4595_<b class='flag-5'>STM32</b>L5 系列用于 <b class='flag-5'>STM32</b>Cube 的 Azure? <b class='flag-5'>RTOS</b> 軟件擴展

    DB4596_STM32G4 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展

    DB4596_STM32G4 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展
    發表于 11-23 08:30 ?0次下載
    DB4596_<b class='flag-5'>STM32</b>G4 系列用于 <b class='flag-5'>STM32</b>Cube 的 Azure? <b class='flag-5'>RTOS</b> 軟件擴展

    DB4412_STM32H7 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展

    DB4412_STM32H7 系列用于 STM32Cube 的 Azure? RTOS 軟件擴展
    發表于 11-23 08:31 ?1次下載
    DB4412_<b class='flag-5'>STM32</b>H7 系列用于 <b class='flag-5'>STM32</b>Cube 的 Azure? <b class='flag-5'>RTOS</b> 軟件擴展

    STM32 RTOS知識點

    電子發燒友網站提供《STM32 RTOS知識點.pdf》資料免費下載
    發表于 08-01 14:28 ?3次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>RTOS</b>知識點

    STM32嵌入式開發RTOS,你用過哪些?

    STM32嵌入式開發RTOS,你用過哪些?
    的頭像 發表于 09-18 16:21 ?2219次閱讀
    <b class='flag-5'>STM32</b>嵌入式開發<b class='flag-5'>中</b>的<b class='flag-5'>RTOS</b>,你用過哪些?

    具有RTOSSTM32Cube上開發應用

    電子發燒友網站提供《具有RTOSSTM32Cube上開發應用.pdf》資料免費下載
    發表于 09-21 11:02 ?2次下載
    <b class='flag-5'>在</b>具有<b class='flag-5'>RTOS</b>的<b class='flag-5'>STM32</b>Cube上開發應用
    主站蜘蛛池模板: 扒开老师粉嫩的泬10P| 寻找最美乡村教师颁奖晚会| 男人吃奶摸下弄进去好爽| 少爷不要别揉了高H| 亚洲中文无码AV在线观看| 柏木舞子在线| 兰桂坊人成社区亚洲精品| 我半夜摸妺妺的奶C了她软件| 99RE8国产这里只有精品| 国模孕妇模特季玥之粉红| 日本无码免费久久久精品| 67194con免费福和视频| 黑人操白逼| 肉色欧美久久久久久久蜜桃| 538在线播放| 久久99re6国产在线播放| 息与子在线交尾中文字幕| 大陆女人内谢69XXXORG| 男人的天堂久久精品激情a| 在线观看qvod| 久久99热这里只频精品6| 亚洲成色爱我久久| 国产AV高清怡春院| 日本三级按摩推拿按摩| a毛片基地免费全部视频| 麻豆狠色伊人亚洲综合网站| 一区二区三区国产亚洲网站| 海角社区在线视频播放观看| 亚州AV中文无码乱人伦在线| 国产精品-区区久久久狼| 爽娇妻快高h| 国产高清-国产av| 丝瓜视频樱桃视频在线观看免费 | 亚洲免费视频在线| 四虎影视国产精品亚洲精品| 岛国片免费在线观看| 亚洲国产av| 美女被免费喷白浆视频| 高清撒尿hdtube撒尿| 亚洲人视频在线| 欧洲老妇人bb|