打印

如何确读这些中断向量汇编指令?

[复制链接]
3198|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyf9908|  楼主 | 2011-1-8 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近学ARM,有如下的一段中断向量汇编指令,到最后,像
SWI_Handler
         B       SWI_Handler  
   这种最后不都是死循环了么?怎么执行中断服务程序?

        ENTRY
        LDR     PC, Reset_Addr
        LDR     PC, Undefined_Addr
        LDR     PC, SWI_Addr
        LDR     PC, Prefetch_Addr
        LDR     PC, Abort_Addr
        NOP                                       ; Reserved vector
        LDR     PC, IRQ_Addr
        LDR     PC, FIQ_Addr
        
        IMPORT  Reset_Handler           ; In init.s
        IMPORT IRQ_IntHandler

        
Reset_Addr          DCD      Reset_Handler
Undefined_Addr    DCD     Undefined_Handler
SWI_Addr            DCD      SWI_Handler
Prefetch_Addr      DCD      Prefetch_Handler
Abort_Addr          DCD      Abort_Handler
IRQ_Addr            DCD      IRQ_IntHandler
FIQ_Addr            DCD       FIQ_Handler

; ************************
; Exception Handlers
; ************************
; The following dummy handlers do not do anything useful in this example.
; They are set up here for completeness.

Undefined_Handler
        B       Undefined_Handler
SWI_Handler
        B       SWI_Handler     
Prefetch_Handler
        B       Prefetch_Handler
Abort_Handler
        B       Abort_Handler
IRQ_Handler
  B  IRQ_Handler
        
FIQ_Handler
        B       FIQ_Handler
        
END

相关帖子

沙发
lelee007| | 2011-1-8 22:32 | 只看该作者
LZ没看错,也没理解错

不过思维太狭隘

死循环就死循环,这个中断发生了就让他死循环好啦,到时候让看门狗来咬他就OK啦

不过这也就是裸奔实验程序里边用的,仅仅是实验用的,因为在实验环境下,软件中断不使用,既然不使用就不能瞎跳啦

使用特权

评论回复
板凳
lelee007| | 2011-1-8 22:33 | 只看该作者
LZ记得结贴给分哦:lol

使用特权

评论回复
地板
xinzha| | 2011-1-8 23:51 | 只看该作者
进入swi后irq和fiq依然是打开的,只要发生了依然能执行。
至于undef,abort和prefetch之类的异常除了特殊情况外,其他时候就已经是致命错误了,也就别想着执行中断了。
lz的这段示例程序有点害人。

使用特权

评论回复
5
bald| | 2011-1-10 10:33 | 只看该作者
这是一段开发板的通用例程。
和你一样,程序的制作者不知道要做什么。
没有任务,放一个死循环在那。
等你确定了任务以后,自己着手制作中断服务程序。
几乎所有的MCU、MPU示范例程都是这样一种形式。因为任务部分,已经不属于开发板指导的范畴。

使用特权

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

本版积分规则

133

主题

176

帖子

0

粉丝