久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6989|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

uC/OS-II學(xué)習(xí)筆記—任務(wù)堆棧

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51773 發(fā)表于 2013-7-13 00:47 | 只看該作者 |只看大圖 回帖獎勵 |正序?yàn)g覽 |閱讀模式
所謂堆棧,就是在存儲器中按數(shù)據(jù)“后進(jìn)先出(Last In First Out, LIFO)”的原則組織的連續(xù)存儲空間。因此,堆棧這種數(shù)據(jù)結(jié)構(gòu)最大的特點(diǎn)就是最后進(jìn)去的最先出來。這就像我們向箱子中放書,箱子的底面積剛好和書相同,那么先放進(jìn)箱子中的書很明顯只能最后出來。為了滿足任務(wù)切換或響應(yīng)中斷時保存CPU寄存器中的內(nèi)容,以及存儲任務(wù)私有數(shù)據(jù)的需要,每個任務(wù)都有自己的堆棧。當(dāng)任務(wù)進(jìn)行切換的時候,將CPU寄存器的內(nèi)容壓入堆棧,恢復(fù)的時候再彈出來給CPU寄存器。任務(wù)堆棧是任務(wù)的重要組成部分,關(guān)于任務(wù)堆棧在操作系統(tǒng)代碼中的定義如下所示:



TASK_STK_SIZE是每個任務(wù)堆棧的大小,這里設(shè)置為512,根據(jù)具體情況做移植時,可修改這個值。OS_MAX_TASKS是用戶任務(wù)的數(shù)量。OS_STK是堆棧的數(shù)據(jù)類型,使用typedef來定義,等同于無符號的整數(shù),在32位的PC系統(tǒng)中,為32位的無符號整數(shù)。如果需要移植到其他系統(tǒng),就要根據(jù)需要進(jìn)行更改。很明顯,這里我們定義了最多用戶任務(wù)數(shù)個堆棧,而統(tǒng)計任務(wù)和空閑任務(wù)的堆棧是單獨(dú)定義的,分別是OSTaskStatStk和OSTaskIdleStk,如下所示:


OS_STK是32位的,所以執(zhí)行一次壓棧操作,就要壓進(jìn)去4個字節(jié);執(zhí)行一次退棧操作,就彈出4個字節(jié)。而堆棧的大小就是TASK_STK_SIZE個OS_STK,而非TASK_STK_SIZE。這里TASK_STK_SIZE是512,那么就是512*sizeof(OS_STK),為2048個字節(jié)。
TaskStk就是我們定義的堆棧,這里是以數(shù)組的形式定義的,每個堆棧的尺寸是512個字節(jié),而一共定義了OS_MAX_TASKS個這樣的堆棧。需要注意的是用戶堆棧可以由用戶自己定義,并非一定要采用二維數(shù)組的形式。
任務(wù)堆棧有四種:滿遞減堆棧,空遞減堆棧,滿遞增堆棧,空遞增堆棧。作為一個嵌入式操作系統(tǒng)應(yīng)該可以移植到不同的平臺,因此必須兼容這四種模式。


如上所示是STM32F407的編程手冊中的一段,從中可以很清楚的看到,STM32F407采用的是滿遞減堆棧。


假如堆棧的初始狀態(tài)如上圖所示,那么向堆棧中壓入一個數(shù)據(jù)后的堆棧如下圖所示:


如果一個任務(wù)的任務(wù)堆棧如上圖所示,那么它的定義大概就應(yīng)該如下所示:
OS_STK Task1Stk[10];
這樣,這個堆棧就有Task1Stk[0]~Task1Stk[9]這樣十個堆棧空間。那么初始狀態(tài)SP應(yīng)該指向&Task1Stk[9]+1,然后向堆棧中壓入第一個數(shù)據(jù),首先,SP向下移動一個堆棧空間,然后將數(shù)據(jù)存入這個堆棧空間。也就是說存儲到Task1Stk[9]中。如果再存儲一個數(shù)據(jù),那么,同樣的,再執(zhí)行一次上面的動作,將數(shù)據(jù)存入到Task1Stk[8]中。Task1Stk[9]為棧頂,Task1Stk[0]為棧底。
OSTCBStkPtr就是指向堆棧棧頂?shù)闹羔槪琌STCBStkBottom是指向堆棧棧底的指針,OSTCBStkSize是堆棧的大小。如果OSTCBStkPtr與OSTCBStkBottom相等了,那么說明堆棧已經(jīng)滿了。OSTCBStkSize是用于做堆棧檢查的。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:78522 發(fā)表于 2022-2-9 19:22 | 只看該作者
freeRTOS不香嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线91| 欧美精品成人一区二区三区四区 | 午夜影视免费片在线观看 | 精品国产一区二区三区久久影院 | 国产三级日本三级 | 91视频正在播放 | 伊人超碰 | 久久夜视频 | 欧美激情综合色综合啪啪五月 | 亚洲第一av | 欧美日韩中文字幕在线 | 亚洲高清在线免费观看 | 视频一区在线播放 | 国产精品视频一区二区三区不卡 | 久草日韩 | 欧美乱做爰xxxⅹ久久久 | 日韩成人一区 | 日本中文字幕日韩精品免费 | 成人小视频在线观看 | 欧美不卡在线 | 一级做a爰片性色毛片16美国 | 人人射人人 | 中文字幕不卡在线观看 | 国产精品无码专区在线观看 | 成人精品影院 | 99免费视频 | 国产婷婷色综合av蜜臀av | 精品99久久 | 粉色午夜视频 | 国产综合久久 | 射久久 | 91精品国产综合久久久久久蜜臀 | 视频精品一区 | 激情黄色在线观看 | 华人黄网站大全 | 亚洲欧美国产毛片在线 | 国产精品观看 | 成人免费视频网址 | av片免费| 日韩免费视频一区二区 | 国产在线www|