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