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