Re: 關於stack size的幾個問題
|
||||
---|---|---|---|---|
高級會員
|
版大你好、經過測試在讀取FSR1已可以了解、堆疊指標目前的位置、還有幾個小小的疑問。
一、如果沒想抓曾經使用的最大值、我是想說另外編寫一個變數做存取的比軟如果FSR1大於變數值就將FSR1存入變數來做測試、不知道是否可行。 二、如果上述的方法可行的話、在程式內是在中斷High level還是中斷low level內的堆疊會用到最多?還是那裡會是最多的地方呢? 三、還有一個堆疊存取說明的七層、因第八層是中斷在用的、如果我的堆疊區變大了是不是在堆疊未overflow都可以一直使用下去呢? 四、如果在主程式下已經在第三層了、到了中斷又call了三層的副程式、那就是六層了嗎?是不是這樣算丫? 例子: void callFunction1(char *data) { callFuncton2(data); } void callFunction2(char *data1) { printf("data1"); } void main(void) { char cc; callFunction1(&cc); } 上面的程式就算是三層了嗎?
發表於: 2009/4/23 9:52
|
|||
|
Re: 關於stack size的幾個問題
|
||||
---|---|---|---|---|
版主
|
堆疊指標是使用 FSR1 及 FSR2 。FSR1為堆疊指標,FSR2為框架指標。所以只要檢查 FSR1 就可以知道堆疊的目前位址。且指標可以看到 4K Byte 的大小,所以堆疊可以設多大呢?
發表於: 2009/4/22 16:44
|
|||
|
關於stack size的幾個問題
|
||||
---|---|---|---|---|
高級會員
|
我在下面網址看到的問與答
http://www.microchip.com.tw/modules/n ... t_id=11007#forumpost11007 內容是: 我使用18F4550 須將stack 闊展到384 將 .lkr 內容相關部份修改為如下 DATABANK NAME=pgr2 START=0x200 END=0x3F3 STACK SIZE=0x180 RAM=pgr2 可是執行時發現還是在 256 範圍內 超過的部份從 0x200 開始覆蓋\r 請問修改部份有錯嗎 STACK SIZE要如何才能超過 0x100 thanks!! 請問 一:在修改STACK SIZE後我要怎麼裀道他真正運行的範圍到底跑到多少呢?有沒辦法知道現在stack使用的數量是多少呢? 二:因為我在stack overflow reset enable是開啟的、在reset control register內有reset發生原因的旗標、請問在stack overflow reset有旗標可以查尋嗎?
發表於: 2009/4/22 14:04
|
|||
|