[ZLG-ARM] 共同探讨,直接用内部RAM调试

[复制链接]
2205|1
 楼主| williamyan 发表于 2007-4-25 15:17 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;由于所设计的工程以后会取消外部RAM和NOR&nbsp;FLASH,所有的代码需要全部在内部RAM上跑,所以调试的时候就不好使用ZLG的工程模板,所以将其中一个target修改了一下;自己参照其他三个scf文件写了一个Mem_d.scf如下:<br />ROM_LOAD&nbsp;0x40000000<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(vectors,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />;&nbsp;&nbsp;&nbsp;RW&nbsp;code&nbsp;Offset&nbsp;32K<br />&nbsp;&nbsp;&nbsp;&nbsp;IRAM&nbsp;+0<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Startup.o&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;os_cpu_a.o&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />;&nbsp;&nbsp;&nbsp;No&nbsp;ERAM<br /><br />;&nbsp;&nbsp;&nbsp;HEAP&nbsp;&nbsp;Offset&nbsp;32K&nbsp;+&nbsp;All&nbsp;RW&nbsp;and&nbsp;ZI&nbsp;area<br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heap.o&nbsp;(+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;&nbsp;&nbsp;STACKS&nbsp;Offset&nbsp;32K&nbsp;+&nbsp;All&nbsp;RW&nbsp;and&nbsp;ZI&nbsp;area&nbsp;+&nbsp;Heap&nbsp;area&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack.o&nbsp;(+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />}<br />同时也将MEMMAP设置成为0x02;<br />程序可以正常的加载,但是不知道跑着跑着就到了PrefetchAbort;<br />参考网上的资料,说如果碰到这种情况最好使用zlg设置好的PLL设置,由于我的板子上的晶振为24Mhz的,所以与ZLG的设置稍微不同,我是这样设置的:<br />#define&nbsp;Fosc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//晶振频率,10MHz~25MHz,应当与实际一至<br />#define&nbsp;Fcclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fosc&nbsp;*&nbsp;2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//系统频率,必须为Fosc的整数倍(1~32),且&lt=60MHZ&nbsp;&nbsp;&nbsp;4&nbsp;Fosc<br />#define&nbsp;Fcco&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;*&nbsp;4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz&nbsp;&nbsp;16&nbsp;Fosc<br />#define&nbsp;Fpclk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Fcclk&nbsp;/&nbsp;4)&nbsp;*&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//VPB时钟频率,只能为(Fcclk&nbsp;/&nbsp;4)的1&nbsp;~&nbsp;4倍1&nbsp;Foscs<br /><br />我觉得这样应该没有问题啊?有没有那位大哥大姐有过类似经验?共同探讨一下,(另外我的代码在DebugInExRAM或RelOUTChip下都是可以正常操作的,我想应该不是代码的问题)<br /><br />
zlgARM 发表于 2007-4-25 22:54 | 显示全部楼层

williamyan

如果您在FLASH和外部RAM里调试没问题,那么你在内部RAM里调试就无需修改时钟设置。<br />出现预取中止,有可能是堆栈设置的问题。<br />从您的分散加载文件里,看不到您的main文件在哪里。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部