尝试为Atmel sam3s运行blinky样本并检查堆栈指针... SP在main函数的开头具有值0x20000238,对于此样本,它与Ram base + RW + ZI相等。
该芯片的基本RAM地址为:0x20000000 总ram大小为:0x10000
我预计sp会在0x20010000上初始化并且会下降。 任何人都能解释我是不是错了吗?
答案 0 :(得分:0)
正如派特所说(他/她应该回答这个问题所以我可以接受它,我想), 我错误地认为堆栈默认放在RAM的末尾。但我认为把它放在那里是明智的。
这就是我通过更改散点文件
为我的SAM3S micro做的方法LR_IROM1 0x00400000 0x00080000 { ; load region size_region
ER_IROM1 0x00400000 0x00080000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00010000 { ; RW data
.ANY (+RW +ZI)
}
RW_STACK 0x2000C000 UNINIT 0x4000 { ; STACK data
*.o (STACK)
}
}
RAM base = 0x20000000
总RAM = 64 kb
预期堆栈大小= 16 kb