📄 startup.s
字号:
;** Function name: InitStack
;**
;** Descriptions: 初始化堆栈
;**
;** input parameters: None
;** Returned value: None
;**
;** Created by: Chenmingji
;** Created Date: 2004/02/02
;**-------------------------------------------------------------------------------------------------------
;** Modified by: LinEnqiang
;** Modified date: 2008-01-15
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
InitStack
MOV R0, LR
;Build the SVC stack
;设置管理模式堆栈
MSR CPSR_c, #0xd3
LDR SP, StackSvc
;Build the IRQ stack
;设置中断模式堆栈
MSR CPSR_c, #0xd2
LDR SP, StackIrq
;Build the FIQ stack
;设置快速中断模式堆栈
MSR CPSR_c, #0xd1
LDR SP, StackFiq
;Build the DATAABORT stack
;设置中止模式堆栈
MSR CPSR_c, #0xd7
LDR SP, StackAbt
;Build the UDF stack
;设置未定义模式堆栈
MSR CPSR_c, #0xdb
LDR SP, StackUnd
;Build the SYS stack
;设置系统模式堆栈
MSR CPSR_c, #0xd0
LDR SP, =StackUsr
MOV PC, R0
;/********************************************************************************************************
;** Function name: ResetInit
;**
;** Descriptions: 复位处理
;**
;** input parameters: None
;** Returned value: None
;**
;** Created by: Chenmingji
;** Created Date: 2004/02/02
;**-------------------------------------------------------------------------------------------------------
;** Modified by: LinEnqiang
;** Modified date: 2008-01-15
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
ResetInit
BL RunFirst
BL InitStack ;/* 初始化堆栈 */
BL TargetResetInit ;/* 目标板基本初始化 */
B __main ;/* 跳转到c语言入口 */
;/********************************************************************************************************
;** Function name: __user_initial_stackheap
;**
;** Descriptions: 库函数初始化堆和栈,不能删除
;**
;** input parameters: 参考库函数手册
;** Returned value: 参考库函数手册
;**
;** Created by: Chenmingji
;** Created Date: 2004/02/02
;**-------------------------------------------------------------------------------------------------------
;** Modified by: LinEnqiang
;** Modified date: 2008-01-15
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
__user_initial_stackheap
LDR R0, =bottom_of_heap
LDR R1, =StackUsr
LDR R2, =top_of_heap
LDR R3, =bottom_of_Stacks
MOV PC, LR
EXPORT _sys_exit
_sys_exit
B .
EXPORT __rt_div0
EXPORT fputc
EXPORT fgetc
EXPORT _sys_close
EXPORT _sys_write
EXPORT _sys_read
EXPORT _sys_istty
EXPORT _sys_seek
EXPORT _sys_ensure
EXPORT _sys_flen
EXPORT _sys_tmpnam
EXPORT _sys_command_string
__rt_div0
fputc
fgetc
_sys_close
_sys_write
_sys_read
_sys_istty
_sys_seek
_sys_ensure
_sys_flen
_sys_tmpnam
_sys_command_string
NOP
MOV R0, #0
MOV PC, LR
;/********************************************************************************************************
;** Function name: CrpData
;**
;** Descriptions: 加密芯片
;**
;** input parameters: NONE
;** Returned value: NONE
;**
;** Created by: Chenmingji
;** Created Date: 2004/03/27
;**-------------------------------------------------------------------------------------------------------
;** Modified by:
;** Modified date:
;**-------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
IF :DEF: EN_CRP
IF . >= 0x1fc
INFO 1,"\nThe data at 0x000001fc must be 0x87654321.\nPlease delete some source before this line."
ENDIF
CrpData
WHILE . < 0x1fc
NOP
WEND
CrpData1
DCD 0x87654321 ;/* 当此数为0x87654321时,用户 */
;/* 程序被保护 */
ENDIF
LTORG
StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1) * 4
StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1) * 4
StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1) * 4
StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1) * 4
StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1) * 4
AREA MyStacks, DATA, NOINIT, ALIGN = 2; ;/* 分配堆栈空间 */
SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;/* 管理模式堆栈空间 */
IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;/* 中断模式堆栈空间 */
FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;/* 快速中断模式堆栈空间 */
AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ;/* 中止义模式堆栈空间 */
UndtStackSpace SPACE UND_STACK_LEGTH * 4 ;/* 未定义模式堆栈 */
AREA HeapBottom, DATA, NOINIT
bottom_of_heap SPACE 1
AREA StackBottom, DATA, NOINIT
bottom_of_Stacks SPACE 1
AREA HeapTop, DATA, NOINIT
top_of_heap
AREA StacksTop, DATA, NOINIT
StackUsr
END
;/********************************************************************************************************
;** End Of File
;********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -