免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1841 | 回复: 6
打印 上一主题 下一主题

[硬件及驱动] ARM处理器中断响应的跳转过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-20 14:33 |只看该作者 |倒序浏览
最近看uboot源码中S3C2440的start.S,源码的开始部分就是如下的代码:
.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
网上查找了很多,都说这个是中断向量表,但是可以得出的是比如irq中断发生的时候,ldr pc, _irq会被执行,所以pc的值将会被赋为_irq标号的地址,这一步是很清楚的,但是为什么当pc被赋值为这个之后,pc最终又会被赋值为irq标号的值呢?因为第一次跳转时ldr指令完成的,第二次pc指向_irq标号处并没有一条指令给它赋值为irq标号的值啊?这是一个想不明白的问题,还有一个想不明白的问题,为什么这里不直接使用ldr pc, irq这样的形式一步到位呢,为什么非要跳转两次才跳转到真正的位置呢?
路过的各位大虾,请帮本菜鸟解解惑吧,感激不尽。。。

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
2 [报告]
发表于 2014-11-20 15:02 |只看该作者
个人理解:
第一次跳转是由arm芯片内定的,每种cpu架构都有自己一套的处理方法
跳一次没有办法安排中断处理函数

ldr        pc, _irq   这里就是将_irq标号所代表的内存中的值给pc了,从而实现中断函数的跳转,你的疑问是什么,没看懂

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2014-11-20 16:28 |只看该作者
ldr        pc, _irq是个伪指令
意思是将_irq这个标号代表的地址中的内容(即irq这个标号代表的地址)赋值给pc

论坛徽章:
0
4 [报告]
发表于 2014-11-21 09:17 |只看该作者
3楼的解释应该是问题的正解,我最开始问的问题是,既然ldr指令只是将下一处标号的值赋给PC,其实还并不能跳到真正的中断处理函数处去处理中断,看来是我把ldr的指令还是不会用,三楼一下点醒了我。ldr使用的时候不使用等号的话就是将标号(地址)处的内容赋给目标,而不是将标号的地址赋给目标!当使用等号的时候就是将地址赋给目标,而非目标地址内的内容。回复 2# super皮波


   

论坛徽章:
0
5 [报告]
发表于 2014-11-21 09:18 |只看该作者
小弟谢过了,一语点醒了我。回复 3# arm-linux-gcc


   

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
6 [报告]
发表于 2014-11-21 09:59 |只看该作者
回复 4# laoniu_sichuan
我说的和3楼的有区别吗。。。。。。


   

论坛徽章:
0
7 [报告]
发表于 2014-11-21 14:12 |只看该作者
看岔了,你这个也是正解啊!看来我有眼无珠了。。。回复 6# super皮波


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP