【补充】arm堆栈-(堆栈起始地址的选择)

来源:互联网 发布:java通讯模块是啥 编辑:程序博客网 时间:2024/05/24 20:07

学习于此

堆栈寄存器起始地址的设置:
程序刚启动并没有启动内存管理单元MMU,真正的内存地址如下S3C2440的储存空间映射图:

这里写图片描述

ARM 使用统一编址,所以,我们得把堆栈指针设置到内存地址范围内;NAND FLASH 启动时:

堆栈寄存器可以设为片内RAM 的最大地址:0x1000(4K)-4096
或者64MSDRAM的最大地址0x34000000(64M SDRAM的地址空间映射到BANK6,那么内存地址范围就是 0x30000000~0x34000000)。

之所以选择最大地址是因为栈的生长方向是向下的,所以选最高地址作为栈的起始地址可以预防堆栈增长而覆盖数据域;

原创粉丝点击