eboot中的中断初始化

eboot中的中断初始化

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

查看( 58 ) / 评论( 1 ) / 评分( 0 / 0 )
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

相关阅读:
  • windows platform build安装问题 (mic, 2007-8-01)
  • WinCE 5.0试水 (mic, 2007-8-15)
  • 第二次编译,居然遇到问题了 (mic, 2007-8-20)
  • wince开发工具platfrom build问题 (mic, 2008-3-05)
  • 转一篇wince驱动开发入门的文章 (mic, 2008-3-05)
  • 转<<解读WINCE 5.0 KITL代码流程>> By Walzer (mic, 2008-3-05)
  • 基于Windows CE的KITL技术 (mic, 2008-3-06)
  • Wince 5下面frame buffer 内存分配 (mic, 2008-4-15)
  • wince下申请大容量的物理内存 (mic, 2008-4-16)
  • 转《两个小时学会DirectDraw开发》 (mic, 2008-4-18)

TAG:

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

#define pISR        (*(volatile unsigned *)(0x30000000+0x18))   
怎么响应不了中断呢

你可能感兴趣的:(eboot中的中断初始化)