主题 : 设置栈指针的问题 复制链接 | 浏览器收藏 | 打印
好好学习,天天向上
级别: 侠客
UID: 22440
精华: 0
发帖: 106
金钱: 530 两
威望: 106 点
综合积分: 212 分
注册时间: 2010-06-01
最后登录: 2015-06-09
楼主  发表于: 2011-10-06 10:24

 设置栈指针的问题

@******************************************************************************
@ File:head.s
@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行
@******************************************************************************      
  
.text
.global _start
_start:
                                            @函数disable_watch_dog, memsetup, init_nand, nand_read_ll在init.c中定义
            ldr     sp, =4096               @设置堆栈
            bl      disable_watch_dog       @关WATCH DOG
            bl      memsetup                @初始化SDRAM
            bl      nand_init               @初始化NAND Flash

                                            @将NAND Flash中地址4096开始的1024字节代码(main.c编译得到)复制到SDRAM中
                                            @nand_read_ll函数需要3个参数:
            ldr     r0,     =0x30000000     @1. 目标地址=0x30000000,这是SDRAM的起始地址
            mov     r1,     #4096           @2.  源地址   = 4096,连接的时候,main.c中的代码都存在NAND Flash地址4096开始处
            mov     r2,     #1024           @3.  复制长度= 1024(bytes),对于本实验的main.c,这是足够了
            bl      nand_read               @调用C函数nand_read

            ldr     sp, =0x34000000         @设置栈
            ldr     lr, =halt_loop          @设置返回地址
            ldr     pc, =main               @b指令和bl指令只能前后跳转32M的范围,所以这里使用向pc赋值的方法进行跳转
halt_loop:
            b       halt_loop

这段函数中的设置栈的SP是什么原理,是一定要指向栈顶么?
畅游在知识的海洋...
级别: 论坛版主
UID: 33629
精华: 4
发帖: 554
金钱: 3075 两
威望: 615 点
综合积分: 1188 分
注册时间: 2010-12-03
最后登录: 2015-09-22
1楼  发表于: 2011-10-06 10:29
SP指向栈底!
好好学习,天天鲁管
好好学习,天天向上
级别: 侠客
UID: 22440
精华: 0
发帖: 106
金钱: 530 两
威望: 106 点
综合积分: 212 分
注册时间: 2010-06-01
最后登录: 2015-06-09
2楼  发表于: 2011-10-06 11:44
这个栈的栈底是在内存中的高地址处还是在低地址处?
畅游在知识的海洋...
级别: 论坛版主
UID: 33629
精华: 4
发帖: 554
金钱: 3075 两
威望: 615 点
综合积分: 1188 分
注册时间: 2010-12-03
最后登录: 2015-09-22
3楼  发表于: 2011-10-06 11:48
高地址,linux的堆栈从高地址往低地址增长
好好学习,天天鲁管
好好学习,天天向上
级别: 侠客
UID: 22440
精华: 0
发帖: 106
金钱: 530 两
威望: 106 点
综合积分: 212 分
注册时间: 2010-06-01
最后登录: 2015-06-09
4楼  发表于: 2011-10-06 12:15
喔,谢谢
级别: 新手上路
UID: 73351
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-07-07
最后登录: 2012-08-06
5楼  发表于: 2012-08-05 19:45

 回 3楼(wuweidong) 的帖子

它是向下增长的,所以是指向的是栈顶,属于FD