打印

LPC2214 扩展RAM

[复制链接]
1822|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiugantang511|  楼主 | 2011-9-26 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ROM_LOAD 0x00004000
{
    ROM_EXEC 0x00004000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
    IRAM 0x40000000
    {
        Startup.o (MyStacks)
    }
   
    STACKS_BOTTOM +0 UNINIT
    {
        Startup.o (StackBottom)
    }
    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    }
   
    ERAM 0x80000000
    {
        * (+RW,+ZI)
    }
    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }
    HEAP_BOTTOM 0x80200000 UNINIT
    {
        Startup.o (HeapTop)
    }
}

这是我用的分散加载文件,用的是LPC2214芯片,它内部有16K RAM,我外部再扩展了2M Byte的SRAM,那么总共的RAM应该为2M+16K吧
定义:unsigned char NoteBuf[2M Byte];
定义:unsigned char EpBuf[256]={0x00,0x01,ox43,...,0xff};
      int pointer;
     ......
    int count;  //都为全局变量,总共大约2M+5K Byte.

定义了这些变量以后,编译通过,无错误,无警告.
但是运行时,初始化过的EpBuf数组,数据全为0,何解?
并且显示赋值后,数据还是为0.(蜂鸣器能正确的响).
但是定义:
unsigned char NoteBuf[2M-48K];//或者减去其他的大小也可以
编译和运行无错.

总结:给我的感觉就是用了外部的2M的SRAM,内部的16K RAM似乎就无法使用了,从而造成内存出界??还是说分散加载文件有问题???
期待各位指点迷津,谢谢!

相关帖子

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

本版积分规则

0

主题

2

帖子

1

粉丝