打印

关于中断向量的asm问题!

[复制链接]
1591|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
quarticarm|  楼主 | 2012-3-23 18:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
vectors.s:
        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  inc_clock   [WEAK]      ; In clock_irq.c
        
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_Handler
FIQ_Addr        DCD     FIQ_Handler

但是我们程序里只有IRQ_Int_Handler()这个函数,我不知道IRQ_Int_Handler()具体怎么和IRQ_Addr DCD IRQ_Handler发生关系的??

还有个问题,看书上说,应该中断程序退出时,需要恢复CPSR的,但是我C代码里 没有这个代码 为什么??通常C代码的isr中,怎么恢复CPSR,我里头只有一个__enable_irq()的函数,好像是库函数,反正找不到这个函数的代码。

相关帖子

沙发
airwill| | 2012-3-23 20:29 | 只看该作者
IRQ_Addr        DCD     IRQ_Handler
应该就是你的 IRQ_Int_Handler().

C代码的isr中,怎么恢复CPSR
呵呵, 不用你考虑, C 编译器会帮你完成这些底层的工作的.

使用特权

评论回复
板凳
quarticarm|  楼主 | 2012-3-23 20:35 | 只看该作者
IRQ_Addr        DCD     IRQ_Handler
应该就是你的 IRQ_Int_Handler().

C代码的isr中,怎么恢复CPSR
呵呵, 不用你考虑, C 编译器会帮你完成这些底层的工作的.
airwill 发表于 2012-3-23 20:29

[quote]IRQ_Addr DCD IRQ_Handler
应该就是你的 IRQ_Int_Handler().但是具体是怎么定义到那边去的?名字也不同啊

使用特权

评论回复
地板
airwill| | 2012-3-26 10:07 | 只看该作者
不知道你是哪个编译器, 按理不应该, 你得找找, 哪里把 IRQ_Handler
定义成了 IRQ_Int_Handler

使用特权

评论回复
5
yewuyi| | 2012-3-26 10:50 | 只看该作者
IRQ_Addr DCD IRQ_Handler
应该就是你的 IRQ_Int_Handler().但是具体是怎么定义到那边去的?名字也不同啊
quarticarm 发表于 2012-3-23 20:35


这一般在编译器自动生成的头文件中定义了。

使用特权

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

本版积分规则

0

主题

32

帖子

1

粉丝