在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

新手必看的RTOS基礎知識

小麥大叔 ? 來源:小麥大叔 ? 2023-11-20 16:06 ? 次閱讀

RTOS基礎知識

0a045344-8779-11ee-939d-92fbcf53809c.png

RTOS

0a117b8c-8779-11ee-939d-92fbcf53809c.jpg

實時操作系統(RTOS)是一種操作系統(OS),旨在提供實時應用進程數據,通常沒有緩沖延遲。

RTOS中的關鍵因素是最小的中斷延遲和最小的線程切換延遲。RTOS的價值在于它的響應速度或可預測性,而不是它在給定時間段內可以執行的工作量。

對于嵌入式設備,一般規則是當應用進程需要執行多個簡單操作時使用RTOS。

實時操作系統具有以下目標:

低延遲。

決定論:需要知道處理事情需要多長時間才能確保滿足最后期限。

結構化軟件:使用RTOS,可以以結構化的方式分而治之。直接向應用進程添加其他組件。

可擴展性:RTOS必須能夠從簡單的應用進程擴展到具有堆棧、驅動進程、文檔系統等的復雜應用進程。

卸載開發:RTOS管理系統的許多方面,例如,RTOS與調度一起,通常處理電源管理,中斷表管理,內存管理,異常處理等。

線程

基于RTOS的應用進程中的典型線程:

中斷服務例程(ISR):由硬件中斷啟動的線程。ISR運行直至完成。ISR都共享同一堆棧。

任務:在等待事件發生時可以阻塞的線程。傳統上,任務是長壽命線程(與運行直至完成的ISR相反)。每個任務都有自己的堆棧,可以讓它長壽。

Idle:優先級最低的線程,僅在沒有其他線程準備好執行時運行。通常,空閑只是具有盡可能低優先級的特殊任務。

調度進程

每個RTOS的核心都有一個調度進程。調度進程負責管理系統中線程的執行。調度進程有兩種主要管理方式:搶占式調度和時間片調度。

搶占式調度是最常見的RTOS調度進程類型。TI-RTOS和FreeRTOS都有搶占式調度進程。使用搶占式調度進程,正在運行的線程將一直持續到

完成(例如,ISR完成)。

較高優先級的線程準備就緒(在這種情況下,優先級較高的線程會搶占優先級較低的線程)。

線程在等待資源時放棄處理器(例如,任務調用sleep())。

時間片調度保證每個線程都有一個要執行的槽。這種類型的調度通常不利于實時應用。如果需要,TI-RTOS內核支持使用任務進行時間切片調度。

其他關鍵術語

線程安全:如果一段代碼以保證多個線程同時正確訪問(讀取、寫入)的方式操作共享數據結構,則該代碼段是線程安全的。

Blocked:如果任務正在等待資源且未消耗任何CPU,則阻止該任務。例如,如果任務調用Task_sleep()或Semaphore_pend()(非零超時且信號量不可用),則該任務將被阻止,并允許另一個線程運行。

裸機:不適用RTOS的應用進程的公用名。

裸機與實時操作系統

典型的裸機應用進程通??煞譃槿齻€關鍵部分:

初始化:初始化main()中的硬件和軟件組件。

超級循環狀態機:用于管理應用進程的代碼。這些操作基于中斷(例如,收到SPI數據包或計時器過期)或輪詢的結果。

ISR:由外圍設備(例如UART)、定時器或其他特定于設備的項目(例如異常或多核通信)的中斷執行的代碼。

0a1cab88-8779-11ee-939d-92fbcf53809c.jpg

裸機應用進程有其一席之地。它們通常很小,速度快,并且通過簡單的應用進程相對容易理解。一旦需要更復雜的邏輯,RTOS就開始大放異彩。

0a244852-8779-11ee-939d-92fbcf53809c.jpg

實時操作系統組件

計劃進程:保證最高優先級線程正在運行的搶占式計劃進程。

通信機制:信號量、消息隊列、隊列等。

關鍵區域機制:互斥體、門、鎖等。

計時服務:時鐘、定時器等。

電源管理:對于低功耗設備,電源管理通常是RTOS的一部分,因為它知道設備的狀態。

內存管理:可變大小的堆、固定大小的堆等。

外設驅動器:UART、SPI、I2C等。

協議棧:藍牙、無線網絡等。

文檔系統:FatFs等。

設備管理:異常處理、啟動等。

POSIX

POSIX(Portable Operating System Interface):可移植操作系統接口

SimpleLink SDK在TI-RTOS和FreeRTOS之上提供POSIX支持。這允許應用進程獨立于底層RTOS。

POSIX API是底層實時操作系統之上的一個小填充碼。創建POSIX線程時,將創建基礎TI-RTOS(或FreeRTOS)任務。同樣,在創建POSIX線程信號量時,將創建TI-RTOS(或FreeRTOS)信號量。

POSIX支持的一個很好的功能是能夠從網絡上獲取基于POSIX的代碼并快速使其正常工作。

POSIX不是實時操作系統。它是一個操作系統兼容性層,允許應用進程在操作系統之間輕松移植。

RTOS線程通信

所有RTOS都提供標準的通信機制,如信號量、互斥鎖、消息隊列、鏈表等。

信號量

信號量允許資源管理。任務可以在sem_wait()上阻塞,直到資源變得可用(通過sem_post())。一個常見的用例是Hwi接收數據并發布信號量,以便任務可以處理它。這是可取的,因為它可以最大限度地減少中斷的持續時間。大多數RTOS都支持二進制和計數信號量。

0a36b17c-8779-11ee-939d-92fbcf53809c.jpg

消息隊列

消息隊列對于在線程之間發送數據非常有用。消息隊列可以配置為發送/接收任何大小的用戶定義的消息。在這里,一個任務正在向另一個任務發送消息:

0a3aec06-8779-11ee-939d-92fbcf53809c.jpg

當希望將特定功能集中到單個任務中時,消息隊列非常有用。所有其他線程都可以將消息發送到集中式任務進行處理。消息隊列以線程安全的方式處理消息。

POSIX支持層中的消息隊列是創建在TI-RTOS中的Mailboxes和FreeRTOS中的隊列之上的。

執行

一個搶占式的調度進程在運行。假設以下線程是在main()中創建的:

ISRX:中斷服務例程

MidA:在main()中創建第一個優先級為4

MidB:在main()中創建第二個優先級為4

High:在main()中創建最后一個優先級為8

0a60edc0-8779-11ee-939d-92fbcf53809c.jpg

一旦內核的調度進程啟動(在本例中為main()中的BIOS_start()),所有任務都已準備好運行,首先運行的是High,因為它具有最高優先級。

1.ISRX斷言,因為它會搶占所有任務。High現在處于搶占狀態。

2.ISRX完成后,High將再次開始運行,直到它在Task_sleep()(或某些阻塞API)上阻塞?,F在,MidA可以運行了。

3.MidA一直運行,直到它遇到阻塞調用(比如Semaphore_pend())。現在,MidB可以運行了。

4.MidB一直運行到High取消阻塞(假設Task_sleep()已過期)。MidB現在被搶占了。

5.High將一直運行,直到ISRX被斷言并搶占High。注意:現在有兩個任務被搶占。

6.MidA準備就緒(假設ISRX發布了它被阻止的信號量)。MidA不會運行,因為有更高優先級的線程正在運行。

7.ISRX完成,因此High再次運行,然后再次阻塞,因此MidB再次運行,直到它阻塞?,F在MidA可以運行,因為沒有更高優先級的任務正在運行。注意:MidA必須等到MidB完成后,因為當MidA準備就緒時,MidB正在運行。

8.MidA阻塞,現在沒有線程正在運行或準備運行,因此Idle運行。

9.MidB取消阻塞并運行。

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

    關注

    37

    文章

    6874

    瀏覽量

    123569
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119798
  • 線程
    +關注

    關注

    0

    文章

    505

    瀏覽量

    19720

原文標題:新手必看的RTOS基礎知識

文章出處:【微信號:knifewheat,微信公眾號:小麥大叔】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    弱電新手必看

    `弱電新手必看`
    發表于 09-02 19:52

    PCB基礎知識新手請進

    PCB基礎知識
    發表于 12-17 14:12

    linux 入門新手必看

    Linux 嵌入式學習新手必看,國嵌培訓中的原版教程
    發表于 07-21 08:23

    電子元器件基礎知識培訓資料

    電子元器件基礎知識培訓資料,led初學者必看。
    發表于 05-10 15:59

    電子元器件基礎知識

    很不錯的電子元器件基礎知識,適合新手學習
    發表于 10-20 17:44

    電源從業者必看必會之變壓器基礎知識_制作流程_詳解

    適合電源從業者的基礎知識入門維修必看
    發表于 11-10 20:42

    新手入門必看!

    新手入門必看
    發表于 08-27 09:18

    【HarmonyOS】移植RTOS必備基礎知識

    原文鏈接:https://harmonyos.51cto.com/posts/14861. 基礎知識移植內核對技術的要求比較高、比較細。1.1 單片機相關的知識棧的作用加載地址、鏈接地址重定位幾個
    發表于 10-30 11:56

    PLC入門必看基礎知識

    PLC基礎知識(PLC入門必看)與C語言有什么關系_plc可以用c語言編程嗎_plc的C語言編程詳解
    發表于 09-09 08:39

    labview基礎知識

    labview軟件的基礎知識匯總,適合新手入門。。
    發表于 05-17 09:49 ?4次下載

    0.96寸OLED使用文檔新手必看V2.0

    0.96寸OLED使用文檔新手必看V2.0.pdf0.96寸OLED使用文檔新手必看V2.0.pdf
    發表于 07-11 18:43 ?198次下載

    PSCAD4.5建模與仿真(新手必看

    PSCAD4.5建模與仿真(新手必看
    發表于 07-10 10:13 ?0次下載

    電源管理基礎知識電源管理基礎知識電源管理基礎知識

    電源管理基礎知識電源管理基礎知識電源管理基礎知識
    發表于 09-15 14:36 ?76次下載
    電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>電源管理<b class='flag-5'>基礎知識</b>

    新手Qt_CreatoR_入門第一必看

    新手Qt_CreatoR_入門第一必看
    發表于 10-30 08:55 ?17次下載
    <b class='flag-5'>新手</b>Qt_CreatoR_入門第一<b class='flag-5'>必看</b>

    新手必入,最全電路基礎知識都在這了

    責任編輯:xj 原文標題:新手必備!最全電路基礎知識講解 文章出處:【微信公眾號:電源研發精英圈】歡迎添加關注!文章轉載請注明出處。
    的頭像 發表于 10-14 11:57 ?1.1w次閱讀
    <b class='flag-5'>新手</b>必入,最全電路<b class='flag-5'>基礎知識</b>都在這了
    主站蜘蛛池模板: 如果我们是季节韩剧在线观看| 色男人的天堂| 丁香六月啪啪| 真爽~张开腿~让我插| 亚洲人一区| 国产无套粉嫩白浆| 俺去插| 四虎国产在线| 色多多www网站| 免费观看a毛片一区二区不卡| 精品国内一区二区三区免费视频| 韩国三级hd中文字幕好大| 丁香花五月婷婷| 天天草天天爽| sihu影院永久在线影院| 又粗又大的机巴好爽欧美| 国产在线视欧美亚综合| 天天色资料| 毛片官网| 又粗又硬又猛又黄的免费视频黑人| 天天插天天色| 啪啪网免费视频| 日本妞xxxxxxxxx69| 亚洲区免费| 亚洲天天做日日做天天看2018 | 人人干操| 日本68xxxxxxxxx59| 很黄很污小说| 色婷婷亚洲综合五月| 萌白酱一线天粉嫩喷水在线观看| 成人a大片高清在线观看| 欧美日韩色片| 久久久国产乱子伦精品| 国产女人小便视频| h网站亚洲| 欧美色综合高清视频在线| www.男人的天堂| 222aaa天堂| 亚洲综人网| 黄色免费小视频| 免费看欧美一级特黄α大片|