微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > lpc2124 启动代码详解

lpc2124 启动代码详解

时间:11-11 来源:互联网 点击:

各模式下定义的堆栈地址. 本段将完成堆栈相关的常量

UND_Stack_Size EQU 0x00000000;未定义模式栈
SVC_Stack_Size EQU 0x00000008;超级用户模式栈
ABT_Stack_Size EQU 0x00000000;终止模式栈
FIQ_Stack_Size EQU 0x00000000;快速中断栈
IRQ_Stack_Size EQU 0x00000080;普通中断堆栈
USR_Stack_Size EQU 0x00000400;用户模式定义栈

;//设置堆栈大小,
ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size + \
FIQ_Stack_Size + IRQ_Stack_Size);//总堆栈长度

; 初始化栈空间
;//开辟堆栈段,定义为可读可写,不初始化内存单元或将内存写0,字节对齐 ,arm 字为32位
; 定义一个数据段,名为STACK,NOINIT - 仅仅保留内存单元,还没有写入值,可读写,ALIGN=3 - 按字节对齐。
AREA STACK, NOINIT, READWRITE, ALIGN=3

;//堆栈大小的设置,各公司写的启动代码有所不同,但是不影响大局,可以借鉴一些你认为比较简单的启动代码
;//,然后写自己的堆栈地址和大小设置程序.
; 分配内存,用户模式栈名为Stack_Mem,大小为1024字节;分配 ISR_Stack_Size的内存空间,在USR_Stack之上?。

Stack_Mem SPACE USR_Stack_Size ;分配 0x00000400 长度空间,并置初始化为 0
__initial_sp SPACE ISR_Stack_Size ;申请堆栈内存空间. SPACE 为伪指令

Stack_Top;//堆栈段内容结束, 在这里放个标号,用来获得堆栈顶部地址
; 下面一段转来的对话
; Hello,

; could anybody tell me the information of this code line

; Stack_Mem SPACE USR_Stack_Size
; __initial_sp SPACE ISR_Stack_Size

; Stack_Top

; __initial_sp is the whole stack size - thats clear. But which information has the last code line Stack_Top?
; And why is the ; USR_Stack_Size in comparison to the other Stack_Sizes so big?

; The user-stack is for your application, with all calls and auto variables.

; The ISR stack is just for interrupt service routines, and they normally dont consume a l
; ot of stack space - especially if you dont allow them to nest.

; Have you spent some time reading up on the ARM architecture?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top