|
|||||||||||
| 技術(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 |
關(guān)于啟動(dòng)代碼中的異常向量表的問(wèn)題。 |
| 作者:lvgaopan 欄目:ARM技術(shù) |
;中斷向量表 Reset LDR PC, ResetAddr (1) ... ... ResetAddr DCD ResetInit (2) ... ... ResetInit LDR R0, =PINSEL2 (3) ... ... ResetInit是復(fù)位初始化程序入口,代碼(2)分配了一個(gè)字的存儲(chǔ)器單元,用于保存ResetInit的地址(也就是代碼(3)的地址),而代碼(1)則將代碼(2)分配的存儲(chǔ)器單元內(nèi)保存的地址裝載到PC中。 我的問(wèn)題是,這段程序的目的是將ResetInit的地址裝載到PC中,達(dá)到此目的,一條指令就夠了: LDR PC,=ResetInit 為什么還要使用代碼(2)來(lái)分配一個(gè)字的空間來(lái)存儲(chǔ)ResetInit的地址呢?是不是有其它的目的?請(qǐng)指教,謝謝! * - 本貼最后修改時(shí)間:2006-11-5 16:24:59 修改者:lvgaopan |
| 2樓: | >>參與討論 |
| 作者: fent 于 2006/12/14 16:53:00 發(fā)布:
發(fā)現(xiàn)這個(gè)問(wèn)題倒是沒(méi)有留意過(guò)!哪位高手指點(diǎn)下? |
|
| 3樓: | >>參與討論 |
| 作者: zlgarm 于 2006/12/14 18:48:00 發(fā)布:
關(guān)于啟動(dòng)代碼中的異常向量表的問(wèn)題 確!跋蛄勘硭袛(shù)據(jù)32位累加和為0”。以滿足有效用戶代碼的條件。 請(qǐng)參考《ARM嵌入式系統(tǒng)基礎(chǔ)教程》第161頁(yè)中的“有效的用戶代碼”小節(jié)。 |
|
| 4樓: | >>參與討論 |
| 作者: roophoon 于 2006/12/14 19:08:00 發(fā)布:
很簡(jiǎn)單 這個(gè)問(wèn)題牽涉到LDR指令的使用,LDR指令只有通過(guò)文字池才能獲得全空間的任意跳轉(zhuǎn)。沒(méi)有第二句,只能在32K的范圍內(nèi)跳轉(zhuǎn)。當(dāng)然,這在有些情況下運(yùn)行起來(lái)是沒(méi)有問(wèn)題的,書(shū)中這么做的目的是為了保險(xiǎn)起見(jiàn),不知這樣的解釋你能不能滿意? |
|
| 5樓: | >>參與討論 |
| 作者: db10 于 2006/12/14 20:36:00 發(fā)布:
呵呵 3和4樓講的都是對(duì)的。 |
|
| 6樓: | >>參與討論 |
| 作者: rtfsc 于 2006/12/15 14:47:00 發(fā)布:
- 一條指令是4個(gè)字節(jié),所以LDR PC,=ResetInit中的ResetInit就不可能是4個(gè)字節(jié)(4個(gè)字節(jié)就占滿整條指令啦)所以跳轉(zhuǎn)范圍就受限。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |