📄 init.s
字号:
;------------------------------------------------------------------------/
;Compony: CASIA
;File Name: Init.s
;Description:
;Author: Wjh
;Date: 2005-07-11
;------------------------------------------------------------------------/
AT91_Stack_Begin EQU 0x2000000 ; 堆栈的起始地址
ARM_MODE_IRQ EQU 0x12 ; IRQ模式标志
ARM_MODE_SVC EQU 0x13 ; SVC模式标志
I_BIT EQU 0x80 ; IRQ禁止标志位
F_BIT EQU 0x40 ; FIQ禁止标志位
IRQ_STACK_SIZE EQU 0x100 ; IRQ模式堆栈大小
SVC_STACK_SIZE EQU 0x100 ; FIQ模式堆栈大小
;------------------------------------------------------------------------/
;*************************************************************************************************/
CODE32
AREA Init,CODE,READONLY
EXPORT __ENTRY
__ENTRY
B Reset_Handler
undefvec B undefvec
swivec B swivec
pabtvec B pabtvec
dabtvec B dabtvec
rsvdvec B rsvdvec
B Irq_Handler
fiqvec B fiqvec
Reset_Handler
;------------------------------------------------------------------------------
;- The reset handler
;------------------------------------------------------------------------------
ldr r0,=0x0
ldr r1,=__ENTRY
ldr r2,=0x1000
vector_copy
subs r2, r2, #1
ldr r3,[r1],#4
str r3,[r0],#4
bne vector_copy
ldr r0,=0x44
mov pc,r0
MRS R3,CPSR
BIC R3,R3,#I_BIT
MSR CPSR_c,R3
MSR SPSR_c,R3
;------------------------------------------------------------------------------
;Jump to Main Routine
IMPORT C_Entry
_main
__main
EXPORT _main
EXPORT __main
ldr r0, =C_Entry
mov lr, pc
bx r0
here B here
;------------------------------------------------------------------------/
;- Irq_Handler
;------------------------------------------------------------------------/
IMPORT Irq_C_Handler
Irq_Handler
STMFD SP!,{R0-R12,LR} ; 保护现场,将R0-R12,LR存入堆栈
BL Irq_C_Handler ; 调用中断处理的C语言函数
LDMFD SP!,{R0-R12,LR} ; 恢复现场,中断返回
SUBS PC,LR,#4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -