aaasjm 发表于 2011-4-14 21:59:47

skyeye 没有执行 SWI 执行 ?

STACKLENGTH EQU 4096

        area 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]
查看完整版本: skyeye 没有执行 SWI 执行 ?