历史上的今天
返回首页

历史上的今天

今天是:2025年03月29日(星期六)

2020年03月29日 | 有关设置栈指针sp寄存器r13

2020-03-29 来源:eefocus

为什么在调用C程序时,要在汇编(.S)文件中设置栈指针sp(Stack Pointer) r13?还有设置栈指针的时候赋的值是多少时如何确定的。


.text

.global _start


_start:


/* 设置内存: sp 栈 */

ldr sp, =4096 /* nand启动 */

// ldr sp, =0x40000000+4096 /* nor启动 */

/* 调用main */

bl main


halt:

b halt


为什么要nand启动设置成4096,nor启动设置为0x40000000+4096?


1.SDRAM的地址是 0x30000000 - 0x40000000。


2.Nand启动时,片内4K RAM基地址为0(在0地址处),Nor Flash不可访问。


3.Nor启动时,片内RAM地址为0x4000 0000,片内RAM在0x4000 0000往后的4k 此时的栈顶可以设置到内存的上限 0x40000000 + 4k(4096)。


4. 调用C函数时,返回地址、局部变量一般都保存在栈里,所以调用C程序时要设置栈指针


5. 之所以设成4096,是由于S4C2410、S3C2440从NAND Flash启动时,它的内部4K RAM的地址为0~4095,可以把栈指针指向最后──其实你也可以指向0~4095中间某个位置,只要不破坏要运行的代码就可以

推荐阅读

史海拾趣

问答坊 | AI 解惑

利用LED指示电流幅度的电路设计

利用LED指示电流幅度的电路设计 图中LED的发光强度与负载电流成正比,该电路的设计目的是提供一个非常紧凑的电路来替代某些天文学设备中12V电源线上的电表。这种设备包含工作状况不可视的小功率加热元件(防露元件)。不过,当加热器接通时,LED就 ...…

查看全部问答>

正负电源 自己做的

本帖最后由 paulhyde 于 2014-9-15 03:05 编辑 可输出正负12和正负5伏的电源,自己做的电路图  …

查看全部问答>

开关电源设计资料及电子书

开关电源设计资料及电子书…

查看全部问答>

w83977 如何初始化扩展功能(如串口)并使能?

    华邦的w83977芯片,初始化进入扩展功能模式只能读到它的ID号为0x97、device version为 0X74,其他的寄存器都无法正常读写,就连写CR30为1来激活一个功能都失败了(如激活UART_A),不知这个芯片的初始化有什么需要注意的地方?   ...…

查看全部问答>

两个关于计算机网络的问题(无线网络理论知识)

第一个问题是关于hidden terminal的,问题是假如网络环境内的所有terminal都可以侦测到其他terminal,为什么还会有冲突的发生? 第二个问题是在下述MAC scheme中(FDMA, fixed TDMA, Aloha, Slotted Aloha, Reservation Aloha, Reservation TDMA, M ...…

查看全部问答>

wake-up时,没有收到电源管理的D0

我正在调试Windows Mobile下的Audio Driver,发现: 在某些情况下,系统wake-up回来,可以收到PowerUp,但是不能收到D0 不知道哪位兄弟碰到过这种情况?…

查看全部问答>

波形发生器

帮忙啊     要求:利用51单片机和dac0832设计方波、锯齿波、三角波、梯形波、且波形极性周期可变     求代码  原理图    谢谢…

查看全部问答>

【TI阅读】Advancing the Capabilities of Discrete Power MOSFETs

本帖最后由 dontium 于 2015-1-23 13:30 编辑 mosfets ,TI也做这个? …

查看全部问答>

FPGA与CPLD的对比(Altera)

Altera的FPGA与CPLD结构与性能对比:FPGA与CPLD的硬件对比FPGA与CPLD的特性对比…

查看全部问答>

蓝牙技术联盟发布健身类传感器新标准,为下一代传感器铺路

大家所熟知的蓝牙技术背后有一个名叫Bluetooth SIG的组织,该组织负责制定蓝牙技术的各项指标和准则。近日,Bluetooth SIG又公布了两项全新标准(http://www.bluetooth.com/Pages/Press-Releases-Detail.aspx?ItemID=156),很可能会促成一大批医 ...…

查看全部问答>