|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
uC/OS-II在MCS51上移植的堆棧增長問題 |
| 作者:Herowa 欄目:嵌入式系統(tǒng) |
小弟最近學(xué)習(xí)uC/OS-II在MCS51(AT89S52+62256RAM)上移植,看了些例子,也自己寫了點(diǎn)程序,發(fā)現(xiàn)MCU-51堆棧從下往上增長和從上往下增長都可以運(yùn)行程序,請(qǐng)問MSC51是這樣的嗎?為什么書上說要看MCU對(duì)堆棧增長的支持后才可以定增長方式,難道MSC51對(duì)兩種增長方式都支持? |
| 2樓: | >>參與討論 |
| 作者: high 于 2005/6/30 19:25:00 發(fā)布:
不是這樣理解。 對(duì)于一個(gè)應(yīng)用,堆棧往哪個(gè)方向,只要不出了指定stack區(qū)域,不會(huì)覆蓋其他數(shù)據(jù)都沒關(guān)系。但是stack沒有越界檢查,所以一旦stack溢出是非常危險(xiǎn)的。分配堆棧的大小取決局部變量和函數(shù)嵌套。 ucos為每個(gè)任務(wù)分配了堆棧。 比如: CHAR stack[SIZE];作為任務(wù)的堆棧區(qū)域。 如果堆棧是從高往低,比如arm。那么就要把stack的最高地址賦值給sp寄存器。sp = &stack[SIZE-1]; 對(duì)于51,是從低往高,sp = &stack[0]; 從而保證sp在stack域里。 |
|
| 3樓: | >>參與討論 |
| 作者: Herowa 于 2005/7/1 10:07:00 發(fā)布:
謝謝high 我還是想問一下:為什么arm的堆棧是從高往低,而51的是從低往高,,這是怎么規(guī)定的? 另外,我將51的堆棧設(shè)為從高往低(當(dāng)然用了sp = &stack[SIZE-1];),也是可以正常運(yùn)行的。 |
|
| 4樓: | >>參與討論 |
| 作者: hi 于 2008/1/8 21:49:28 發(fā)布:
這個(gè)是因?yàn)閍rm和51的構(gòu)架不一樣沒有為什么,芯片就是這樣設(shè)計(jì)的。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |