第七讲异常与中断.ppt

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

课前回顾 线程的概念 线程的相关函数 线程的调度方法 位图调度法 多级列表调度法 学习目标 异常的概念 异常的相关函数 异常的工作流程 中断的概念 中断的相关函数 中断的工作流程 学习指南 异常和中断是硬件开发过程必须面对的问题 问题总是可能发生的 程序员必需事先按排异常的处理,以免发生系统崩溃 中断的处理是很有效的系统调用 难重点 异常和中断的工作流程 知识点 Exceptions Interrupts 异常 中断 处理接口 第4章 异常和中断 大纲要求:当前关键词:难重点: 异常是线程运行时引起的同步事件。它包括硬件异常(如内存故障、非法指令等)和软件异常(如超时)。 第4章 异常和中断 大纲要求:当前关键词:难重点: 最简单和最灵活的异常处理方法就是采用调用异常处理函数的方法 异常处理函数需要一个运行环境,要求对运行数据进行访问。 还需要一些有关异常的一些数据,包括异常信息数据指针、异常向量、错误码及其他一些与异常有关的信息。 第4章 异常和中断 大纲要求:当前关键词:难重点: 异常处理程序 与中断处理一样,不同平台的异常处理有着很大的区别,因此异常处理程序的具体实现位于硬件抽象层 HAL内 对于每一个异常都分配一个与其相对应的向量,即异常向量。 当系统调用涉及到异常处理程序时,将使用该异常向量。 异常的发生在很大程度上取决于系统硬件,尤其是处理器。 处理器的相关说明文档有详细的异常说明,硬件抽象层中的头文件halintr.h中有异常的相关定义。 第4章 异常和中断 大纲要求:当前关键词:难重点: 异常处理是一个可选项,可以通过配置选项 CYGPKG KERNEL EXCEPTIONS对其进行使能或禁止。 在应用程序经过严格的测试,并且能确信不会出现任何异常的情况下,可以禁止该选项,这样可以减少程序和数据的代码量。 第4章 异常和中断 大纲要求:当前关键词:难重点: 第4章 异常和中断 大纲要求:当前关键词:难重点: 第4章 异常和中断 大纲要求:当前关键词:难重点: 如果异常处理被使能,系统将为各种异常提供默认的异常处理程序,但这些异常程序不做任何操作。 如果应用程序要安装自己的异常处理程序和了解异常的详细情况,则必须使能CYGSEM KERNEL EXCEPTIONS DECODE选项。 该选项使能内核对异常进行译码,并将异常交给与其相对应的异常处理程序进行处理。 第4章 异常和中断 大纲要求:当前关键词:难重点: 第4章 异常和中断 大纲要求:当前关键词:难重点: 如果要使用一个新的异常处理程序,可以使用 API函数cyg_exception_set_handler函数进行安装,它为异常程序产生一个异常句柄。 见下一页 第4章 异常和中断 大纲要求:当前关键词:难重点: 异常处理程序所采用的格式如下: void My_exeception_handler(cyg_addrword_t data, cyg_code_t exception, cyg_addrword_t info) { ... } 异常处理程序的第一个参数data是已传递给cyg exception set handler函数的第三个参数;第二个参数是异常号;第三个参数与硬件及异常有关。 第4章 异常和中断 大纲要求:当前关键词:难重点: 如果需要的话,可以使用cyg_exception_clear_handler函数来恢复默认的异常处理程序。 第4章 异常和中断 大纲要求:当前关键词:难重点: 由于异常是同步发生的,因此有些时候以线程为单位对异常进行处理较为有效,这种情况下每一个线程都有一组不同的异常处理程序。 在配置工具中通过禁止CYGSEM KERNEL EXCEPTIONS GLOBAL选项可以实现这种基于以线程为单位的异常处理。 第4章 异常和中断 大纲要求:当前关键词:难重点: 第4章 异常和中断 大纲要求:当前关键词:难重点: 异常处理内核 API函数 第4章异常和中断 大纲要求:当前关键词:难重点: /*该函数创建一个新的异常处理句柄,并取回原来的异常处理句柄。其中new_handler为新的异常处理程序的函数指针,new_data是异常发生时传递给异常处理程序的一个参数。原来的异常处理句柄的信息将由参数old_handler和old_data带回。*/ void cyg_exception_set_handler( cyg_code_t exception_number, cyg_exception_handler_t *new_handler, cyg_addrword_t new_data,

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档