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

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

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

3天內不再提示

如何設定RTOS中的任務棧(線程棧)大小呢?

冬至子 ? 來源:機器靈魂注入師 ? 作者:Eureka1024 ? 2023-12-01 16:40 ? 次閱讀

概述

首先說明的是,在 RT-Thread 中,將本文提及的 任務 稱之為 線程。在使用 RTOS 開發項目時,一個任務會擁有自己獨立的線程棧,用來在任務調度時保存該任務的當前上下文內容,比如當前 CPU 寄存器的值、函數的局部變量等。

不同的任務復雜程度不同,需要的棧大小也不同,給多了浪費(畢竟單片機中的 RAM 貴的一匹),給少了更嚴重,棧溢出造成的后果會讓整個系統崩潰。所以,一個合適的棧大小便十分重要,本文就來聊聊這個棧大小如何配置的問題。

方法論

理論上來說,你是可以計算出任務所需要的大概的值,但是要考慮的因素比較多,比如寄存器的數量的不同等,不同類型的單片機亦有差別,所以這種方式比較費腦,對底層知識的理解也要比較深刻,可能比較適合大佬吧(我不是大佬也不知道大佬們怎么做)。

比較普適的做法是,可以先設置較大的任務棧,比如 1KB2KB 的大小,確保不會出現棧溢出的情況,然后讓系統運行一段比較長的時間,同時要盡量觸發各種可能的工況,通過查看任務棧的被使用的最大深度值,一般將最終的任務棧大小設定為該值的 1.5~2 倍為比較合適的值。不斷地修改和檢查棧大小是否配置合適這個過程,是動態調節的過程,最終會找到一個比較好的方案。

不同的 RTOS,如何檢測任務棧的使用情況呢?

RT-Thread

FinSH 中用 list_thread 命令查看線程運行過程中線程所使用的棧的大小,這里的大小指的是從線程啟動運行時到當前時刻點,線程使用的最大棧深度,

FreeRTOS

使用 uxTaskGetStackHighWaterMark()``API 函數來查看實際使用了多少棧,如果分配的棧比需要的多,則可以減少棧大小,并且可以使用棧溢出檢測特性來確定棧是否太小。比如,在一個任務中使用如下調用:

printf(" the min free stack size is %d rn",(int32_t)uxTaskGetStackHighWaterMark(NULL));

ucos

ucos 提供了一個系統任務:STATISTICS 任務,可以統計各任務的CPU使用率,也就是任務棧使用情況,可以借用該統計任務的函數來統計各任務的棧使用情況。

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

    關注

    6035

    文章

    44554

    瀏覽量

    634682
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120234
  • RTOS
    +關注

    關注

    22

    文章

    811

    瀏覽量

    119596
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62144
  • RT-Thread
    +關注

    關注

    31

    文章

    1285

    瀏覽量

    40089
收藏 人收藏

    評論

    相關推薦

    嵌入式RTOS任務 和 系統

    簡介明了帶你了解嵌入式RTOS任務 和 系統
    的頭像 發表于 05-16 09:57 ?3222次閱讀
    嵌入式<b class='flag-5'>RTOS</b>的 <b class='flag-5'>任務</b><b class='flag-5'>棧</b> 和 系統<b class='flag-5'>棧</b>

    ucos_ii 每個任務具體定義大小

    在ucos_ii 系統,針對每個任務怎么來分配其大小。我在程序對一個只是LED點亮的任務
    發表于 04-30 17:43

    轉:第11章 FreeRTOS任務大小確定及其溢出檢測

    任務溢出檢測方式一)11.5 實驗例程說明(任務溢出檢測方式二)11.6總結11.1 任務
    發表于 08-28 15:21

    請問uc/os任務優先級和大小該怎樣設置?

    #defineTASK_LED2_STK_SIZE80#defineTASK_LED3_STK_SIZE80 #defineTASK_GUI_STK_SIZE500#defineTASK_GUI_Touch_STK_SIZE80 不知道怎樣設置大小
    發表于 04-08 08:35

    請問在IAR如何直接查看任務使用多少空間?

    在使用IAR調試freertos任務,IAR自帶了一個調試插件,啟用這個插件會得到任務名、優先級、起始空間和頂位置,但是如何計算出每個
    發表于 06-10 09:25

    FreeRTOS任務與系統的關系?

    configTOTAL_HEAP_SIZE((size_t)(55*1024))的作用?三個設置大小的地方之間又有何種聯系?4、任務與系統
    發表于 07-15 00:17

    ThreadX任務大小的確定方法以及溢出檢測方法

    第10章 ThreadX任務大小確定及其溢出檢測本章節為大家講解ThreadX任務大小的確定
    發表于 08-04 08:59

    講解ThreadX任務大小的確定方法以及溢出檢測方法

    第10章 ThreadX任務大小確定及其溢出檢測本章節為大家講解ThreadX任務大小的確定
    發表于 08-09 06:30

    如何確定ThreadX任務大小

    如何確定ThreadX任務大小?什么是溢出?怎樣去檢測ThreadX的
    發表于 10-14 07:42

    什么是堆?什么是

    ,程序執行過程溢出,極大可能的影響程序、系統的穩定,嚴重時會造成程序、系統的崩潰,所以堆棧溢出檢測十分重要且必要。什么是堆,什么是堆和都是指預先分配的空間,有
    發表于 12-22 06:09

    基于STM32的虛擬多線程(TI_BLE協議_ZStack協議)

    基于STM32的虛擬多線程,可以很好的用于裸機程序,用于模擬小型操作系統的多線程概念。本實例參考了參考TI_BLE協議_ZStack協議
    發表于 06-14 10:42 ?6925次閱讀
    基于STM32的虛擬多<b class='flag-5'>線程</b>(TI_BLE協議<b class='flag-5'>棧</b>_ZStack協議<b class='flag-5'>棧</b>)

    LEDs狀態燈任務(線程)設計 (基于RTOS

    LEDs狀態燈任務(線程)設計(基于RTOS
    的頭像 發表于 03-12 11:30 ?2347次閱讀

    修改空間的大小

    當程序的局部變量太多時,可能會造成空間不夠用導致程序出錯,這個時候就需要修改空間的大小默認的空間
    發表于 12-20 18:53 ?1次下載
    修改<b class='flag-5'>棧</b>空間的<b class='flag-5'>大小</b>

    堆內存和內存的區別是什么

    內存是為線程留出的臨時空間,每個線程都有一個固定大小空間,而且空間存儲的數據只能由當前
    的頭像 發表于 02-21 13:54 ?1502次閱讀
    堆內存和<b class='flag-5'>棧</b>內存的區別是什么

    linux的進程,線程,內核的區別

    大多數的處理器架構,都有實現硬件。有專門的指針寄存器,以及特定的硬件指令來完成 入/出 的操作。例如在 ARM 架構上,R13 (SP) 指針是堆棧指針寄存器,而 PUSH 是
    發表于 08-18 10:57 ?499次閱讀
    linux<b class='flag-5'>中</b>的進程<b class='flag-5'>棧</b>,<b class='flag-5'>線程</b><b class='flag-5'>棧</b>,內核<b class='flag-5'>棧</b>的區別
    主站蜘蛛池模板: 成人国产AV精品久久久久| 国产亚洲精品黑人粗大精选 | jiz中国zz| 国产蜜臀AV在线一区视频| 乱色欧美激惰| 午夜成a人片在线观看| 《乳色吐息》无删减版在线观看| 俄罗斯兽交XXXXX在线| 久久久96| 四虎永久在线精品国产| 做a爱片的全过程| 国产精品人妻99一区二| 蜜桃传媒一区二区亚洲AV| 午夜男女爽爽羞羞影院在线观看| 91在线一区二区| 国产精品自在在线午夜蜜芽tv在线 | 久久久久亚洲| 同桌别揉我奶了嗯啊| 5278欧美一区二区三区| 国产一区亚洲| 日本一区二区三区在线观看网站 | 好男人在线观看视频观看高清视频免费 | 精品无码一区二区三区中文字幕 | 拉菲娱乐主管高工资q39709| 桃色园社区| ae58老司机福利| 久久久久久极精品久久久| 王晶三级作品| xxxxx中国明星18| 老司机亚洲精品影院| 亚洲AV久久无码精品九号| 波多野结衣 无码片| 伦理片qvod| 亚洲一区在线观看视频| 国产精品单位女同事在线| 欧美日韩看看2015永久免费| 在线精彩视频在线观看免费| 国产小视频在线高清播放| 色精品极品国产在线视频| 99视频在线免费| 久久午夜免费视频|