欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

使用ucosii創(chuàng)建任務(wù)時(shí),堆棧實(shí)際使用情況!

Q4MP_gh_c472c21 ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-04-30 09:37 ? 次閱讀

不少同學(xué)都有類(lèi)似經(jīng)歷吧,在使用ucosii創(chuàng)建任務(wù)時(shí),關(guān)于任務(wù)堆棧大小設(shè)為多大合適搞的不清不楚,郁悶之下就隨便整個(gè)數(shù),比如就1024吧,反正也沒(méi)見(jiàn)得出問(wèn)題,那就不多想了。

我想大多數(shù)同學(xué)都是這樣做的吧。這樣只是因?yàn)樵谝话闱闆r下,1024確實(shí)已經(jīng)足夠大了,堆棧溢出的可能性很小而已。那么,如果你任務(wù)實(shí)際使用率只有很小的百分之幾,一旦被你知道了,你會(huì)痛心不?我想你不痛心,μC/OS-II也會(huì)痛心的,它會(huì)覺(jué)得這個(gè)coder真是浪費(fèi)啊,哈哈,這其實(shí)還好,至少只是太大導(dǎo)致浪費(fèi)而已,萬(wàn)一小了那可就堆棧溢出——慘啦!順便提醒下大家,堆和棧是完全不同的兩個(gè)概念,出于國(guó)內(nèi)習(xí)慣,還是稱(chēng)之為堆棧罷了!

下面,我就來(lái)告訴大家怎么知道運(yùn)行中任務(wù)的堆棧實(shí)際使用情況,然后就知道應(yīng)該分配多少堆棧大小合適了!開(kāi)始正題。

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

(1)OSTaskCreate() //創(chuàng)建普通任務(wù)

由于重點(diǎn)在下面的創(chuàng)建擴(kuò)展任務(wù)函數(shù),故本函數(shù)就不多說(shuō)了!確實(shí),要想實(shí)現(xiàn)檢測(cè)目標(biāo)任務(wù)棧實(shí)際使用情況的功能,是不能使用這個(gè)函數(shù)來(lái)創(chuàng)建目標(biāo)任務(wù)的,必須使用OSTaskCreateExt() 。

(2)OSTaskCreateExt() //創(chuàng)建擴(kuò)展任務(wù)

函數(shù)接口原型為:

#if OS_TASK_CREATE_EXT_EN > 0

INT8U OSTaskCreateExt

(

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

void *pdata, //傳遞參數(shù)指針

OS_STK *ptos, //分配任務(wù)堆棧棧頂指針

INT8U prio, //分配任務(wù)優(yōu)先級(jí)

INT16U id, //(未來(lái)的)優(yōu)先級(jí)標(biāo)識(shí)(與優(yōu)先級(jí)相同)

OS_STK *pbos, //分配任務(wù)堆棧棧底指針

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

void *pext, //指向用戶(hù)附加的數(shù)據(jù)域的指針

INT16U opt //建立任務(wù)設(shè)定選項(xiàng)

)

#endif

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

不錯(cuò),檢測(cè)任務(wù)堆棧實(shí)際使用情況正是用的這個(gè)函數(shù),下面來(lái)本函數(shù)的接口原型:

INT8U OSTaskStkChk

(

INT8U prio,//待測(cè)任務(wù)的優(yōu)先級(jí)

OS_STK_DATA *pdata //指向一個(gè)類(lèi)型為OS_STK_DATA的結(jié)構(gòu)體

)

3、再次需要知道一個(gè)結(jié)構(gòu)體:

#if OS_TASK_CREATE_EXT_EN > 0

typedef struct

{

INT32U OSFree; //堆棧中未使用的字節(jié)數(shù)

INT32U OSUsed;//堆棧中已使用的字節(jié)數(shù)

} OS_STK_DATA;

#endif

參數(shù): prio 為指定要獲取堆棧信息的任務(wù)優(yōu)先級(jí),也可以指定參數(shù)OS_PRIO_SELF,獲取調(diào)用任務(wù)本身的信息。

pdata 指向一個(gè)類(lèi)型為OS_STK_DATA的數(shù)據(jù)結(jié)構(gòu),其中包含如下信息:

INT32U OSFree; // 堆棧中未使用的字節(jié)數(shù)

INT32U OSUsed; // 堆棧中已使用的字節(jié)數(shù)

4、有了上述三個(gè)知識(shí)點(diǎn)后就可以啦,具體方法為:

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

OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR

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

(3)調(diào)用函數(shù)OSTaskStkChk(TestTaskPRIO, &StackBytes)

(4)StackBytes.OSFree的值即為被測(cè)任務(wù)堆棧未使用的字節(jié)數(shù),

StackBytes.OSUsed的值即為被測(cè)任務(wù)堆棧已使用的字節(jié)數(shù)。

5、需要設(shè)置宏:OS_TASK_OPT_STK_CLR為1

6、最后一點(diǎn)建議:

(1)將被測(cè)任務(wù)經(jīng)歷最壞的堆棧使用狀態(tài),測(cè)出來(lái)的使用率才可靠

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

(3)最好在工程中單獨(dú)建立一個(gè)優(yōu)先級(jí)較低延時(shí)較長(zhǎng)的任務(wù)來(lái)測(cè)試其它任務(wù)的堆棧使用情況,不用時(shí)可以?huà)炱鹪撊蝿?wù)


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

    關(guān)注

    5096

    文章

    19191

    瀏覽量

    308046
  • μC/OS
    +關(guān)注

    關(guān)注

    1

    文章

    14

    瀏覽量

    7946

原文標(biāo)題:μC/OS-II創(chuàng)建任務(wù)時(shí),任務(wù)堆棧大小設(shè)置搞不清楚?看這里

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    CUBEIDE運(yùn)行完可以看RAM的使用情況,運(yùn)行中可以實(shí)時(shí)查看RAM的使用情況嗎?

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

    詳解μC/OS-II如何檢測(cè)任務(wù)堆棧實(shí)際使用情況——即如何設(shè)置ucosii任務(wù)堆棧大小

    ,我就來(lái)告訴大家怎么知道運(yùn)行中任務(wù)堆棧實(shí)際使用情況,然后就知道應(yīng)該分配多少堆棧大小合適了!開(kāi)始正題。1、首先需要知道,μC/OS-II中創(chuàng)建
    發(fā)表于 09-23 17:00

    如何查看RAM使用情況?

    嗨, 我正在使用STM32L053 Nucleo,我已經(jīng)為它運(yùn)行了一些代碼,我希望做一個(gè)RAM估計(jì)來(lái)查看當(dāng)前固件的RAM使用情況。如何查看RAM使用情況? 問(wèn)候#記憶
    發(fā)表于 08-05 10:08

    ucosiii堆棧使用情況檢測(cè)使用率100%?

    用OSTaskStkChk函數(shù)檢測(cè)堆棧使用情況,發(fā)現(xiàn)有兩個(gè)任務(wù)使用情況為100%,堆棧設(shè)置為1024,增大堆棧到2048,依然使用率100
    發(fā)表于 04-20 22:56

    STM32 FreeRTOS RAM 使用情況及優(yōu)化方法實(shí)用資料分享~

    ,當(dāng)然還提供可選的軟件定時(shí)器(事實(shí)上,多數(shù) RTOS 提供的組件都是這幾項(xiàng))。因此對(duì) RAM 的使用情況的評(píng)估也與這幾項(xiàng)直接相關(guān)。內(nèi)存管理單元提供內(nèi)存管理辦法,直接消耗內(nèi)存的包括調(diào)度器,任務(wù)間通訊方法
    發(fā)表于 01-26 14:10

    FreeRTOS中的任務(wù)堆棧溢出檢測(cè)機(jī)制

    余多少空間,如果函數(shù)返回0則說(shuō)明可能發(fā)生了任務(wù)堆棧溢出。在應(yīng)用中調(diào)用該函數(shù)可以幫助了解任務(wù)堆棧的一個(gè)實(shí)際使用情況。FreeRTOS中還提供了
    發(fā)表于 10-15 13:51

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

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

    電池使用情況統(tǒng)計(jì)信息

    電池使用情況信息根據(jù)電池使用情況統(tǒng)計(jì)信息和電源配置文件中的值計(jì)算得出。電池使用情況統(tǒng)計(jì)信息框架可通過(guò)跟蹤設(shè)備組件在不同狀態(tài)下維持的時(shí)間來(lái)自動(dòng)確定電池使用情況統(tǒng)計(jì)信息。當(dāng)組件(WLAN
    發(fā)表于 12-31 07:01

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

    system. This feature is new in the October 2018 Update.Windows 10的任務(wù)管理器現(xiàn)在向您顯示系統(tǒng)上每個(gè)進(jìn)程的電源使用情況。 該功能是2018年10月更...
    發(fā)表于 01-03 07:29

    SoC如何查看內(nèi)存使用情況

    查看系統(tǒng)內(nèi)存: free -h 查看ION內(nèi)存 NPU內(nèi)存使用情況: cat /sys/kernel/debug/ion/bm_npu_heap_dump/summary | head -2VPU
    發(fā)表于 09-19 07:23

    主流GPS芯片使用情況

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

    單片機(jī)整體的CPU使用情況詳細(xì)介紹

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

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

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

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

    淺談如何評(píng)估TI C2000系列微控制器程序的堆棧使用情況
    發(fā)表于 10-31 08:23 ?0次下載
    淺談如何評(píng)估TI C2000系列微控制器程序的<b class='flag-5'>堆棧</b><b class='flag-5'>使用情況</b>