打印
[ZLG-ARM]

LPC2214 扩展RAM

[复制链接]
2386|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiugantang511|  楼主 | 2011-9-26 11:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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似乎就无法使用了,从而造成内存出界??还是说分散加载文件有问题???
期待各位指点迷津,谢谢!

相关帖子

沙发
daisyly| | 2011-9-26 15:40 | 只看该作者
STACKS_BOTTOM +0 UNINIT
    {
        Startup.o (StackBottom)
    }
    STACKS 0x40004000 UNINIT
    {
这就没看懂。

使用特权

评论回复
板凳
yld| | 2011-9-28 16:21 | 只看该作者
这么新的手  感觉很难回答你的问题:( 去研究一下以前的回答吧 分散加载是一大门学问 最好深究一下 不要简单的直接当单片机来看待

使用特权

评论回复
地板
a253752964| | 2011-10-11 20:47 | 只看该作者
3# yld 看来你是高手啊

使用特权

评论回复
5
ty新气象| | 2011-10-18 10:45 | 只看该作者
:)

使用特权

评论回复
6
七叶一枝花| | 2011-10-18 21:56 | 只看该作者
我都不敢问了。

使用特权

评论回复
7
shuaibaobao| | 2011-11-25 20:38 | 只看该作者
感觉你的问题很调转。

使用特权

评论回复
8
wksljx| | 2011-11-25 20:46 | 只看该作者
我这种新手都不好意思问。

使用特权

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

本版积分规则

0

主题

2

帖子

1

粉丝