?? init.s
字號(hào):
MACRO
CPWAIT
MRC p15, 0, R0, c2, c0, 0
MOV R0, R0
SUB PC, PC, #4
MEND
AREA init, CODE, READONLY, ALIGN=5
ENTRY
B Reset_Handler ; Reset here(0)
B Reset_Handler ; Undefined_Handler(1)
B Reset_Handler ; SWI_Handler(2)
B Reset_Handler ; Prefetch_Handler(3)
B Reset_Handler ; Abort_Handler(4)
B Reset_Handler ; Reserved vector(5)
B Reset_Handler ; IRQ_Handler(6)
B Reset_Handler ; FIQ interrupt vector(7)
Reset_Handler
MOV R0,#0xFFFFFFFF
MCR p15, 0, R0, c3, c0, 0 ; Reset DAC
CPWAIT
MRC p15, 0, R0, c1, c0, 0
ORR R0, R0, #0x1800 ; Enable I-Cache
MCR p15, 0, R0, c1, c0, 0
CPWAIT
LDR SP, =0xA0800000 ; End of SDRAM(8M)
;init sdram
LDR R1, =0x981
MOV R0, #0x48000000
STR R1, [R0,#0] ; MDCNFG=0x981(8M SDRAM)
LDR R2, =0x0001c030
STR R2, [r0,#4] ; MDREFR=MEM_CLK_100M
MOV R3, #0
STR R3, [r0,#0x40] ; MDMRS=0
MOV R0,PC
TST R0, #0x80000000
BNE SYS_NOCPY ; Jump if R0>0x80000000
ADR R0, Reset_Handler
ADR R4, CInitData
LDR R1, =Reset_Handler
LDR R2, [R4] ;END OF ROM
ROMTORAM
CMP r1, r2 ; Copy code to sdarm
LDRCC r3, [r0], #4
STRCC r3, [r1], #4
BCC ROMTORAM
LDR R0, =SYS_NOCPY ; jump to sdram
MOV PC, R0
SYS_NOCPY
; INIT C CODE
add r2, pc,#-(8+.-CInitData) ; @ where to read values (relative)
ldmia r2, {r0, r1, r3, r4}
cmp r0, r1 ; Check that they are different
beq EndRW
LoopRW
cmp r1, r3 ; Copy init data
ldrcc r2, [r0], #4
strcc r2, [r1], #4
bcc LoopRW
EndRW
mov r2, #0
LoopZI
cmp r3, r4 ; Zero init
strcc r2, [r3], #4
bcc LoopZI
b EndInitC
CInitData
IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data)
IMPORT |Image$$RW$$Base| ; Base of RAM to initialise
IMPORT |Image$$ZI$$Base| ; Base and limit of area
IMPORT |Image$$ZI$$Limit| ; Top of zero init segment
DCD |Image$$RO$$Limit| ; End of ROM code (=start of ROM data)
DCD |Image$$RW$$Base| ; Base of RAM to initialise
DCD |Image$$ZI$$Base| ; Base and limit of area
DCD |Image$$ZI$$Limit| ; Top of zero init segment
EndInitC
IMPORT Main
B Main
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -