打印
[ARM入门]

ARM开发的问题1

[复制链接]
854|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangxd5429|  楼主 | 2018-4-2 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM, ST, pc, se, TI
各位高手,小弟基于友善之臂的MINI6410开发板编写裸板定时器中断程序。将裸板程序复制到SD卡中,设置开发板模式为SD卡启动。运行发现:系统未跳转到IRQ异常向量处执行。请教其中的原因。谢谢!启动文件内容如下:
.text
.globl _start
_start:
        b        reset
        ldr        pc, _undefined_instruction
        ldr        pc, _software_interrupt
        ldr        pc, _prefetch_abort
        ldr        pc, _data_abort
        ldr        pc, _not_used
        ldr        pc, _irq
        ldr        pc, _fiq

_undefined_instruction:
        .word undefined_instruction
_software_interrupt:
        .word software_interrupt
_prefetch_abort:
        .word prefetch_abort
_data_abort:
        .word data_abort
_not_used:
        .word not_used
_irq:
        .word irq
_fiq:
        .word fiq
_pad:
        .word 0x12345678 /* now 16*4=64 */
       
reset:
        ldr r0 , =0x7e004000
        mov r1 , #0x0
        str r1 , [r0]

        /*复制中断向量表至0x0*/
        mov r8 , #0
        adr r9 , _start
        ldmia r9! , {r0-r7}
        stmia r8! , {r0-r7}
        ldmia r9! , {r0-r7}
        stmia r8! , {r0-r7}
       
        ldr sp, =1024*4
       
        bl main

/*
* exception handlers
*/
        .align        5
undefined_instruction:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        bl        do_undefined_instruction

        .align        5
software_interrupt:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        bl        do_software_interrupt

        .align        5
prefetch_abort:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        bl        do_prefetch_abort

        .align        5
data_abort:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        bl        do_data_abort

        .align        5
not_used:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        bl        do_not_used

        .globl irq
        /*import c_irq_handler*/
        .align        5
irq:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        /*stmfd sp!, {r0-r12, lr}                ;保存现场 */
       
        bl c_irq_handler                        /*调用中断处理子程序*/

        /*ldmfd sp!, {r0-r12, lr}                ;恢复现场*/
       
        /*subs pc, lr, #4*/
       
        /*END*/
        .align        5
fiq:
        ldr r0, =0x7f008800
        ldr r1, =0x11110000
        str r1, [r0]
        ldr r0, =0x7f008808
        ldr r1, =0x0
        str r1, [r0]
       
        bl        do_fiq

相关帖子

沙发
ayb_ice| | 2018-4-4 13:59 | 只看该作者
ARM7,都淘汰了

中断开了没

使用特权

评论回复
板凳
wangxd5429|  楼主 | 2018-4-9 10:32 | 只看该作者
ayb_ice 发表于 2018-4-4 13:59
ARM7,都淘汰了

中断开了没

在main函数中已经使能中断了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

99

帖子

2

粉丝