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
相关阅读:
- 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: