📄 boot.s
字号:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include "system.h"
.global _start
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
_start:
B ResetHandler
Undefined_Handler: B Undefined_Handler @@ Undefined_Handler
nop
Prefetch_Handler: B Prefetch_Handler
Abort_Handler: B Abort_Handler
nop
B IrqHandler
nop
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ResetHandler:
@enable cache @ldr R0, =0x00000637 @mcr p15, 0, r0, c6, c0, 0 @ldr R0, =0x100006b7 @mcr p15, 0, r0, c6, c1, 0 @ldr R0, =0x20000637 @mcr p15, 0, r0, c6, c2, 0 @ldr R0, =0x00000007 @mcr p15, 0, r0, c1, c1, 0 ldr R0, =0x00000637 mcr p15, 0, r0, c6, c0, 0 ldr R0, =0x100006b7 mcr p15, 0, r0, c6, c1, 0 ldr R0, =0x20000637 mcr p15, 0, r0, c6, c2, 0 ldr R0, =0x0000000f mcr p15, 0, r0, c1, c1, 0 mcr p15, 0, r0, c7, c7, 0
@dislable all interrupt
ldr r0,=0x20000018
ldr r1,=0xffff
str r1, [r0]
MOV R0, #Mode_IRQ
msr cpsr, R0
ldr r1,=0x10300000 @0x01fffffc
MOV SP, R1
@@change to User Mode
mov r0, #Mode_USR
msr cpsr, R0
ldr r1,=0x104ffff0
MOV SP, R1
@call c function
bl demo
@can not run here , dead loop
ResetHandler_loop:
B ResetHandler_loop
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IrqHandler :
STMDB SP!, {R0-R12, LR}
irqmyloop:
@ldr r0,=0x20000014
@LDR r9,[r0]
@ldr r0,=0x20000018
@ldr r8,[r0]
@mvn r8,r8
@and r9,r9,r8
IrqHadr_CheckStatus:
@TST R9, #INT_TIMERGPIO_BIT
@bicne r9,r9,#INT_TIMERGPIO_BIT
@BLNE TimerInt
@bne IrqHadr_CheckStatus
bl TimerInt
B IrqHadr_Exit
IrqHadr_Exit:
LDMIA SP!, {R0-R12, LR}
SUBS PC, LR, #4
FiqHandler:
B FiqHandler
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -