打印
[ZLG-ARM]

为什么要在IRQ入口0X18处放上“LDR PC,[PC,#-0XFF0]”

[复制链接]
3989|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzyszl|  楼主 | 2007-10-23 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hotpower| | 2007-10-23 23:47 | 只看该作者

倒退着从0xFFFFF030中取出VicVectAddr

LDR PC,[PC,#-0XFF0]相当与
jmp VicVectAddr

使用特权

评论回复
板凳
zzyszl|  楼主 | 2007-10-24 11:55 | 只看该作者

在IRQ入口0X18处怎么知道PC呢?

先谢谢楼上的 hotpower  但是还不明白:

跳转到IRQ入口处0x18前应该是不知道何时进来,这样PC的值应该是不确定的吧,请教
       LDR PC,[PC,#-0XFF0]相当与
       jmp VicVectAddr


如何解释。

使用特权

评论回复
地板
ppz2005| | 2007-10-24 14:15 | 只看该作者

地址长度的原因

中断进来时,地址是确定的,就是这一条指令的地址加8,就是0x00000020,减去0x00000ff0正好是0xffffff30。之所以不能直接放上一条跳转指令是因为arm不支持这样长度的直接地址。一般的起动文件中其它的跳转都是跳转到0开始的较短地址所以没问题。

使用特权

评论回复
5
zlgarm| | 2007-10-24 18:05 | 只看该作者

三级流水线

4楼说的有道理,请注意一下ARM7指令是三级流水线结构就行了!

使用特权

评论回复
6
hpy013| | 2007-10-24 19:04 | 只看该作者

做个记号,记住。

使用特权

评论回复
7
zzyszl|  楼主 | 2007-10-24 23:28 | 只看该作者

0xffffff30是什么地址?

4楼说:“中断进来时,地址是确定的,就是这一条指令的地址加8,就是0x00000020,减去0x00000ff0正好是0xffffff30。之所以不能直接放上一条跳转指令是因为arm不支持这样长度的直接地址。一般的起动文件中其它的跳转都是跳转到0开始的较短地址所以没问题。”

有两点不明白,请指点指点!

1)“地址加8”为什么不是+4?

2)“0xffffff30”是个什么地址?我在资料上查了,最高地址我查到的就是“0xfffff23c”,我知道0xfffff000---0xffffffff是分配给VIC的,但是不知道“0xffffff30”是个什么地址,有什么用?

使用特权

评论回复
8
hotpower| | 2007-10-24 23:57 | 只看该作者

当前中断地址

使用特权

评论回复
9
zzyszl|  楼主 | 2007-10-25 08:18 | 只看该作者

我想是“0xffffff30”地址错了!

我想了很久应该是“0xffffff30”地址错了!,4楼说的这个地址应改为“0xFFFFF030”,这样我想在理论上就通了!




谢谢大家帮我解决了这个问题!

使用特权

评论回复
10
computer00| | 2007-10-25 09:34 | 只看该作者

晕...二楼一开始给你就是0xFFFFF030啊

这个地址里面保存的就是当前需要处理的中断入口地址,硬件自动将它放进去的。

使用特权

评论回复
11
xwj| | 2007-10-25 10:04 | 只看该作者

呵呵

使用特权

评论回复
12
ppz2005| | 2007-10-25 10:53 | 只看该作者

对,是0xFFFFF030,我写错了

另外7楼问为什么是地址加8,不是加4,这个与arm流水线及各厂家的硬件有关,厂家的手册上会给出是加多少。

使用特权

评论回复
13
hotpower| | 2007-10-25 20:03 | 只看该作者

倒塌了~~~LZ从来就没相信俺这个农民大叔~~~晕!!!

使用特权

评论回复
14
lovewwy| | 2011-2-28 20:07 | 只看该作者
mark

使用特权

评论回复
15
amini| | 2011-3-3 17:49 | 只看该作者
太乱了,留个印先。

使用特权

评论回复
16
FVJFIFE| | 2011-3-3 17:52 | 只看该作者
楼主这个问题到底解决了没?

使用特权

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

本版积分规则

16

主题

37

帖子

1

粉丝