<br />工程模板中mem_c.scf如下:<br />ROM_LOAD 0x0<br />{<br /> ROM_EXEC 0x00000000<br /> {<br /> Startup.o (vectors, +First)<br /> * (+RO)<br /> }<br /><br /> IRAM 0x40000000<br /> {<br /> Startup.o (MyStacks)<br /> * (+RW,+ZI)<br /> }<br /><br /> HEAP +0 UNINIT<br /> {<br /> Startup.o (Heap)<br /> }<br /><br /> STACKS 0x40004000 UNINIT<br /> {<br /> Startup.o (Stacks)<br /> }<br />}<br />由于堆栈是向下生长的,因此STACKS 的起始地址设置为0x40004000可以理解,但是为什么HEAP的起始地址是接IRAM的呢,如果向下生长的话不是把变量的一部分给覆盖了吗?是不是应该这样写:<br />ROM_LOAD 0x0<br />{<br /> ROM_EXEC 0x00000000<br /> {<br /> Startup.o (vectors, +First)<br /> * (+RO)<br /> }<br /><br /> IRAM 0x40000000<br /> {<br /> Startup.o (MyStacks)<br /> * (+RW,+ZI)<br /> }<br /><br /> HEAP 0x40004000 UNINIT<br /> {<br /> Startup.o (Heap)<br /> }<br /><br /> STACKS +0 UNINIT<br /> {<br /> Startup.o (Stacks)<br /> }<br />} |
|