欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關(guān)于UCOS模擬堆棧的理解 二
[打印本頁]
作者:
aiohu
時間:
2020-5-5 16:36
標題:
關(guān)于UCOS模擬堆棧的理解 二
前面說了一下模擬堆棧的由來和實際的意義。總結(jié)為一句話:實際需要,有KEIL編譯器自動分配存儲空間,實現(xiàn)函數(shù)重入。該堆棧和Proteus沒有關(guān)系。
2 系統(tǒng)堆棧(CPU寄存器)
系統(tǒng)堆棧是單片機中的關(guān)鍵組成部分。也叫硬件堆棧或常規(guī)堆棧。是單片機進入中斷的時候用到的,單片機一旦遇到中斷請求,就會去處理中斷,處理完后再回來處理主程序,這樣就涉及到了一個問題,單片機要保存中斷之前的信息,以便處理中斷后能夠回到主程序中,單片機會在響應(yīng)中斷前,把單片機現(xiàn)在的指針地址(也就是處理完要返回的地址),以及一些必要的數(shù)據(jù)壓入堆棧(沒有這些數(shù)據(jù),單片機處理完中斷后就無法確定主程序的狀態(tài))。該過程稱為現(xiàn)場保存。
堆棧是一種執(zhí)行“先入后出”算法的數(shù)據(jù)結(jié)構(gòu)。是在內(nèi)存中的一個存儲區(qū)域,數(shù)據(jù)一個一個順序地存入(也就是“壓入—PUSH”)這個區(qū)域之中。有一個地址指針(堆棧指針)總指向最后一個壓入堆棧的數(shù)據(jù)所在的存儲單元,存放這個地址指針的寄存器就叫做堆棧指示器。
開始放入數(shù)據(jù)的單元叫做“棧底”。數(shù)據(jù)一個一個地存入,這個過程叫做“壓棧”。讀取這些數(shù)據(jù)時,按照堆棧指示器中的地址讀取數(shù)據(jù),堆棧指示器中的地址數(shù)自動減1。這個過程叫做“彈出POP”。如此就實現(xiàn)了先入后出的原則。 MCS-51的堆棧是向上生成的(即向地址增加的方向),堆棧指針SP的初始值稱為棧底。
3 任務(wù)堆棧
堆棧作用的就是用來保存變量,從實質(zhì)上講也就是將CPU寄存器的值保存到RAM中。在uCOS中,每一個任務(wù)都有一個獨立的任務(wù)堆棧。為了深入理解任務(wù)堆棧的作用,不妨分析任務(wù)從“出生”到“消亡”的整個過程,具體就是分析任務(wù)的建立,運行,掛起幾種狀態(tài)中任務(wù)堆棧的變化情況。
目前假設(shè)系統(tǒng)運行著一個由用戶創(chuàng)建的用以完成打印工作的任務(wù)TPrint。TPrint最初通過OSTaskCreate()函數(shù)創(chuàng)建,在該函數(shù)中與任務(wù)堆棧有關(guān)的第一段代碼是大家比較熟悉的函數(shù)OSTaskStkInit(),這個函數(shù)是在uCOS移植過程中必須實現(xiàn)的,其作用是“初始化堆棧”,其實就是預(yù)先在RAM中的一塊區(qū)域中把任務(wù)將來運行開始時CPU寄存器應(yīng)處的狀態(tài)(正確值)準備好,之后,任務(wù)第一次被內(nèi)核調(diào)度器調(diào)度運行時,將這些準備好的數(shù)據(jù)(寄存器的值)推到CPU的寄存器中,如果數(shù)據(jù)設(shè)計的合理,CPU便會按照我們預(yù)先設(shè)計好的思路運行。
堆棧結(jié)構(gòu).png
(91.64 KB, 下載次數(shù): 165)
下載附件
2020-5-5 16:36 上傳
作者:
youlinys
時間:
2023-8-30 21:17
很好的資料。雖然看不懂。
作者:
liucan2020
時間:
2023-9-11 10:45
還沒有學到這里,后面可能需要,先頂一下
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1