|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
初學ARM,遇到一個關(guān)于內(nèi)存映射的問題 |
| 作者:jimsboy 欄目:ARM技術(shù) |
ATMEL的9200 上面說復位時,片內(nèi)ROM的地址為0000。程序從這里開始執(zhí)行。我覺得這和單片機沒什么區(qū)別,但重映射后,它的地址成了0x0010 0000,而片內(nèi)RAM變成了0x0000 0000。請問在這個重映射過程中。指令原來是從ROM中得到了,突然變成了從RAM中得到,除非RAM和ROM中的數(shù)據(jù)完全一致,否則應該會出錯的。請問它倒底是怎么解決這個問題的? |
| 2樓: | >>參與討論 |
| 作者: weiganglnu 于 2005/6/17 22:15:00 發(fā)布:
重映射前,重映射后 按照實際物理地址走.重映射后也按照實際物理地址走,只不過虛地址變了,代碼將按照虛擬地址取出實際地址中的內(nèi)容.細節(jié)就得自己計算. |
|
| 3樓: | >>參與討論 |
| 作者: suntds 于 2005/6/28 21:47:00 發(fā)布:
是的 事實上在remap前是得把ROM里的程序copy到片內(nèi)RAM里 |
|
| 4樓: | >>參與討論 |
| 作者: from25 于 2005/6/30 13:13:00 發(fā)布:
對這種思路是能接受的,但~~~~~~~ 看了挺多書的,對這種思路是理解的 但具體步驟怎么來做一直不得法,有很多疑問, 請大家不厭其煩詳細解釋解釋。 問題1。這種地址重映射是由連接器來實現(xiàn)還是要自己編程序來實現(xiàn)? 2。當要地址重映射,是否必須設(shè)置rwpi,ropi 重映射后,映射寄存器怎么辦?? 3。如果是自己來編程實現(xiàn)重映射是不是一定要使能MMU,并且設(shè)定地址變換表寄存器。 MMU和地址變換表寄存器是獨立的嗎?? 4。初始入口必須是0X0地址嗎,固定域一定要是0X0開始嗎? 5。具體的步驟是怎樣的? 如果用匯編,下面是我的做法 第一步:跳轉(zhuǎn)到復位向量,該處程序是把前面的中斷向量和程序從ROM到RAM 第二步:設(shè)好各模式下的數(shù)據(jù)棧 第三步:設(shè)好地址變換表寄存器,使能MMU,最后來個GOTO 0X0就完成了 如果用C來 對于有MAIN的程序,就不需要自己來做拷貝ROM到RAM和設(shè)置數(shù)據(jù)棧的工作了 * - 本貼最后修改時間:2005-6-30 16:05:32 修改者:from25 |
|
| 5樓: | >>參與討論 |
| 作者: from25 于 2005/7/1 15:24:00 發(fā)布:
郁悶!自己頂一下 摟主搞清楚了嗎? 搞清的話也來幫幫我吧 * - 本貼最后修改時間:2005-7-1 15:26:06 修改者:from25 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |