ARM中断分析之三:WinCE驱动的中断分析

现在有许多高端的ARM芯片,像苹果、三星、华为都采用ARM芯片做为智能手机芯片。

这篇文章介绍基于ARM的WinCE操作系统的驱动的中断分析。WinCE驱动分为两类,这里介绍流驱动,流驱动比较简单。

关于流驱动,下面是一张框图,描叙了流驱动的地位:

我们从右往左看上面的那张图,最右边是应用程序。应该程序通过CreateFile、WriteFile、ReadFile、IoCtrl、CloseFile这几个函数来访问驱动,这和其他的操作系统是一样的,WindowsXP、Linux都是如此。

流驱动是实现了一批函数的库(DLL),包括XXX_Init、XXX_Deinit,上面的框图都列出来了。

在使用驱动之前,需要加载驱动(激活驱动),也就是说让驱动就绪,以便可以让应用程序访问。采用函数ActivateDeviceEx函数来激活,ActivateDeviceEx接收一个注册表路径作为参数,所以,我们需要把驱动信息按照格式写入到注册表内。下面是一个GPIO的注册表示例:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPIO]

"Dll" = "s3c6410_gpio.dll"

"Prefix" = "GIO"

"Order" = dword:63

"Index" = dword:1

"FriendlyName" = "GPIO Driver"

 

在驱动内部,如果使用中断,那么操作步骤如下:

1、驱动初始化时,由物理中断号获取虚拟中断号,调用函数KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR…) 

2、驱动初始化时,事件句柄绑定虚拟中断号,函数函数InterruptInitialize,然后创建一个IST线程,并Waiting事件

3、中断处理:硬件中断产生了,在IST线程内的等待事件就会返回,接下来处理中断,最后调用函数InterruptDone,意指中断处理完毕

4、退出驱动前,调用InterruptDisable,禁用当前中断,它与InterruptInitialize相反。

5、退出驱动前,释放虚拟中断号资源KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR...)

 

如果开发一个以太网驱动,那么怎么知道以太网芯片的硬件中断号是什么?答案是,需要问BSP开发人员或硬件开发人员。它不像Windows驱动,Windows驱动的中断号是由系统通过消息的方式发送给驱动。

 

像Windows XP操作系统的驱动中断号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】密码破解全能工具:Hashcat密码破解攻略

转自:密码破解全能工具:Hashcat密码破解攻略 - FreeBuf网络安全行业门户 Hashcat密码破解 hashcat号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU)&#xff0c…

基于Visual Studio2010讲解LINQ读出数据库数据生成XML

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML…

ARM中断分析之四:WinCE的OAL层的中断分析

从前面的介绍,我们知道了裸机中断处理的流程、WINCE驱动的中断处理,但是,WINCE底层是怎么处理中断的呢?这里就是介绍WinCE系统的OAL层的中断处理。它和裸机的处理总体一样,只是实现细节方面有点区别,具体流…

【转】TinyXML2 入门教程

转自:TinyXML2 入门教程_恋喵大鲤鱼的博客-CSDN博客_tinyxml2中文指南 代码编译运行环境:Linux 64bits Debug g -m64(-m 表示生成 64bits 的程序) 文章目录 1.TinyXML2 概述2. TinyXML1 与 TinyXML2 对比3. TinyXML2 用法用例…

解决“A problem has been encountered while loading the setup components. Canceling setup.”的问题...

近来因为需要开发C的程序,所以要在Visual Studio 2008中添加C的开发组件,但是在添加组件的时候,弹出“A problem has been encountered while loading the setup components. Canceling setup.”的提示。无奈之下,只好卸载&#x…

【转】linux 查看动态库和可执行程序依赖库

转自:linux 查看动态库和可执行程序依赖库_帅的没朋友~的博客-CSDN博客_linux 查看动态库 目录 一:objdump二:readelf三:ldd四:进程是否依赖指定一:objdump # 查看依赖的库 objdump -x xxx.so | grep NEEDED# 查看可执行程序依赖的库 objdump -x ./testTime | gr…

WinCE下的GPIO中断的处理

在我所负责的音频驱动部分代码中,采用了PXA270的GPIO34来检测Headphone的插入与拔出.原驱动部分有个BUG,即当耳机插入以后,耳机和喇叭同时在响,很明显没有对耳机插入事件做出响应.所以我开始采用了检测GPIO信号拉高或者拉低和检测耳机的插入事件,但是这样做有个问题,就是会有延…

xvhfeng的工作回忆总结(第二年)阅读手记

xvhfeng 工作回忆总结(第二年) 上接工作第一年回忆总结,时间来到了工作第二年,我在PM的帮助下拿到了令自己满意的工资,又开始加入公司正常的工作。 上文说到有一个外省市(以下称为A市)的项目在做&#xff…

【转】详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await

转自:详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await 同步&异步的概念 在讲这四种异步方案之前,我们先来明确一下同步和异步的概念: 所谓同步(synchronization),简单来说,就是…

S3C2440中断解析和基于WINCE操作系统的中断分析(整理于网络,用于按键中断使用)

在调试CAN总线的时候,遇到了操作系统的中断,为了彻底的弄清楚中断是怎么回事?我先从底层的中断开始研究,在这里我们只讨论外部中断,下面就结合S3C2440TEST测试程序来分析一下中断是怎么执行的:我们研究的是…

修改 MrBayes 3.2 源码解决不能恢复断点的问题

当数据量较大时,用MrBayes进行计算通常是旷日持久的事情,几天甚至几个月。中间如果断电死机什么的发生就很令人发狂了。于是 MrBayes 3.2 svn 版增加了一个断点保存的功能,死机后可以从保存的断点处继续计算。只要在mcmc命令中加入checkfreqn…

【转】ubuntu下为APT设置代理

转自:https://blog.csdn.net/lwbeyond/article/details/8431927 Ubuntu下为APT设置代理一.最简单的方法 图形界面方法:新立得软件包管理器-->设置-->首选项-->网络。 进行设置代理就可以了。二.编辑命令 方法1:验证通过 如果您 希望…

wince6.0 s5pv210 中断

1. 在smdkv210\src\oal\oallib\ksarm.h头文件里可以看到wince的中断定义。 设备中断的起始编号即wince预定义的设备中断ID的基值 SYSINTR_DEVICES EQU 8 一共支持64个设备中断 SYSINTR_MAX_DEVICES EQU 64 可用的设备…

Regular Expression

Reference: 正则表达式三十分钟入门: http://deerchao.net/tutorials/regex/regex.htm 在线测试工具: regexlib(http://regexlib.com/default.aspx) 吐血推荐,比较狠的一个工具: Expresso &…

【转】vsftp配置实例-虚拟用户锁定目录

转自: vsftp配置实例-虚拟用户锁定目录_jasonyang69的博客-CSDN博客_vsftpd锁定用户目录 快速解决 vsftpd nologin 虚拟用户 拒绝访问 无法登录_小飞飞飞鱼的博客-CSDN博客_vsftpd 拒绝访问 一、实验步骤 0、启用 nologin shell #vim /etc/shells /bin/sh /bi…

顺丰快递,果然不一般!

2010-06-03 18:27:03快件到达北京集散点 2010-06-03 19:15:41快件离开北京集散点 发往北京集散中心 2010-06-03 21:05:34快件到达北京集散中心 2010-06-03 21:06:12快件离开北京集散中心 发往深圳集散中心 2010-06-04 02:56:29快件到达深圳集散中心 2010-06-04 02:57:04快件离开…

windowsCE异常和中断服务程序初探(-)

1。中断/异常相量的装入和执行方式。 中断和异常都是异步发生的事件,当该事件发生,系统将停止目前正在执行的代码转而执行事件响应的服务程序。而事件服务程序的入口点就是中断/异常向量所在的位置。arm的中断向量可以是0x0开始的低地址向…

windowsCE异常和中断服务程序初探(=)

继续上次的内容,在上次的分析中我们已经对SWI,FIQ,IRQ的流程有了一个大概的认识,下面继续对DataAbort和PrefetchAbort以及公共分发程序CommonHandler进行一下认识,完整异常处理的流程。 2-4 DataAbort服务程序 由数据异常触发&…

【转】Linux中tty、pty和pts概念及区别

转自:Linux中tty、pty和pts概念及区别 - 知乎 基本概念 ①tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是一种通过串行线连接键盘和打印机进行发送、阅读信息的设备,后来…

Microsoft Jet SQL 参考在线手册

http://www.weste.net/book/sql/转载于:https://www.cnblogs.com/cwfsoft/archive/2010/06/19/1760961.html