Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34183
  • 博文数量: 17
  • 博客积分: 770
  • 博客等级: 军士长
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-29 10:18
文章分类

全部博文(17)

文章存档

2010年(1)

2009年(6)

2008年(10)

我的朋友
最近访客

分类: WINDOWS

2008-11-14 21:20:08

在初始化函数中

首先要 要进行地址映射 就是分配地址 然后映射好

VirtualAlloc  VirtualCopy  就是由这两个函数来进行的。VirtualAlloc  这个是在用户空间分配一段地址,然后用VirtualCopy 把用户空间的地址和内核空间的地址连接上,可以直接用内核空间的逻辑地址 也可以用物理地址向右移动八位

比如

VirtualCopy((PVOID)v_pIOPregs, (PVOID)(IOP_PHY_BASE >> 8), sizeof(IOP_BASE), PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE)

 

然后就是中断的初始化 也就是开中断 以及设置中断触发的方式等

 

物理中断和逻辑中断相关联KernelIoControl (可以很多个物理中断对应一个逻辑中断,这个是5.0后的动态映射4.2是静态映射,动态映射代码要简单的多,静态是通过OEMOEMInterruptHandler)

 

逻辑中断和事件相关联 InterruptInitialize 这个地方使能中断

 

然后就是创建事件 CreateThread  

(这个是在IST中的,也就是说在IST中等待,事件触发后就唤醒IST,再游IST做相应的工作,比如可以点亮信号灯,是别的等待线程触发,等)

 

然后就是等待事件被触发事件触发之后 如果一个物理中断对应一个逻辑中断 就可以进行相应的中断处理  如果一个逻辑中断对应多个物理中断就需要判断到底是哪个中断被触发 然后在进行相应的处理,这只是一般的按键驱动这样处理因为比较简单)

 

 

最后调用 InterruptDone完成

阅读(801) | 评论(1) | 转发(0) |
0

上一篇:u-boot启动代码start.S(s3c2410)详解

下一篇:

给主人留下些什么吧!~~

chinaunix网友2008-11-20 11:39:15

有什么不明白 可以交流下哦 对wince中断的理解很关键 呵呵