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似乎就无法使用了,从而造成内存出界??还是说分散加载文件有问题???
期待各位指点迷津,谢谢! |