📄 startup.s
字号:
LDR R0, =EMCStaticConfig0
STMIA R0!, {R1-R7}
LDR R1, =STATICCFG1 ;/* 配置EMCStaticConfig1 */
LDR R2, =WAITWEN1 ;/* 配置EMCStaticWaitWen1 */
LDR R3, =WAITOEN1 ;/* 配置EMCStaticWaitOen1 */
LDR R4, =WAITRD1 ;/* 配置EMCStaticWaitRd1 */
LDR R5, =WAITPAGE1 ;/* 配置EMCStaticWaitPage1 */
LDR R6, =WAITWR1 ;/* 配置EMCStaticWaitWr1 */
LDR R7, =WAITTURN1 ;/* 配置EMCStaticWaitTurn1 */
LDR R0, =EMCStaticConfig1
STMIA R0!, {R1-R7}
LDR R1, =STATICCFG2 ;/* 配置EMCStaticConfig2 */
LDR R2, =WAITWEN2 ;/* 配置EMCStaticWaitWen2 */
LDR R3, =WAITOEN2 ;/* 配置EMCStaticWaitOen2 */
LDR R4, =WAITRD2 ;/* 配置EMCStaticWaitRd2 */
LDR R5, =WAITPAGE2 ;/* 配置EMCStaticWaitPage2 */
LDR R6, =WAITWR2 ;/* 配置EMCStaticWaitWr2 */
LDR R7, =WAITTURN2 ;/* 配置EMCStaticWaitTurn2 */
LDR R0, =EMCStaticConfig2
STMIA R0!, {R1-R7}
LDR R1, =STATICCFG3 ;/* 配置EMCStaticConfig3 */
LDR R2, =WAITWEN3 ;/* 配置EMCStaticWaitWen3 */
LDR R3, =WAITOEN3 ;/* 配置EMCStaticWaitOen3 */
LDR R4, =WAITRD3 ;/* 配置EMCStaticWaitRd3 */
LDR R5, =WAITPAGE3 ;/* 配置EMCStaticWaitPage3 */
LDR R6, =WAITWR3 ;/* 配置EMCStaticWaitWr3 */
LDR R7, =WAITTURN3 ;/* 配置EMCStaticWaitTurn3 */
LDR R0, =EMCStaticConfig3
STMIA R0!, {R1-R7}
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
;/********************************************************************************************************
;** 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
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 + -