lpc2124 启动代码详解
各模式下定义的堆栈地址. 本段将完成堆栈相关的常量
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?
lpc2124启动代 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)