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

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

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

3天內不再提示

使用RTOS時問題如何檢測和糾正

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者: Jean Labrosse ? 2022-06-30 10:07 ? 次閱讀

基于 RTOS 的問題

在本節中,我們將探討開發人員在使用 RTOS 時遇到的一些常見問題,并展示如何檢測和糾正這些問題。

堆棧溢出:

在基于內核的應用程序中,每個任務都需要自己的堆棧。任務所需的堆棧大小是特定于應用程序的。 如果使堆棧大于任務所需,則會浪費內存。如果堆棧太小,您的應用程序很可能會覆蓋應用程序變量或另一個任務的堆棧。堆棧區域外的任何寫入都稱為堆棧溢出。當然,在這兩種選擇之間,為堆棧過度分配內存比分配不足要好。因此,您可以通過過度分配內存來減少堆棧溢出的機會。但是,通常只需要 25-50% 的額外堆棧空間。一些 CPU,例如基于 ARMv8M 架構的 CPU,具有內置的堆棧溢出檢測功能。但是,該功能無助于確定正確的堆棧大小。它只是防止堆棧溢出的負面后果。

參考文獻[1]解釋了如何確定每個任務堆棧的大小。簡而言之,您通過為任務堆棧過度分配空間來開始您的設計,然后在已知的最壞情況下運行您的應用程序,同時監控實際的堆棧使用情況。

下圖是 μC/Probe 對一個測試應用的內核感知的截圖。Stack Usage列顯示每個任務在任何給定時間的最大堆棧使用量的條形圖。雖然截取了屏幕截圖,但 μC/Probe 會實時更新并顯示此信息,因此您無需停止目標即可查看此信息,因為它正在更新。

綠色表示最大堆棧使用率一直保持在 70% 以下。

黃色表示堆棧使用率介于 70% 和 90% 之間。

紅色表示堆棧使用率已超過 90%。

顯然,應該增加使用 92% 的任務的堆棧,使其回到 70% 范圍以下。黃色的任務堆棧是空閑任務,在 77% 的情況下,它通常不會成為問題,除非您將代碼添加到空閑任務回調函數(這取決于您使用的 RTOS)。

pYYBAGK9BXuACTJAAALxJalYhUk898.png

中斷響應:

在操作內部數據結構(即臨界區)時,RTOS 和應用程序代碼通常必須禁用中斷。RTOS 開發人員盡一切努力減少中斷禁用時間,因為它會影響系統對事件的響應。

一些 RTOS 實際上基于每個任務測量最壞情況下的中斷禁用時間,如下面的 μC/Probe 屏幕截圖所示。如果您試圖滿足實時截止日期,則此信息非常寶貴。

中斷被禁用的時間很大程度上取決于 CPU、它的時鐘頻率、您的應用程序和被調用的 RTOS 服務。禁用中斷時間最長的任務以紅色突出顯示。這使您可以快速識別潛在的異常值,尤其是在大型和復雜的應用程序中。

pYYBAGK9BYSAOJBIAAMiBG7qqio864.png

如果最大的中斷禁用時間是由 RTOS 引起的,那么您可能無能為力,除非:

查找中斷禁用時間較短的備用 RTOS API。例如,如果您只是向任務發出信號以指示事件發生,那么您可以簡單地掛起/恢復任務,而不是使用信號量或事件標志。換句話說,等待事件的任務會自行掛起,而發出事件信號的 ISR 會恢復任務。

提高 CPU 的時鐘頻率。不幸的是,這很少是一種選擇,因為其他因素可能已經決定了理想的 CPU 時鐘頻率。

使用非內核感知中斷來處理對時間高度敏感的代碼。

優先級反轉:

當低優先級任務擁有高優先級任務所需的資源時,就會發生優先級反轉。當中等優先級任務搶占低優先級任務同時持有資源時,問題會更加嚴重。術語“優先級倒置”指的是低優先級任務的行為就好像它比高優先級任務具有更高的優先級,至少在共享該資源時是這樣。

優先級反轉是實時系統中的一個問題,并且在使用基于優先級的搶占式內核時會發生(大多數 RTOS 都是搶占式的)。如下圖所示,SystemView 用于說明優先級倒置的場景。

App HPT(High Priority Task)優先級最高

App MPT (Medium Priority Task) 具有中等優先級

App LPT (低優先級任務)的優先級最低

poYBAGK9BY2AFLtvAADiTjbS9x8808.png

1 - LPT 是唯一可以運行的任務,因此它獲取 CPU 并獲取信號量以訪問共享資源。

2 -為了模擬優先級反轉的發生,LPT 使 HPT 準備好運行,因此 RTOS 上下文切換到 HPT。

3 - HPT 使 MPT 準備好運行但繼續執行,因為 HPT 仍然具有更高的優先級。

4 - HPT 需要訪問共享資源并嘗試獲取信號量。但是,由于信號量歸 LPT 所有,HPT 無法繼續執行,因此 RTOS 切換到 MPT。

5 - MPT 一直執行,直到它需要等待其事件再次發生,以便 RTOS 切換回 LPT。

6 - LPT 完成對共享資源的使用,因此它釋放信號量。此時,RTOS 注意到 HPT 正在等待資源,因此將信號量提供給 HPT 并使其準備好運行。HPT 恢復執行并執行它需要對共享資源執行的任何操作。

7 - 一旦 HPT 完成對資源的訪問,它就會釋放信號量,然后等待其事件再次發生(在這種情況下,我們通過自掛起模擬了這一點)。

8 - LPT 恢復執行,因為其他兩個任務都沒有準備好運行。

9 -發生優先級反轉是因為 LPT 擁有 HPT 需要的資源。但是,當中等優先級任務進一步延遲 LPT 釋放信號量時,問題會變得更糟。

您可以通過使用稱為 Mutex(互斥信號量)的特殊 RTOS 機制來解決上述優先級反轉問題。下圖顯示了相同的場景,除了這里 LPT 和 HPT 都使用互斥鎖而不是信號量來訪問共享資源。

poYBAGK9BZSAZi-dAADndWCPgbg026.png

1 - LPT 是唯一可以運行的任務,因此它獲取 CPU 并獲取互斥體以訪問共享資源。

2 - 為了模擬優先級反轉的發生,LPT 使 HPT 準備好運行,因此 RTOS 上下文切換到 HPT。

3 - HPT 使 MPT 準備好運行但繼續執行,因為 HPT 仍然具有更高的優先級。

4 - HPT 需要訪問共享資源并嘗試獲取互斥鎖。但是,由于互斥鎖歸 LPT 所有,因此 HPT 無法繼續執行。但是,由于使用了互斥體,RTOS 會將 LPT 的優先級提高到 HPT 的優先級,以防止它被中等優先級搶占。

5 - 然后 RTOS 切換到 LPT,它現在以與 HPT 相同的優先級運行。

6 - LPT 完成對共享資源的使用,因此它釋放互斥鎖。RTOS 將 LPT 的優先級降低回其原始(較低)優先級,并將互斥鎖分配給 HPT。

7 - RTOS 切換回 HPT,因為它正在等待釋放互斥鎖。一旦完成,HPT 就會釋放互斥鎖。

8 - 一旦 HPT 完成其工作的執行,它就會等待它正在等待的事件的再次發生。

9 - RTOS 切換到在就緒隊列中等待的 MPT。

10 -當 MPT 完成它的工作時,它還掛起將導致該任務再次執行的事件。

11 - LPT 現在可以恢復執行。

優先級反轉現在受限于 LPT 訪問共享資源所需的時間量。如果沒有像 SystemView 這樣的工具,優先級反轉將很難識別和糾正。

請注意,如果 LPT 僅比 HPT 低一個優先級,則可以使用信號量。在這種情況下,信號量是首選,因為它比互斥鎖更快,因為 RTOS 不需要更改 LPT 的優先級。

審核編輯:郭婷

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

    關注

    68

    文章

    11051

    瀏覽量

    216229
  • API
    API
    +關注

    關注

    2

    文章

    1565

    瀏覽量

    63632
  • RTOS
    +關注

    關注

    24

    文章

    844

    瀏覽量

    120853
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    rtosrtos&linux能否調整連接windows后的設備名稱?

    rtosrtos&linux 能否調整連接windows后的設備名稱
    發表于 05-14 06:19

    如何在Eclipse ThreadX RTOS中集成SystemView

    SEGGER實時軟件分析工具SystemView已經在ThreadX v6.4.2上進行了測試。SystemView從v3.60c版本支持Eclipse ThreadX(Azure RTOS),用戶
    的頭像 發表于 05-06 17:11 ?654次閱讀

    詳解RTOS中的Hook函數

    Hook函數是RTOS中的一個關鍵特性,通過該函數,用戶可以增強對任務管理的控制,定義系統行為。
    的頭像 發表于 03-24 16:14 ?309次閱讀

    RTOS中的本地存儲指針使用

    本地存儲指針是RTOS中的一個重要特性,增強了任務管理和數據處理能力。在RTOS上下文中,本地存儲是指存儲在本地的特定任務或對象的數據。通常與任務本地存儲(Task Local Storage,TLS)有關,其中數據存儲在任務控制塊(TCB)中,允許每個任務具有私有的、特
    的頭像 發表于 02-28 16:33 ?872次閱讀
    <b class='flag-5'>RTOS</b>中的本地存儲指針使用

    Flexible Safety RTOS的技術特征

    Embedded Office的Flexible Safety RTOS是專為具有嚴格功能安全要求的嵌入式系統量身定制的、先進的實時操作系統。該RTOS專為工業自動化、汽車、鐵路和醫療設備等行業而設
    的頭像 發表于 01-07 11:29 ?621次閱讀

    RTOS中的錯誤檢查機制

    在嵌入式應用中,有可能發生各種各樣的錯誤,系統必須能夠檢測到這些錯誤并作出適當的響應。RTOS通常內置了一些錯誤檢查功能,用于檢測錯誤并向應用提供響應錯誤的方法。
    的頭像 發表于 01-03 14:44 ?693次閱讀

    漏電開關使用誤區及糾正

    :漏電開關可以代替過載保護 誤區解釋: 許多人認為漏電開關可以同時提供過載保護,但實際上漏電開關的主要功能是檢測漏電并切斷電源,而不是保護電路不受過載損害。 糾正方法: 應使用專門的過載保護裝置,如熔斷器或過載繼
    的頭像 發表于 12-30 17:18 ?694次閱讀

    電子電器氣密性檢測儀使用方法:操作中的常見錯誤與糾正

    電子電器氣密性檢測儀是確保產品質量的關鍵設備,但在使用過程中,操作人員常犯一些錯誤,導致測試結果不準確或儀器損壞。以下是一些常見的操作錯誤及其糾正方法,旨在幫助操作人員正確使用氣密性檢測儀。常見錯誤
    的頭像 發表于 11-29 11:20 ?556次閱讀
    電子電器氣密性<b class='flag-5'>檢測</b>儀使用方法:操作中的常見錯誤與<b class='flag-5'>糾正</b>

    RTOS與Linux到底有什么區別

    很多做嵌入式開發的小伙伴都存在這樣的疑惑:RTOS與Linux到底有什么區別?
    的頭像 發表于 10-29 09:53 ?1148次閱讀

    深入解析Zephyr RTOS的技術細節

    Zephyr是一個針對資源受限設備優化的小型、可縮放、多體系架構實時操作系統(RTOS)。Zephyr由Linux基金會維護[1],是一個以構建業界最佳的RTOS為目標的開源合作項目。近年來
    的頭像 發表于 10-22 16:47 ?1927次閱讀
    深入解析Zephyr <b class='flag-5'>RTOS</b>的技術細節

    RTOS正在縮小與Linux的差距

    RTOS與Linux的物聯網設備操作系統之爭已經持續了很多年。Linux以其強大的計算能力和豐富的軟件生態,在需要復雜處理和軟件支持的物聯網設備上占據一席之地;RTOS憑借實時響應和資源節約的特性
    的頭像 發表于 09-10 08:07 ?1028次閱讀
    <b class='flag-5'>RTOS</b>正在縮小與Linux的差距

    freertos和rtos區別是什么

    FreeRTOS 和 RTOS(實時操作系統)是兩個不同的概念,但它們之間有緊密的聯系。FreeRTOS 是一個特定的開源實時操作系統,而 RTOS 是實時操作系統的一般概念。 概念定義 RTOS
    的頭像 發表于 09-02 14:18 ?2772次閱讀

    RTOS與Linux有什么區別

    RTOS(Real-Time Operating System,實時操作系統)與Linux是兩種在不同應用場景下發揮重要作用的操作系統,它們在設計理念、功能特性、應用場景以及性能表現等方面存在顯著差異。以下是對RTOS與Linux區別的詳細分析。
    的頭像 發表于 08-20 16:05 ?6331次閱讀

    RTOS的特性和類型

    實時操作系統(RTOS)是一種可運行實時計算應用程序的軟件平臺,用于處理具有明確時間約束的事件和數據。與通用操作系統(GPOS)不同,RTOS必須在有限的硬件資源上調度應用程序之間的處理和數據共享
    的頭像 發表于 08-20 11:29 ?1345次閱讀

    RTOS開發最佳實踐

    基于RTOS編寫應用程序時,有一些要注意事項。在本節中,您將學習RTOS開發最佳實踐,例如POSIX合規性、安全性和功能安全認證。
    的頭像 發表于 08-20 11:24 ?790次閱讀
    主站蜘蛛池模板: 天天舔天天干 | 男人的天堂在线精品视频 | 欧美日本色 | 伊人网成人 | 日韩一级免费视频 | 婷婷丁香激情五月 | 亚洲色图在线视频 | 四虎影院网站 | 一女被两男吃奶玩乳尖口述 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片图片 | 国产激情电影综合在线看 | a级网站| 性免费视频 | 欧美爽爽网 | 亚洲免费视频在线观看 | 伊人成人在线 | 国产亚洲精品aa在线看 | 好紧好湿好黄的视频 | 久久久久免费精品国产小说 | 五月婷婷色 | 免费一级毛片清高播放 | 色站视频 | 日韩日韩 | 天天看天天碰 | 激情福利网站 | 色多多18免费观看 | 黑人性xxxⅹxxbbbbb | 日本在线视频一区二区 | 热久久影院 | 日本aaaaa| 国产视频每日更新 | 67194最新网址| 日本高清色视频在线观看免费 | 色视频免费国产观看 | 国产一区中文字幕在线观看 | 天天做天天玩天天爽天天 | 人人爱天天做夜夜爽毛片 | 伊人黄色网 | 寂寞午夜影院 | 色综合中文网 | 国产欧美精品午夜在线播放 |