一直搞不懂这个裸机程序的启动代码应该怎么写,有些很简单,有些又很复杂。
IMPORT _main ; C entrypoint for Steppingstone loader.
AREA |C$$code|, CODE, READONLY
global Start
Start
b _main
DCB "ABCDabcd"
END
像这个就很简单
;*************************************************************************************/
GET option.inc
;=======================================================
; ENTRY
;=======================================================
AREA Init,CODE,READONLY
ENTRY
ResetHandler
LDR R13, =top_of_stacks
[ (USE_TCM = 1)
; ----------------------------------------
; Initialize TCM
; ----------------------------------------
; TCM0(D-TCM, I-TCM) Configuration
mov r0,#0x0
mcr p15,0,r0,c9,c2,0 ; Write TCM Selection register
ldr r0,=ITCM0_BaseAddress
mcr p15,0,r0,c9,c1,1 ; Write Instruction TCM0 region register
ldr r0,=DTCM0_BaseAddress
mcr p15,0,r0,c9,c1,0 ; Write Data TCM0 region register
; TCM1(D-TCM, I-TCM) Configuration
mov r0,#0x1
mcr p15,0,r0,c9,c2,0 ; Write TCM Selection register
ldr r0,=ITCM1_BaseAddress
mcr p15,0,r0,c9,c1,1 ; Write Instruction TCM1 region register
ldr r0,=DTCM1_BaseAddress
mcr p15,0,r0,c9,c1,0 ; Write Data TCM0 region register
]
IMPORT ScatterLoad
LDR R0, =ScatterLoad
MOV LR, PC
BX R0
EXPORT __main
__main
;; initialise the C library (which calls main())
IMPORT __rt_entry
LDR R0, =__rt_entry
BX R0
b .
;=======================================================
END
这个又有点复杂,哪位大哥能指点下迷津,帮我解答一下疑惑。谢谢啦!