📄 initstack.s
字号:
;/*
;*********************************************************************************************************
;* File Name:InitStack.S
;* Description: 初始化各种模式的堆栈指针.
;* Author: kaka(sn.kaka@yahoo.com).
;*********************************************************************************************************
;*/
FIQ_Stack_Legth EQU 1024*5 ;// 快速中断模式堆栈空间.
IRQ_Stack_Legth EQU 1024*5 ;// 中断模式堆栈空间.
ABT_Stack_Legth EQU 10*4 ; //中止义模式堆栈空间.
UND_Stack_Legth EQU 10*4 ; //未定义模式堆栈
SVC_Stack_Legth EQU 1024*6 ; //管理模式堆栈的大小.
SYS_Stack_Legth EQU 1024*4 ;// 系统模式堆栈的大小(可以与其它模式堆栈共用).
USR_Stack_Legth EQU 1024*4
;/*
;*********************************************************************************************************
;* Description: 申请 RAM 空间.
;*********************************************************************************************************
;*/
AREA MyStacks, DATA, NOINIT, ALIGN=2
FiqStackSpace SPACE FIQ_Stack_Legth
IrqStackSpace SPACE IRQ_Stack_Legth
AbtStackSpace SPACE ABT_Stack_Legth
UndStackSpace SPACE UND_Stack_Legth
SvcStackSpace SPACE SVC_Stack_Legth
SysStackSpace SPACE SYS_Stack_Legth
UsrStackSpace SPACE USR_Stack_Legth
bottom_of_heap SPACE 256 ; //库函数的堆空间
EXPORT __user_initial_stackheap
EXPORT InitStack
AREA InitStack1,CODE,READONLY
CODE32
InitStack
MOV R0, LR
LDR SP, SvcStack ;// 设置管理模式堆栈.
MSR CPSR_c, #0x0d2 ;// 设置中断模式堆栈.
LDR SP, IrqStack
MSR CPSR_c, #0x0d1 ;// 设置快速中断模式堆栈.
LDR SP, FiqStack
MSR CPSR_c, #0x0d7 ;// 设置中止模式堆栈.
LDR SP, AbtStack
MSR CPSR_c, #0x0db ;// 设置未定义模式堆栈.
LDR SP, UndStack
MSR CPSR_c, #0x0df ;// 设置用户/系统模式堆栈.
LDR SP, SysStack
;MSR CPSR_c, #0x0D0 ;// 设置用户/系统模式堆栈.
;LDR SP, UsrStack ;//进入用户模式后处理器模式
;//将不能正常切换了,除非中断或者异常
MOV PC, R0
__user_initial_stackheap
LDR R0, =bottom_of_heap
MOV PC, LR
FiqStack DCD FiqStackSpace + FIQ_Stack_Legth
IrqStack DCD IrqStackSpace + IRQ_Stack_Legth
AbtStack DCD AbtStackSpace + ABT_Stack_Legth
UndStack DCD UndStackSpace + UND_Stack_Legth
SvcStack DCD SvcStackSpace + SVC_Stack_Legth
SysStack DCD IrqStackSpace + IRQ_Stack_Legth
UsrStack DCD UsrStackSpace + USR_Stack_Legth
;/*
;*********************************************************************************************************
END
;*********************************************************************************************************
;*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -