ID482769950

关于ARM栈初始化起始地址

堆栈寄存器起始地址的设置:

    程序刚启动并没有启动内存管理单元MMU,真正的内存地址如下S3C2440的储存空间映射图:

 

 

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

    NAND FLASH 启动时:

        堆栈寄存器可以设为片内RAM 的最大地址:0x1000(4K)

        或者64MSDRAM的最大地址0x34000000(64M SDRAM的地址空间映射到BANK6,那么内存地址范围就是 0x30000000~0x34000000)。


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


评论