|
|||||||||||
| 技術(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 |
LPC2136分散加載描述文件問題,急!!! |
| 作者:dandywang 欄目:ARM技術(shù) |
現(xiàn)在用LPC2136的芯片,按照ZLG的教程修改mem_b.scf 文件進(jìn)行片內(nèi)RAM調(diào)試,可每次進(jìn)入ADS就會(huì)停留在"取數(shù)據(jù)中止". 修改的mem_b.scf如下: ROM_LOAD 0x40000000 { ROM_EXEC 0x40000000 { Startup.o (vectors, +First) * (+RO) } IRAM 0x40008000 { Startup.o (MyStacks) * (+RW,+ZI) } HEAP +0 UNINIT { Startup.o (Heap) } STACKS 0x40002000 UNINIT { Startup.o (Stacks) } } 請(qǐng)問各位這是什么問題? 應(yīng)如何解決?
|
| 2樓: | >>參與討論 |
| 作者: g1u2b3h4 于 2006/12/22 11:07:00 發(fā)布:
RE 片內(nèi)調(diào)試應(yīng)該是mem_c.scf文件才對(duì)吧! |
|
| 3樓: | >>參與討論 |
| 作者: dandywang 于 2006/12/22 13:10:00 發(fā)布:
RE g1u2b3h4 mem_c.scf 是片內(nèi)FLASH調(diào)試模式 |
|
| 4樓: | >>參與討論 |
| 作者: hqgboy 于 2006/12/22 14:20:00 發(fā)布:
最后 STACKS 0x40002000 UNINIT的修改。 根據(jù)2131的容量,計(jì)算2136的容量。 |
|
| 5樓: | >>參與討論 |
| 作者: dandywang 于 2006/12/22 16:50:00 發(fā)布:
IRAM 0x40008000 用改嗎 IRAM 0x40008000 這里是什么意思,要如何修改 |
|
| 6樓: | >>參與討論 |
| 作者: g1u2b3h4 于 2006/12/22 16:52:00 發(fā)布:
re mem_b.scf 是片外RAM調(diào)試方式吧! |
|
| 7樓: | >>參與討論 |
| 作者: 汽車電子 于 2006/12/22 18:00:00 發(fā)布:
Keil RV和RTL使用簡介 里面說到分散加載,在我網(wǎng)站下載 |
|
| 8樓: | >>參與討論 |
| 作者: coolbo83 于 2006/12/22 20:22:00 發(fā)布:
RE:dandywang ROM_EXEC 0x40000000 是指你的代碼開始存放的地址 IRAM 0x40008000 是指你的變量存放在內(nèi)部RAM的起始地址 STACKS 0x40002000 UNINIT 是指你的內(nèi)部RAM結(jié)束的地址 dandywang,按照上述,你知道為什么會(huì)取數(shù)據(jù)中止了嗎? 結(jié)束地址是0x40002000,你怎么在0x40008000開始存放你的變量呀?? 所以,IRAM 0x4000xxxx這個(gè)值肯定要在 0x40000000 和STACKS 0x4000xxxx UNINIT之間。至于IRAM 0x4000xxxx這個(gè)值是多少,就看你的程序了。 STACKS 0x4000xxxx UNINIT最好與你對(duì)應(yīng)的芯片內(nèi)部RAM的大小相同,小于也可以,但絕對(duì)不能大于。 |
|
| 9樓: | >>參與討論 |
| 作者: dandywang 于 2006/12/26 16:37:00 發(fā)布:
RE coolbo83 非常感謝coolbo83 的詳細(xì)講解! |
|
| 10樓: | >>參與討論 |
| 作者: fent 于 2006/12/27 15:43:00 發(fā)布:
地址范圍錯(cuò)了! 您好! (以下是個(gè)人理解,不一定對(duì),錯(cuò)了,希望各位多多指教。 如果是周立功的DEMO的話: Stacks 是系統(tǒng)模式的SP, MyStacks是除系統(tǒng)模式以外的其他模式SP, 并沒有說誰是開始地址誰是結(jié)束地址。 LPC2136的RAM是32K,即是范圍是0x4000 0000 到 0x4000 8000 所以看這個(gè)文件錯(cuò)在這里: IRAM 0x40008000 { Startup.o (MyStacks) * (+RW,+ZI) } 1. Startup.o (MyStacks) :放在從0x4000 8000開始沒有錯(cuò),因?yàn)闂J沁f減的,但是如果是周立功的DEMO的話,還有 StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4 StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4 StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4 StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4 StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4 所以范圍就超出了0x4000 8000這個(gè)范圍了! 2. * (+RW,+ZI)這個(gè)也不對(duì),因?yàn)檫@里的指的是所有的變量是從0x40008000開始往高地址放置的,很明顯也超出了0x4000 8000這個(gè)范圍了。 所以建議改成如下: IRAM 0x40008000 --〉〉改為0x40000000 { Startup.o (MyStacks) * (+RW,+ZI) } * - 本貼最后修改時(shí)間:2006-12-27 15:44:40 修改者:fent |
|
| 11樓: | >>參與討論 |
| 作者: apple 于 2007/1/21 1:50:00 發(fā)布:
我也碰到同樣問題 在LPC2132上的RAM用JTAG調(diào)試成功,FLASH也沒問題, 換上剛買的2136程序就亂了,JTAG下載在RAM中跑不起來, 跑不到MAIN,調(diào)用庫涵數(shù)就跑到取指錯(cuò)誤中斷,燒FLASH沒有問題,我沒有改任何,這是為什么? |
|
| 12樓: | >>參與討論 |
| 作者: luhuaren 于 2007/1/21 11:04:00 發(fā)布:
RE 樓上的兄弟,你要看看你的分散加載文件對(duì)不對(duì)。。。下載到RAM里跑不起來很可能是你的代碼沒有下載到正確的RAM地址里去。。 |
|
| 13樓: | >>參與討論 |
| 作者: apple 于 2007/1/21 19:49:00 發(fā)布:
回復(fù) 按理說,2136的FLASH和RAM都比2132大,代碼和配置文件都不用改就直接可以運(yùn)行, 可是情況就是這樣,程序亂飛,重焊了一塊2136板也是這樣. |
|
| 14樓: | >>參與討論 |
| 作者: zmycool 于 2007/1/26 11:55:00 發(fā)布:
RE: 10樓 我看過10樓的朋友說: LPC2136的RAM是32K,即是范圍是0x4000 0000 到 0x4000 8000 所以看這個(gè)文件錯(cuò)在這里: IRAM 0x40008000 { Startup.o (MyStacks) * (+RW,+ZI) } 1. Startup.o (MyStacks) :放在從0x4000 8000開始沒有錯(cuò),因?yàn)闂J沁f減的, 請(qǐng)問怎么知道是這個(gè)棧是遞減的呢? 另外,你第二條說的意思,又是遞增的!怎么回事呢?有點(diǎn)不明白,請(qǐng)指教!其他朋友理解的話,可以發(fā)表自己的看法。謝謝了! |
|
| 15樓: | >>參與討論 |
| 作者: applo 于 2007/1/27 8:47:00 發(fā)布:
14樓該學(xué)習(xí) 14樓該學(xué)習(xí)一下,你什么都不懂,也來討論。一點(diǎn)基礎(chǔ)都沒有。 |
|
| 16樓: | >>參與討論 |
| 作者: zmycool 于 2007/4/3 14:12:00 發(fā)布:
就是來討教的, 只是想學(xué)點(diǎn)東西 |
|
| 17樓: | >>參與討論 |
| 作者: ada 于 2008/1/7 10:03:40 發(fā)布:
簡單點(diǎn)說是不是這樣: iram的地址為0x4000 0000+任意; sp地址為0x4000 0000+任意+片內(nèi)ram的大小; 呢?????? 另:我的理解是堆棧是設(shè)定在片內(nèi)ram的結(jié)束處的
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |