eboot中的中断初始化

eboot中的中断初始化

上一篇 / 下一篇  2008-07-10 11:53:37 / 个人分类:瘟蜥蜴

Eboot里面需要使用中断——主要是给usb用。所以在usb.c中可以看到void Isr_Init(void)函数
2jR /]CsJZ4r0 LUPA开源社区$}f'U$xx3Ym+Cc
其中有一句
6hi(@ v aT{0
/Wu{$hS(Tr0    pISR =(unsigned)( 0xEA000000)+(((unsigned) IsrHandler - ( 0x8C000000 + 0x18 + 0x8) )>>2);
xxvY jt z']W~0
iT}7pF&K:T?^ H0对这个公式一样的代码我比较迷惑。
?d ~ u~9{O0pISR是中断向量表里irq的位置:
E9L9uS"[Onc0#define pISR        (*(volatile unsigned *)(0x30000000+0x18))    LUPA开源社区 `2q/hF FXl

;J? h7Mv m:|gE z3U00x18表示的是irq在中断向量表里的位置 LUPA开源社区U'C+S6h$ZE+Bv
HandleReset # 4
)y aCn l z?e"?4G0HandleUndef # 4
/t4vK8}p"a0@0HandleSwi # 4
8Kg#? d$Xwfy0HandlePrefetch # 4 LUPA开源社区1gk4P`,a:x8x4{4H}
HandleAbort # 4 LUPA开源社区/GR@4b'Umi+z_U
HandleReserv # 4
5nN+O%sNpS0HandleIrq # 4 LUPA开源社区)Hw nhIE a!W
HandleFiq # 4
;s-Xw"z~ |Q/0 LUPA开源社区/z6W7o7DYk+w `
但是我不清楚这个公式的意义。 LUPA开源社区fl7TF!X s Pe
查阅了一些网络文章,
9r+x%L/U w!f `o0 0xEA000000+x 是arm指令中的跳转指令,表示无条件跳转到x地址 LUPA开源社区gnahp
如果是这样的话 LUPA开源社区$c{*Pw}
(((unsigned)IsrHandler - (0x8C000000 + 0x18 + 0x8) )>>2)
'vN tesc{N0我猜测是将IsrHandler由虚拟地址转化为物理地址。 LUPA开源社区U3wrP/?9P*g
LUPA开源社区4sK6k;Q(}&h _0cs
LUPA开源社区oT!hs!~!]p

TAG:

引用 删除 shuiii   /   2008-08-27 01:48:19
大侠,我也是这么写   
pISR =(unsigned)(0xEA000000)+(((unsigned)IsrHandler - (0x8C000000 + 0x18 + 0x8) )>>2);

#define pISR        (*(volatile unsigned *)(0x30000000+0x18))   
怎么响应不了中断呢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值