打印
[ZLG-ARM]

共同探讨,直接用内部RAM调试

[复制链接]
1055|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
williamyan|  楼主 | 2007-4-25 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    由于所设计的工程以后会取消外部RAM和NOR FLASH,所有的代码需要全部在内部RAM上跑,所以调试的时候就不好使用ZLG的工程模板,所以将其中一个target修改了一下;自己参照其他三个scf文件写了一个Mem_d.scf如下:
ROM_LOAD 0x40000000
{
    ROM_EXEC 0x40000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

;   RW code Offset 32K
    IRAM +0
    {
        ;Startup.o (+RW,+ZI)
        ;os_cpu_a.o (+RW,+ZI)
        * (+RW,+ZI)
    }

;   No ERAM

;   HEAP  Offset 32K + All RW and ZI area
    HEAP +0 UNINIT
    {
        heap.o (+ZI)
    }
    
;   STACKS Offset 32K + All RW and ZI area + Heap area 
    STACKS +0 UNINIT
    {
        stack.o (+ZI)
    }


}
同时也将MEMMAP设置成为0x02;
程序可以正常的加载,但是不知道跑着跑着就到了PrefetchAbort;
参考网上的资料,说如果碰到这种情况最好使用zlg设置好的PLL设置,由于我的板子上的晶振为24Mhz的,所以与ZLG的设置稍微不同,我是这样设置的:
#define Fosc            24000000                   //晶振频率,10MHz~25MHz,应当与实际一至
#define Fcclk           (Fosc * 2)                  //系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ   4 Fosc
#define Fcco            (Fcclk * 4)                 //CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz  16 Fosc
#define Fpclk           (Fcclk / 4) * 2            //VPB时钟频率,只能为(Fcclk / 4)的1 ~ 4倍1 Foscs

我觉得这样应该没有问题啊?有没有那位大哥大姐有过类似经验?共同探讨一下,(另外我的代码在DebugInExRAM或RelOUTChip下都是可以正常操作的,我想应该不是代码的问题)

相关帖子

沙发
zlgARM| | 2007-4-25 22:54 | 只看该作者

williamyan

如果您在FLASH和外部RAM里调试没问题,那么你在内部RAM里调试就无需修改时钟设置。
出现预取中止,有可能是堆栈设置的问题。
从您的分散加载文件里,看不到您的main文件在哪里。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝