📄 boot.s
字号:
IMPORT main
;IMPORT FIQ_Handler
IMPORT IRQ_Handler
AREA boot ,CODE ,READONLY
ENTRY
B Reset_Handler ;0x00000000 复位
B Undefined_Handler ;0X00000004 末定义指令
B SWI_Handler ;0X00000008 软件中断
B Prefetch_Handler ;0X0000000C 取指中止
B DataAbort_Handler ;0X00000010 数据中止
NOP
B IRQ_Handler ;0X00000018 IRQ中断
B FIQ_Handler ;0X0000001C FIQ中断
Undefined_Handler
B Undefined_Handler
SWI_Handler
B SWI_Handler
Prefetch_Handler
B Prefetch_Handler
DataAbort_Handler
B DataAbort_Handler
;IRQ_Handler
;B IRQ_Handler
FIQ_Handler
B FIQ_Handler ;Defined by yourself
Reset_Handler
;%%%%%%%%%%%%%%%%
;内存post_initMem
;%%%%%%%%%%%%%%%%
LDR R11,=0x48000000
LDR R1, =0x02000ac9
STR R1,[R11]
NOP
LDR R11,=0x48000004
LDR R1, =0x0011e018
STR R1,[R11]
NOP
LDR R11,=0x48000008
LDR R1, =0x95c095c0
STR R1,[R11]
NOP
LDR R11,=0x4800000c
LDR R1, =0xb884a691
STR R1,[R11]
NOP
LDR R11,=0x48000010
LDR R1, =0x7ff4b884
STR R1,[R11]
NOP
LDR R11,=0x48000014
LDR R1, =0x1
STR R1,[R11]
NOP
LDR R11,=0x4800001c
LDR R1, =0x0
STR R1,[R11]
NOP
LDR R11,=0x48000024
LDR R1, =0x0
STR R1,[R11]
NOP
LDR R11,=0x48000040
LDR R1, =0x320032
STR R1,[R11]
NOP
LDR R11,=0x48000044
LDR R1, =0x00000008
STR R1,[R11]
NOP
;**************************
;堆栈init_Stack
;**************************
MSR CPSR_c, #0xd2 ;MRS和MSR都是程序状态寄存器传指令.把0XD2送到CPSR_c中的低字节中[7~0]
LDR SP, =0xa0605000 ;LDR 是把一个数字常量或一个地址加载到寄存器伪指令0xa0605000
MSR CPSR_c, #0xd1
LDR SP, =0xa060a000
MSR CPSR_c, #0xd7
LDR SP, =0xa060e000
MSR CPSR_c, #0xdb
LDR SP, =0xa0714000
MSR CPSR_c, #0xdf
LDR SP, =0xa0720000
MSR CPSR_c, #0xd3
LDR SP, =0xa0600000
;##############
;Init GPIO
;##############
LDR R1,=0x40e00000
MOV R0,#0x3000
STR R0,[R1,#0x18] ;R0-->[R1+0X18]
MOV R0,#0x800
STR R0,[R1,#0x24]
MOV R0,#0x80000000
STR R0,[R1,#0x54]
LDR R0,=0x10 ;0xa5000010
STR R0,[R1,#0x58]
LDR R0,=0xc1a08000
STR R0,[R1,#0xc]
MOV R0,#0
STR R0,[R1,#0x1c]
MOV R0,#0
STR R0,[R1,#0x28]
LDR R0,=0xc9c ;0xa9558
STR R0,[R1,#0x5c]
LDR R0,=0xca0 ;0xaaa590aa
STR R0,[R1,#0x60]
LDR R0,=0xca4 ;0xfccf0382
STR R0,[R1,#0x10]
MOV R0,#0x10000
STR R0,[R1,#0x20]
MOV R0,#0
STR R0,[R1,#0x2c]
ldr R0,=0xa0000000 ;0xaaaaaaaa
STR R0,[R1,#0x64]
ldr R0,=0x400 ;0x90402 ;0x50000400
STR R0,[R1,#0x68]
ldr R0,=0x0221ffff
STR R0,[R1,#0x14]
;LDR R0,=0xca8
;STR R0,[R1,#0x68]
MOV R0,#0x20000
STR R0,[R1,#0x118]
MOV R0,#0
STR R0,[R1,#0x124]
LDR R0,=0x020a9550;0xa9510 ;0x020a9950
STR R0,[R1,#0x6c]
LDR R0,=0x1408
STR R0,[R1,#0x70]
;标志
LDR R0,=0x21380 ;0x20380
STR R0,[R1,#0x10c]
LDR R0,=0xa5000010 ;0x0x10
STR R0,[R1,#0x58]
LDR R0,=0xa9558 ;0xc9c
STR R0,[R1,#0x5c]
LDR R0,=0xaaa590aa ;0xca0
STR R0,[R1,#0x60]
LDR R0,=0xfccf0382 ;0xca4
STR R0,[R1,#0x10]
;键盘0
LDR R0,=0xaaaaaaaa ;0xa0000000 ;0xa0000000
STR R0,[R1,#0x64]
LDR R0,=0x50090402 ;0x54090402 ;0x400 ;0x50090402
STR R0,[R1,#0x68]
;///////////////////////
;I位置1才允许IRQ中断 P23
MRS R1, CPSR
BIC R1, R1,#0x80
MSR CPSR_c, r1
;*****************************
LDR pc,=main
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -