2008年8月7日 星期四

ARM BootLoader 基本流程

參考程式碼
ResetEntry
b SYS_RST_HANDLER
b UDF_INS_HANDLER
b SWI_SVC_HANDLER
b INS_ABT_HANDLER
b DAT_ABT_HANDLER
b .
b IRQ_SVC_HANDLER
b FIQ_SVC_HANDLER
SWI_SVC_HANDLER
stmfd sp!, {r0-r12, lr}
ldr r0,[lr,#-4]
ldr r1, =SWI_SVC_VECTOR
mov lr, pc
ldr pc, [r1]
ldmfd sp!, {r0-r12, pc}^
MAP _ISR_STARTADDRESS ;0xcffff00
SYS_RST_VECTOR # 4
UDF_INS_VECTOR # 4
SWI_SVC_VECTOR # 4
IMPORT SWI_SERVICE
ldr r0, =SWI_SVC_VECTOR
ldr r1, =SWI_SERVICE
str r1, [r0]


void SWI_SERVICE(int type)
{
switch(type)
case 0:
case 1:
}

main()
{
__asm{ SWI 0x1 }
}

來源:http://cuijinbird.blogchina.com/cuijinbird/1733878.html

沒有留言: