1,我用的是ARM Executable Image for LPC2200模板,未添加任何代码时,ARM Linker里的Scatter选mem_c.scf,编译显示 Error:L6203E:Entry point<br />(0x80000000)lie within non-root region ERAM<br />这是什么原因啊?加另外2个*.scf都是可以正常编译的<br /><br />2,Startup.s中<br /> AREA HeapTop, DATA, NOINIT<br />top_of_heap<br /> 这段代码,声明了一个DATA, NOINIT的区域HeapTop,可似乎没分配空间给它,top_of_heap后面没跟 SPACE **,<br />能理解成HeapTop不占用任何空间,top_of_heap仅指向大小为0的HeapTop区域首地址么?<br /><br />3,mem_c.scf中,<br />ROM_LOAD 0x0<br />{<br />//将vectors放在以0x00000000 为首地址的区域,<br />//此区域类型为ROM_EXEC(执行ROM?),作为RO段?<br /> ROM_EXEC 0x00000000 //ROM_EXEC,IMAR都是ADS关键字?<br /> {<br /> Startup.o (vectors, +First)<br /> * (+RO)<br /> }<br /><br /> IRAM 0x40000000 //“IRAM”说明之后的地址是片内的RAM?此段是将MyStacks区域放在以0x40000000为首的区域?<br /> {<br /> Startup.o (MyStacks)<br /> }<br /><br />//STACKS_BOTTOM +0 如何理解?是从上面的0x40000000开始,便宜MyStacks<br />//大小,然后再偏移+0,作为StackBottom区域的首地址?<br />//MyStacks区域占20字节,StackBottom从0x40000014开始?<br /> STACKS_BOTTOM +0 UNINIT <br /> {<br /> Startup.o (StackBottom)<br /> }<br /><br /> STACKS 0x40004000 UNINIT <br /> {<br /> Startup.o (Stacks)<br /> }<br /><br /> ERAM 0x80000000 //ERAM表明后面是外扩RAM起始地址?并将以此地址为首的区域作为RW和ZI段?<br /> {<br /> * (+RW,+ZI)<br /> }<br /><br /> HEAP +0 UNINIT //Heap区域从0x80000000开始?占1字节?<br /> {<br /> Startup.o (Heap)<br /> }<br /><br />// AREA Heap, DATA, NOINIT<br />// bottom_of_heap SPACE 1<br /> HEAP_BOTTOM 0x80080000 UNINIT //将0x80080000作为HeapTop区域的首地址么?<br /> {<br /> Startup.o (HeapTop)<br /> }<br />}<br /><br />准备换2214芯片了,这样理解.scf文件是否有问题?有人能讲解下么?论坛上没找到相关的说明 |
|