📄 init.s
字号:
;; ******************************************************
;; * NAME : SOURCE\INIT.S ver1.0 *
;; * C start up codes *
;; * Fill zeros into zero-initialized C-variables *
;; ******************************************************
;//////////// Start Area ///////////////////////
AREA Init, CODE, READONLY
ENTRY
LDR sp, =0x100000
LDR R0,=0x3fffff
LDR R1,=0x3ff4008
STR r0,[r1] ;mask all the interrupt
B Reset_Handler
;////////// The RESET entry point /////////
Reset_Handler
; Initialise memory required by C code
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| ; to zero initialise
NOP
LDR r0, =|Image$$RO$$Limit| ; Get pointer to ROM data
LDR r1, =|Image$$RW$$Base| ; and RAM copy
LDR r3, =|Image$$ZI$$Base| ; Zero init base => top of initialised
; data
CMP r0, r1 ; Check that they are different
BEQ %1
0 CMP r1, r3 ; Copy init data
LDRCC r2, [r0], #4
STRCC r2, [r1], #4
BCC %0
1 LDR r1, =|Image$$ZI$$Limit| ; Top of zero init segment
MOV r2, #0
2 CMP r3, r1 ; Zero init
STRCC r2, [r3], #4
BCC %2
IMPORT Main
BL Main ; Branch to C code Main routine
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -