skyeye 没有执行 SWI 执行 ?
STACKLENGTH EQU 4096area start_data,data,readwrite
SvcStack space STACKLENGTH
UserStack space STACKLENGTH
UndStack space STACKLENGTH
str dcb "hello,world\n\0"
area start_code,code,readonly
extern UartPrintf
extern uart_printf
entry
code32
b SystemReset
b UndefMode
b SwiInt
b GetCodeAbort
b GetDataAbort
b IrqMode
b FiqMode
UndefMode
stmfd sp!,{r0-r3,r12,lr} ;保护现场
mrs r0,spsr
stmfd sp!,{r0};保护spsr ,即跳转之前的状态
bl uart_printf
ldmfd sp!,{r0}
msr spsr_cf,r0
ldmfd sp!,{r0-r3,r12,pc}
GetCodeAbort
GetDataAbort
IrqMode
FiqMode
SwiInt
;调用SWI后,处理器自动将 之前模式的 lr cpsr 保存到SVC模式的 lr 和 SPSR中
mov r0,#1
stmfd sp!,{r0-r3,r12,lr} ;保护现场
mrs r0,spsr
stmfd sp!,{r0};保护spsr ,即跳转之前的状态
bl uart_printf
ldmfd sp!,{r0}
msr spsr_cf,r0
ldmfd sp!,{r0-r3,r12,pc}
SystemReset
loop
ldr sp,=SvcStack+STACKLENGTH
mov r0,#0
ldr r1,=str
bl UartPrintf
;初始化未定义模式
mrs r0,cpsr
bic r0,r0,#0xff
orr r0,r0,#0xdb
msr cpsr_c,r0
ldr sp,=UndStack+STACKLENGTH
;进入管理模式
mrs r0,cpsr
bic r0,r0,#0xff
orr r0,r0,#0xd3
msr cpsr_c,r0
;初始化用户模式
mrs r0,cpsr
bic r0,r0,#0xff
orr r0,r0,#0xd0 ;进入用户模式
msr cpsr_c,r0
ldr sp,=UserStack+STACKLENGTH
swi 0x101 ;这里 本想进入 0008 地址,调用串口打印出 “hello,world'. 在ADS下调试,都可以看到进入了
0008地址里面,可是SKYEYE 模型 去没有反应,到底是怎么了 ?
;延时
ldr r0,=0x5fffff
delay
sub r0,r0,#0x1
cmp r0,#1
bne delay
b loop
end
页:
[1]