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

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

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

3天內不再提示

使用ucosii創建任務時,堆棧實際使用情況!

Q4MP_gh_c472c21 ? 來源:互聯網 ? 作者:佚名 ? 2018-04-30 09:37 ? 次閱讀

不少同學都有類似經歷吧,在使用ucosii創建任務時,關于任務堆棧大小設為多大合適搞的不清不楚,郁悶之下就隨便整個數,比如就1024吧,反正也沒見得出問題,那就不多想了。

我想大多數同學都是這樣做的吧。這樣只是因為在一般情況下,1024確實已經足夠大了,堆棧溢出的可能性很小而已。那么,如果你任務實際使用率只有很小的百分之幾,一旦被你知道了,你會痛心不?我想你不痛心,μC/OS-II也會痛心的,它會覺得這個coder真是浪費啊,哈哈,這其實還好,至少只是太大導致浪費而已,萬一小了那可就堆棧溢出——慘啦!順便提醒下大家,堆和棧是完全不同的兩個概念,出于國內習慣,還是稱之為堆棧罷了!

下面,我就來告訴大家怎么知道運行中任務的堆棧實際使用情況,然后就知道應該分配多少堆棧大小合適了!開始正題。

1、首先需要知道,μC/OS-II中創建任務的函數有兩個: OSTaskCreate()和OSTaskCreateExt()

(1)OSTaskCreate() //創建普通任務

由于重點在下面的創建擴展任務函數,故本函數就不多說了!確實,要想實現檢測目標任務棧實際使用情況的功能,是不能使用這個函數來創建目標任務的,必須使用OSTaskCreateExt() 。

(2)OSTaskCreateExt() //創建擴展任務

函數接口原型為:

#if OS_TASK_CREATE_EXT_EN > 0

INT8U OSTaskCreateExt

(

void (*task)(void *pd), //建立擴展任務(任務代碼指針

void *pdata, //傳遞參數指針

OS_STK *ptos, //分配任務堆棧棧頂指針

INT8U prio, //分配任務優先級

INT16U id, //(未來的)優先級標識(與優先級相同)

OS_STK *pbos, //分配任務堆棧棧底指針

INT32U stk_size, //指定堆棧的容量(檢驗用)

void *pext, //指向用戶附加的數據域的指針

INT16U opt //建立任務設定選項

)

#endif

2、其次需要知道μC/OS-II中有這么個函數:OSTaskStkChk()

不錯,檢測任務堆棧實際使用情況正是用的這個函數,下面來本函數的接口原型:

INT8U OSTaskStkChk

(

INT8U prio,//待測任務的優先級

OS_STK_DATA *pdata //指向一個類型為OS_STK_DATA的結構體

)

3、再次需要知道一個結構體:

#if OS_TASK_CREATE_EXT_EN > 0

typedef struct

{

INT32U OSFree; //堆棧中未使用的字節數

INT32U OSUsed;//堆棧中已使用的字節數

} OS_STK_DATA;

#endif

參數: prio 為指定要獲取堆棧信息的任務優先級,也可以指定參數OS_PRIO_SELF,獲取調用任務本身的信息。

pdata 指向一個類型為OS_STK_DATA的數據結構,其中包含如下信息:

INT32U OSFree; // 堆棧中未使用的字節數

INT32U OSUsed; // 堆棧中已使用的字節數

4、有了上述三個知識點后就可以啦,具體方法為:

(1)將函數的最后一個參數opt 設置為:

OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR

(2)定義一個變量:OS_STK_DATA StackBytes;

(3)調用函數OSTaskStkChk(TestTaskPRIO, &StackBytes)

(4)StackBytes.OSFree的值即為被測任務堆棧未使用的字節數,

StackBytes.OSUsed的值即為被測任務堆棧已使用的字節數。

5、需要設置宏:OS_TASK_OPT_STK_CLR為1

6、最后一點建議:

(1)將被測任務經歷最壞的堆棧使用狀態,測出來的使用率才可靠

(2)堆棧使用率最好在%50~%80之間,太小浪費空間,太大不安全

(3)最好在工程中單獨建立一個優先級較低延時較長的任務來測試其它任務的堆棧使用情況,不用時可以掛起該任務


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

    關注

    5082

    文章

    19107

    瀏覽量

    304835
  • μC/OS
    +關注

    關注

    1

    文章

    14

    瀏覽量

    7925

原文標題:μC/OS-II創建任務時,任務堆棧大小設置搞不清楚?看這里

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

收藏 人收藏

    評論

    相關推薦

    rtthread編譯后如何查看堆棧空間使用情況

    rtthread編譯后如何查看堆棧空間使用情況,現在只能在編譯完成后看到總大小,有沒有辦法能看到詳細的使用情況。 由于RAM只有128K,除去內存池32k,想看看剩余的RAM在哪用了
    發表于 03-05 07:58

    CUBEIDE運行完可以看RAM的使用情況,運行中可以實時查看RAM的使用情況嗎?

    CUBEIDE運行完可以看RAM的使用情況,運行中可以實時查看RAM的使用情況嗎?以及負載情況? 圖片是運行完可以看RAM使用情況,是否可以運行中實時查看?是不是cubemonito
    發表于 03-12 07:56

    詳解μC/OS-II如何檢測任務堆棧實際使用情況——即如何設置ucosii任務堆棧大小

    ,我就來告訴大家怎么知道運行中任務堆棧實際使用情況,然后就知道應該分配多少堆棧大小合適了!開始正題。1、首先需要知道,μC/OS-II中創建
    發表于 09-23 17:00

    如何查看RAM使用情況

    嗨, 我正在使用STM32L053 Nucleo,我已經為它運行了一些代碼,我希望做一個RAM估計來查看當前固件的RAM使用情況。如何查看RAM使用情況? 問候#記憶
    發表于 08-05 10:08

    ucosiii堆棧使用情況檢測使用率100%?

    用OSTaskStkChk函數檢測堆棧使用情況,發現有兩個任務使用情況為100%,堆棧設置為1024,增大堆棧到2048,依然使用率100
    發表于 04-20 22:56

    STM32 FreeRTOS RAM 使用情況及優化方法實用資料分享~

    ,當然還提供可選的軟件定時器(事實上,多數 RTOS 提供的組件都是這幾項)。因此對 RAM 的使用情況的評估也與這幾項直接相關。內存管理單元提供內存管理辦法,直接消耗內存的包括調度器,任務間通訊方法
    發表于 01-26 14:10

    FreeRTOS中的任務堆棧溢出檢測機制

    余多少空間,如果函數返回0則說明可能發生了任務堆棧溢出。在應用中調用該函數可以幫助了解任務堆棧的一個實際使用情況。FreeRTOS中還提供了
    發表于 10-15 13:51

    介紹嵌入式軟件堆棧使用情況的估算方法

    介紹了嵌入式軟件堆棧使用情況的估算方法。為了方便理解這種估算方法,還對相應的堆棧操作匯編代碼(ARM Cortex-M處理器)進行分析和說明
    發表于 12-14 07:25

    電池使用情況統計信息

    電池使用情況信息根據電池使用情況統計信息和電源配置文件中的值計算得出。電池使用情況統計信息框架可通過跟蹤設備組件在不同狀態下維持的時間來自動確定電池使用情況統計信息。當組件(WLAN
    發表于 12-31 07:01

    如何在Windows 10的任務管理器中查看電源使用情況

    system. This feature is new in the October 2018 Update.Windows 10的任務管理器現在向您顯示系統上每個進程的電源使用情況。 該功能是2018年10月更...
    發表于 01-03 07:29

    SoC如何查看內存使用情況

    查看系統內存: free -h 查看ION內存 NPU內存使用情況: cat /sys/kernel/debug/ion/bm_npu_heap_dump/summary | head -2VPU
    發表于 09-19 07:23

    主流GPS芯片使用情況

    主流GPS芯片使用情況
    發表于 11-27 14:34 ?13次下載

    單片機整體的CPU使用情況詳細介紹

    打開電腦的任務管理器,看著跳動的 CPU 使用率,發現很舒服。每一個線程占用了多少 CPU 清清楚楚,也就能針對性的確認為啥你的電腦跑的慢了。今天這篇筆記不講每個任務(或線程)CPU 的使用情況,而是單片機整體的 CPU
    發表于 11-25 15:58 ?12次下載
    單片機整體的CPU<b class='flag-5'>使用情況</b>詳細介紹

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情況

    STM32/KEIL/MDK 查看 FLASH 和 RAM 使用情況
    發表于 12-02 09:06 ?13次下載
    STM32/KEIL/MDK 查看 FLASH 和 RAM <b class='flag-5'>使用情況</b>

    淺談如何評估TI C2000系列微控制器程序的堆棧使用情況

    淺談如何評估TI C2000系列微控制器程序的堆棧使用情況
    發表于 10-31 08:23 ?0次下載
    淺談如何評估TI C2000系列微控制器程序的<b class='flag-5'>堆棧</b><b class='flag-5'>使用情況</b>
    主站蜘蛛池模板: 在线免费看a| 公开超碰在线视频| 国语自产视频在线| 秋霞三级理伦免费观看| 伊人影院综合| 国产色无码精品视频国产| 欧美性xxxxxx爱| 中文字幕一区二区三区在线观看| 国产精品久久vr专区| 青草久久精品亚洲综合专区| 在线伦理电影网| 好男人在线观看视频观看高清视频免费 | 卫生间被教官做好爽HH视频| 97人妻在线公开视频在线观看| 花蝴蝶高清影视视频在线播放| 色午夜日本高清视频www| 99久久99久久久精品久久| 久草在线在线精品观看99| 性色少妇AV蜜臀人妻无码| 穿着丝袜被男生强行啪啪| 女朋友的妈妈在线观看| 岳扒开让我添| 国内精品久久久久影院网站| 体内精69xxxxxx喷潮| 波野结衣qvod| 欧美 亚洲 有码中文字幕| 中文字幕s级优女区| 精品人妻伦一二三区久久AAA片 | 石原莉奈rbd806中文字幕| qvod电影在线观看| 免费看黄色一级| 中文国产成人精品久久免费| 精品国内自产拍在线观看视频| 亚洲第一成年网站视频| 国产麻豆精品久久一二三| 桃色窝| 国产精品美女久久久久浪潮AV| 色即是空 BT| 囯产精品一品二区三区| 三级成年网站在线观看| 成人片在线播放|