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

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

3天內(nèi)不再提示

基于RTOS內(nèi)核的滴答處理程序優(yōu)先級設置

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Matt Gordon ? 2022-06-29 09:12 ? 次閱讀

在您確定系統(tǒng)中滴答處理的優(yōu)先級之前,重要的是要注意與滴答相關的延遲,正如我上一篇文章所指出的,可能并不總是在您的系統(tǒng)中實現(xiàn)周期性行為的最佳方式。您可能希望避免在某些任務中依賴滴答作響的一個原因是延遲往往會因調(diào)用而波動。如果您的系統(tǒng)任務之一重復調(diào)用 OSTimeDly() 以延遲 5 個滴答聲,并且您的系統(tǒng)的滴答聲周期為 1 毫秒,則該任務不會始終保持等待狀態(tài)正好 5 毫秒。在某些情況下,它可能會經(jīng)歷接近 4 毫秒的延遲,而在其他情況下,它可能會延遲 6 毫秒或更長時間。

在許多系統(tǒng)中,這種波動或抖動的原因之一是多個任務使用延遲函數(shù)。如圖 1 所示,如果三個任務的延遲周期都在同一個內(nèi)核節(jié)拍上到期,那么只有那些任務中最高優(yōu)先級的任務會在節(jié)拍處理程序之后立即運行。隨著時間的推移,較低優(yōu)先級的任務將在其延遲中經(jīng)歷更多的抖動,因為總是存在它們無法在將它們移動到就緒狀態(tài)的滴答聲之后立即運行的可能性。

poYBAGK7py-AFj_OAABIhj-exLk398.png

當然,滴答處理程序優(yōu)先級的可變性是延遲波動的另一個潛在來源。在 μC/OS-III 的例子中,它預留了一個系統(tǒng)任務來處理滴答中斷,如果這個任務被賦予了一個相對較低的優(yōu)先級并且在一個高優(yōu)先級任務運行時發(fā)生了一個滴答,那么內(nèi)核將不會被能夠處理滴答并執(zhí)行任何相關的調(diào)度,直到 CPU 被高優(yōu)先級任務放棄,如圖 2 所示。在完全在 ISR 中處理滴答的 μC/OS-II 中,如果這ISR 的優(yōu)先級相對較低,并且在執(zhí)行更重要的 ISR 期間發(fā)生了滴答聲。

pYYBAGK7pzWATWhrAABc9MPfz7U548.png

在設置滴答優(yōu)先級時,您需要牢記應用程序?qū)Σ▌友舆t的容忍度。如果您的代碼可以適應幾毫秒的波動——也許是因為您將使用滴答延遲僅用于輪詢用戶 I/O——那么您可以選擇優(yōu)先級相對較低的滴答。另一方面,如果您的任務需要相當一致的延遲,那么您應該采用高優(yōu)先級,并且您還應該采取措施限制使用延遲函數(shù)的任務數(shù)量。

RTOS 內(nèi)核用戶在配置滴答優(yōu)先級和頻率方面可能具有的靈活性肯定會給剛接觸內(nèi)核的開發(fā)人員帶來一些困難。然而,通過設置刻度所涉及的權(quán)衡信息,這種靈活性成為定制多任務系統(tǒng)以滿足各種應用程序需求的寶貴手段。我已嘗試在本系列博客中提供滴答使用和配置所需的一些關鍵信息。

審核編輯:郭婷

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

    關注

    3

    文章

    1377

    瀏覽量

    40338
  • RTOS
    +關注

    關注

    22

    文章

    817

    瀏覽量

    119756
收藏 人收藏

    評論

    相關推薦

    freertos中斷優(yōu)先級在哪設置

    FreeRTOS是一個流行的實時操作系統(tǒng),它廣泛應用于嵌入式系統(tǒng)開發(fā)。在FreeRTOS中,中斷優(yōu)先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解中斷優(yōu)先級 在討論如何
    的頭像 發(fā)表于 09-02 14:17 ?726次閱讀

    APS智能優(yōu)化排產(chǎn)軟件的優(yōu)先級應用

    資源、訂單需求和約束條件,自動計算出最優(yōu)的生產(chǎn)計劃。在這個過程中,訂單排產(chǎn)的優(yōu)先規(guī)則起著至關重要的作用。1.交期優(yōu)先級交期優(yōu)先級是訂單排產(chǎn)中最基本的優(yōu)先規(guī)則。根據(jù)
    的頭像 發(fā)表于 06-26 17:43 ?415次閱讀
    APS智能優(yōu)化排產(chǎn)軟件的<b class='flag-5'>優(yōu)先級</b>應用

    ESP32S2如何設置中斷優(yōu)先級

    ESP32S2有六中斷, 如何設置中斷優(yōu)先級? 比如在GPIO例程里 ,這種中斷優(yōu)先級是如何設置的呢? 中斷寄存器列表里 ,只有簡稱,哪里
    發(fā)表于 06-21 07:59

    為什么不能在不同的優(yōu)先級中安裝相同的處理程序?

    在不同的優(yōu)先級中安裝相同的處理程序? 我需要一個解決方案,在不同的優(yōu)先級中安裝相同的處理程序(I
    發(fā)表于 05-31 08:16

    如何在不同優(yōu)先級安裝相同的處理程序?

    在不同的優(yōu)先級中安裝相同的處理程序? 我需要一個解決方案,在不同的優(yōu)先級中安裝相同的處理程序(I
    發(fā)表于 05-28 08:13

    systick的中斷優(yōu)先級是否應該設置為最高優(yōu)先級的嵌套中斷?

    最近在學習ucosii有這樣一個疑問,關于stm32的systick作為ucosii的基準時鐘,systick的中斷優(yōu)先級是否應該設置為最高優(yōu)先級的嵌套中斷。理由是什么?各位大俠求指教!?。?/div>
    發(fā)表于 05-16 06:44

    創(chuàng)建了兩個task如果一個優(yōu)先級高 一個優(yōu)先級低,高優(yōu)先級的那個一直在做,什么時候會調(diào)度到低優(yōu)先級的呢?

    創(chuàng)建了兩個task如果一個優(yōu)先級高一個優(yōu)先級低, 我看到任務的函數(shù)都是用死循環(huán)做的,那個高優(yōu)先級的那個一直在做,什么時候會調(diào)度到低優(yōu)先級的呢?
    發(fā)表于 05-13 07:13

    求助,關于stm32F4中斷優(yōu)先級0無法搶占的問題求解

    使用F407遇到一個搶占優(yōu)先級的問題: 現(xiàn)設置優(yōu)先級分組 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);也就是15個優(yōu)先級分組。
    發(fā)表于 04-23 07:26

    關于stm32cube中freertos的優(yōu)先級設置問題求解

    在用stm32cube中freertos,在配置界面里設置為12任務優(yōu)先級,但是在cube中配置每個任務優(yōu)先級時還是只能選擇7種優(yōu)先級,分
    發(fā)表于 04-22 07:25

    ARM7使用IAR或者KEIL,設置中斷優(yōu)先級后,默認就是中斷嵌套嗎還是需要專門處理?

    使用IAR或者KEIL,設置中斷優(yōu)先級后,默認就是中斷嵌套嗎,還是需要專門處理?
    發(fā)表于 04-19 08:09

    不會RTOS,是因為你沒搞懂NVIC

    管理的中斷可進行中斷嵌套,直譯為高優(yōu)先級可打斷低優(yōu)先級中斷,然后高優(yōu)先級執(zhí)行完了再轉(zhuǎn)回去執(zhí)行低優(yōu)先級中斷。對于RTOS(實時操作系統(tǒng))類型的
    的頭像 發(fā)表于 03-31 08:09 ?1146次閱讀
    不會<b class='flag-5'>RTOS</b>,是因為你沒搞懂NVIC

    STM32F103的寄存器NVIC_IPRx搶占優(yōu)先級和子優(yōu)先級是怎么設置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,搶占優(yōu)先級和子優(yōu)先級是怎么設置的? 如果,中斷分組2,搶占優(yōu)先級3,子優(yōu)先級3
    發(fā)表于 03-27 07:48

    Hightec對芯片中斷優(yōu)先級分配時,中斷號越高中斷優(yōu)先級越高嗎?

    請問大佬,Hightec對芯片中斷優(yōu)先級分配時,中斷號越高中斷優(yōu)先級越高嗎?看網(wǎng)上的帖子說中斷號越低優(yōu)先級越高。
    發(fā)表于 02-27 06:13

    RTTnano的用戶main函數(shù)中的優(yōu)先級是多少?

    RTTnano 的用戶main函數(shù)中的優(yōu)先級是多少?為什么會出現(xiàn)創(chuàng)建新的task之后,main函數(shù)會搶占掉低優(yōu)先級的task,例如RT_THREAD_PRIORITY_MAX設置為8 ,低于3
    發(fā)表于 02-26 08:01

    M0516中斷優(yōu)先級怎么設置?

    新唐M0516中斷優(yōu)先級設置,有沒有示例,沒找到相關接口,謝謝!
    發(fā)表于 01-16 07:25