深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序

上传人:E**** 文档编号:91053442 上传时间:2019-06-21 格式:PPT 页数:21 大小:159.50KB
返回 下载 相关 举报
深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序_第1页
第1页 / 共21页
深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序_第2页
第2页 / 共21页
深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序_第3页
第3页 / 共21页
深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序_第4页
第4页 / 共21页
深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序》由会员分享,可在线阅读,更多相关《深圳职业技术学院windowsce嵌入式系统开发课程课件驱动程序(21页珍藏版)》请在金锄头文库上搜索。

1、项目13:驱动程序的编制(1),本节课程主要知识点 驱动程序模型 驱动程序的中断处理,重点和难点,重点 驱动程序的基本概念 难点 驱动程序的中断处理,驱动程序模型,驱动程序,驱动程序是硬件与操作系统间的底层软件。由于驱动程序的存在,应用程序可以使用标准函数来访问硬件,而不必关心硬件是如何工作的。 操作系统提供了一组标准的接口,驱动程序就是要实现这组接口,并将这些接口的实现映射到具体的对硬件的操作上。,驱动程序的编写,Windows CE5.0自带了很多硬件驱动程序,但在一些特定的情况下,还需要程序员自已开发驱动程序。常见的情况是 操作系统没有该硬件的驱动程序 这是比较常见的情况,需要用户自己编

2、写。 扩展已有驱动 已有的驱动功能不完整,需要扩存或重写。 实现伪驱动 实现一些特定的软件功能。,驱动程序的编写要素,要熟悉硬件 这是最基本的要求,需要熟悉充分熟悉硬件的工作原理和工作过程。 熟悉驱动程序的工作机制 要熟悉驱动程序的加载和卸载方法、驱动程序的初始化过程、中断及DMA的处理机制等。 熟悉驱动程序模型,驱动程序模型,为了简化驱动程序的编写,操作系统设计上,会把驱动程序分成不同的互相分离的层。 每一层都会提供 一些预先定义的接口来处理I/O的数据。 把设备及驱动程序进行分类,然后把某一类设备的共性提取出来,作为独立的一层。 这些通过提取共性而被抽象出来的接口和层称做驱动程序模型。,本

3、机设备驱动程序,适用于集成到Windows CE平台的设备,如键盘、显示器、PC卡插槽等。 操作系统启动时加载。,流接口驱动程序,一般类型的设备驱动程序,支持几乎所有可连接在Windows CE平台上的外部设备。 流接口驱动程序都是以用户级的动态链接库加载的。,驱动程序的中断处理,驱动程序的中断处理,中断是外部设备请求CPU服务的基本手段,是保证嵌入式系统实时性能的重要方法。 中断的请求与响应是由硬件和操作系统共同来完成的。基于ARM核的中断信号是由IRQ和FIQ来产生的。 中断的处理是由设备的驱动程序来完成的。驱动程序中包含有该设备的中断服务程序。,Windows CE中的中断,与其他计算机

4、结构一样,当设备需要系统的服务时,设备会用中断信号来通知CPU。 Windows CE5.0把中断处理分为两个过程中断服务例程ISR和中断服务线程IST。,中断的处理过程,Windows CE5.0的中断处理分为两个阶段,当中断发生且该中断没有被屏蔽时,内核将进入中断服务例程ISR。 ISR一般是一个简短的程序,可以用汇编或C语言来编程实现,用于完成基本的中断处理并返回中断识别号SYSINTR到内核中。其后内核将根据SYSINTR的值发送一个事件以激活一个中断服务线程IST。 IST是中断处理的核心程序,处理中断服务所需要完成的具体工作。,ISR (Interrupt Service Rout

5、ine),ISR由驱动程序在系统初始化过程时向内核注册。系统将建立所有设备的ISR列表,当设备请求中断时,内核可以迅速转向相关的ISR以处理设备的中断请求。 ISR运行在核心态,完成中断处理所需要的最基本工作。,ISR完成的主要工作,屏蔽该设备的中断请求,以防止该设备再次请求中断。但其他设备的中断并不屏蔽以保证其他设备可以继续请求中断。 保护现场。 查表返回该中断的中断识别号SYSINTR。,PDA中的ISR,HP的HX2790PDA的CPU为Intel PXA270。 Intel PXA270支持多达33个一级中断源,这些中断源由PXA270的设备产生,理论上ISR也对应有33个以处理不同的

6、中断。 如果中断处理要求很简单的话,处理过程可在ISR中实现,则ISR不必再返回中断识别号到内核,而只是返回一个SYSINTR_NOP通知内核该中断处理不需要再做任何事情。,IST(Interrupt Service Thread),IST的执行需要内核的调度程序调度完成,其优先级由用户设定,优先级要高于一般的线程以保持IST能及时的调度执行。 中断处理的主要工作是在IST中完成的。IST运行于用户态,以线程方式管理,需要与其他线程比较优先级大小以获得调度执行。 由于IST总是处理系统中的实时任务,需要设定一个较高的优先级以保证其及时完成。,IST的调度过程,正常状态下IST已经运行但处于空闲

7、状态,在中断发生并由ISR返回中断识别码SYSINTR到内核后,内核将根据返回的SYSINTR的值发送一个事件对象以激活该设备的IST。 IST等待该事件并在收到该事件后被调度进入运行状态,完成中断所需要的数据传输及异常处理等工作。 IST差异性很大,与具体的设备和需要中断处理完成的工作有关。,IST完成的主要工作,创建一个事件。 得到系统的中断号。 创建一个挂起的中断服务线程(IST)。 设置IST的优先级别。 调用函数 InterruptInitialize 通知系统注册中断。 恢复IST,IST开始服务。,典型的IST结构,中断处理线程的典型结构如下 IsrThreadProc() DWORD dwStatus,dwValue int iPriority=123 ;定义线程的优先级为123 dwStatus=RegQueryValueEx(-,_T(“SysIntr”),-,-, IST结束 ,设计IST的注意事项,InterruptInitialize只是把SYSINTR变量跟一个事件相关联。系统并不关心也不知道是哪一个线程等待这个事件。 这样做的目的是为了方便移植。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号