网站大量收购独家精品文档,联系QQ:2885784924

驱动程序 windows ce嵌入式系统开发课程教材.ppt

驱动程序 windows ce嵌入式系统开发课程教材.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
驱动程序 windows ce嵌入式系统开发课程教材.ppt

项目13:驱动程序的编制(1) 本节课程主要知识点 驱动程序模型 驱动程序的中断处理 重点和难点 重点 驱动程序的基本概念 难点 驱动程序的中断处理 驱动程序模型 驱动程序 驱动程序是硬件与操作系统间的底层软件。由于驱动程序的存在,应用程序可以使用标准函数来访问硬件,而不必关心硬件是如何工作的。 操作系统提供了一组标准的接口,驱动程序就是要实现这组接口,并将这些接口的实现映射到具体的对硬件的操作上。 驱动程序的编写 Windows CE5.0自带了很多硬件驱动程序,但在一些特定的情况下,还需要程序员自已开发驱动程序。常见的情况是 操作系统没有该硬件的驱动程序 这是比较常见的情况,需要用户自己编写。 扩展已有驱动 已有的驱动功能不完整,需要扩存或重写。 实现伪驱动 实现一些特定的软件功能。 本机设备驱动程序 适用于集成到Windows CE平台的设备,如键盘、显示器、PC卡插槽等。 操作系统启动时加载。 流接口驱动程序 一般类型的设备驱动程序,支持几乎所有可连接在Windows CE平台上的外部设备。 流接口驱动程序都是以用户级的动态链接库加载的。 驱动程序的中断处理 驱动程序的中断处理 中断是外部设备请求CPU服务的基本手段,是保证嵌入式系统实时性能的重要方法。 中断的请求与响应是由硬件和操作系统共同来完成的。基于ARM核的中断信号是由IRQ和FIQ来产生的。 中断的处理是由设备的驱动程序来完成的。驱动程序中包含有该设备的中断服务程序。 Windows CE中的中断 与其他计算机结构一样,当设备需要系统的服务时,设备会用中断信号来通知CPU。 Windows CE5.0把中断处理分为两个过程中断服务例程ISR和中断服务线程IST。 中断的处理过程 Windows CE5.0的中断处理分为两个阶段,当中断发生且该中断没有被屏蔽时,内核将进入中断服务例程ISR。 ISR一般是一个简短的程序,可以用汇编或C语言来编程实现,用于完成基本的中断处理并返回中断识别号SYSINTR到内核中。其后内核将根据SYSINTR的值发送一个事件以激活一个中断服务线程IST。 IST是中断处理的核心程序,处理中断服务所需要完成的具体工作。 ISR (Interrupt Service Routine) ISR由驱动程序在系统初始化过程时向内核注册。系统将建立所有设备的ISR列表,当设备请求中断时,内核可以迅速转向相关的ISR以处理设备的中断请求。 ISR运行在核心态,完成中断处理所需要的最基本工作。 ISR完成的主要工作 屏蔽该设备的中断请求,以防止该设备再次请求中断。但其他设备的中断并不屏蔽以保证其他设备可以继续请求中断。 保护现场。 查表返回该中断的中断识别号SYSINTR。 PDA中的ISR HP的HX2790PDA的CPU为Intel PXA270。 Intel PXA270支持多达33个一级中断源,这些中断源由PXA270的设备产生,理论上ISR也对应有33个以处理不同的中断。 如果中断处理要求很简单的话,处理过程可在ISR中实现,则ISR不必再返回中断识别号到内核,而只是返回一个SYSINTR_NOP通知内核该中断处理不需要再做任何事情。 IST(Interrupt Service Thread) IST的执行需要内核的调度程序调度完成,其优先级由用户设定,优先级要高于一般的线程以保持IST能及时的调度执行。 中断处理的主要工作是在IST中完成的。IST运行于用户态,以线程方式管理,需要与其他线程比较优先级大小以获得调度执行。 由于IST总是处理系统中的实时任务,需要设定一个较高的优先级以保证其及时完成。 IST的调度过程 正常状态下IST已经运行但处于空闲状态,在中断发生并由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”),-,-,dwValue,-) ;读取本IST的SYSINT

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档