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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6947|回復: 1
收起左側

uC/OS-II學習筆記—任務堆棧

[復制鏈接]
ID:51773 發表于 2013-7-13 00:47 | 顯示全部樓層 |閱讀模式
所謂堆棧,就是在存儲器中按數據“后進先出(Last In First Out, LIFO)”的原則組織的連續存儲空間。因此,堆棧這種數據結構最大的特點就是最后進去的最先出來。這就像我們向箱子中放書,箱子的底面積剛好和書相同,那么先放進箱子中的書很明顯只能最后出來。為了滿足任務切換或響應中斷時保存CPU寄存器中的內容,以及存儲任務私有數據的需要,每個任務都有自己的堆棧。當任務進行切換的時候,將CPU寄存器的內容壓入堆棧,恢復的時候再彈出來給CPU寄存器。任務堆棧是任務的重要組成部分,關于任務堆棧在操作系統代碼中的定義如下所示:


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


4.JPG 5.JPG OS_STK是32位的,所以執行一次壓棧操作,就要壓進去4個字節;執行一次退棧操作,就彈出4個字節。而堆棧的大小就是TASK_STK_SIZE個OS_STK,而非TASK_STK_SIZE。這里TASK_STK_SIZE是512,那么就是512*sizeof(OS_STK),為2048個字節。
TaskStk就是我們定義的堆棧,這里是以數組的形式定義的,每個堆棧的尺寸是512個字節,而一共定義了OS_MAX_TASKS個這樣的堆棧。需要注意的是用戶堆?梢杂捎脩糇约憾x,并非一定要采用二維數組的形式。
任務堆棧有四種:滿遞減堆棧,空遞減堆棧,滿遞增堆棧,空遞增堆棧。作為一個嵌入式操作系統應該可以移植到不同的平臺,因此必須兼容這四種模式。

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

51.png
假如堆棧的初始狀態如上圖所示,那么向堆棧中壓入一個數據后的堆棧如下圖所示:

52.png
如果一個任務的任務堆棧如上圖所示,那么它的定義大概就應該如下所示:
OS_STK Task1Stk[10];
這樣,這個堆棧就有Task1Stk[0]~Task1Stk[9]這樣十個堆?臻g。那么初始狀態SP應該指向&Task1Stk[9]+1,然后向堆棧中壓入第一個數據,首先,SP向下移動一個堆棧空間,然后將數據存入這個堆?臻g。也就是說存儲到Task1Stk[9]中。如果再存儲一個數據,那么,同樣的,再執行一次上面的動作,將數據存入到Task1Stk[8]中。Task1Stk[9]為棧頂,Task1Stk[0]為棧底。
OSTCBStkPtr就是指向堆棧棧頂的指針,OSTCBStkBottom是指向堆棧棧底的指針,OSTCBStkSize是堆棧的大小。如果OSTCBStkPtr與OSTCBStkBottom相等了,那么說明堆棧已經滿了。OSTCBStkSize是用于做堆棧檢查的。
回復

使用道具 舉報

ID:78522 發表于 2022-2-9 19:22 | 顯示全部樓層
freeRTOS不香嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av网站免费在线观看 | 精品一区二区久久久久久久网站 | 国产福利资源 | av中文字幕在线 | 久久综合久久久 | 成人免费看片 | 欧美成人一级 | 久久精品国产免费 | 亚洲狠狠爱 | 成人妇女免费播放久久久 | 青青久视频 | 成人免费看黄 | 久久精品国产免费高清 | 久www| 精品免费国产一区二区三区四区 | 一级毛片播放 | 岛国av在线免费观看 | 女生羞羞网站 | 亚洲欧美日韩精品久久亚洲区 | 精品国产一区二区三区久久 | 欧美日日| 欧美色综合网 | 天天操夜夜骑 | 午夜网| 天天摸天天干 | 成人一区av偷拍 | 成人国产精品久久久 | 精品福利在线视频 | 一区二区三区电影网 | 亚洲欧美一区二区三区1000 | 亚洲国产一区在线 | 玖玖玖在线观看 | 国产成人综合在线 | 国产精品福利在线 | 国产一区二区精品在线 | 亚州中文字幕 | 日韩精品一区二区三区四区视频 | 成人性生交大片 | 91精品国产综合久久久久久丝袜 | 激情av网站 | 女人毛片a毛片久久人人 |