书签 分享 收藏 举报 版权申诉 / 31
上传文档赚钱

类型天脉(ACoreOS)操作系统培训第六章:异常中断与定时器课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4307300
  • 上传时间:2022-11-28
  • 格式:PPT
  • 页数:31
  • 大小:665KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《天脉(ACoreOS)操作系统培训第六章:异常中断与定时器课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    天脉 ACoreOS 操作系统 培训 第六 异常 中断 定时器 课件
    资源描述:

    1、第六章第六章异常、中断与定时器异常、中断与定时器n 异常处理与信号机制异常处理与信号机制n 中断服务程序中断服务程序n 系统时钟、高精度时钟、看门狗定时器系统时钟、高精度时钟、看门狗定时器2提纲提纲异常处理概述异常处理概述n异常异常为为CPUCPU产生的正常执行流程外的事件。如,产生的正常执行流程外的事件。如,traptrap和断点指令、零除、浮点或整形溢出、非法和断点指令、零除、浮点或整形溢出、非法指令或地址错等指令或地址错等n 异常将产生异常将产生“内部内部”中断中断n 操作系统在系统初始化阶段安装异常处理程序,操作系统在系统初始化阶段安装异常处理程序,这些程序在异常发生时被调用,并可调用

    2、用户定这些程序在异常发生时被调用,并可调用用户定义的异常处理程序义的异常处理程序n 异常处理程序通过发送信号与用户任务进行通信。异常处理程序通过发送信号与用户任务进行通信。3异常处理概述异常处理概述n异常异常与不同体系结构相关,本培训教程仅讨论异与不同体系结构相关,本培训教程仅讨论异常的通用处理。不同体系结构相关处理,可参考常的通用处理。不同体系结构相关处理,可参考硬件手册。硬件手册。4信号信号5信号信号n信号信号类似一种软中断类似一种软中断n 信号发送给指定任务,用于通知发生某种异步事信号发送给指定任务,用于通知发生某种异步事件件n 任务在接收到指定信号后,执行相应的信号处理任务在接收到指定

    3、信号后,执行相应的信号处理n 信号处理完成后,正常任务执行被恢复(除非信信号处理完成后,正常任务执行被恢复(除非信号引起异常发生)号引起异常发生)6信号信号n 信号机制建议使用于通常的任务间通信信号机制建议使用于通常的任务间通信n信号可能以非常高的优先级被处理,如信号到达时,信号可能以非常高的优先级被处理,如信号到达时,任务正采用优先级继承或优先级天花板任务正采用优先级继承或优先级天花板n打断任务正常执行流程(最好创建多个任务,而不采打断任务正常执行流程(最好创建多个任务,而不采用在一个任务内通过信号实现多种操作)用在一个任务内通过信号实现多种操作)n可能引入重入的问题,当任务执行的信号处理程

    4、序与可能引入重入的问题,当任务执行的信号处理程序与任务正常代码调用相同的接口时任务正常代码调用相同的接口时n任务通常采用信号量实现对临界区的互斥访问,假设任务通常采用信号量实现对临界区的互斥访问,假设任务在临界区访问时接收信号,如果信号处理中获取任务在临界区访问时接收信号,如果信号处理中获取该互斥信号量,同样获取成功,但资源互斥访问可能该互斥信号量,同样获取成功,但资源互斥访问可能被破坏被破坏7注册一个信号注册一个信号n 注册一个信号处理程序注册一个信号处理程序signal(signo,handler)signal(signo,handler)signosigno信号类型信号类型handler

    5、 handler 信号处理程序信号处理程序返回先前安装的信号处理程序,或者返回返回先前安装的信号处理程序,或者返回SIG_ERRSIG_ERR8n 异常处理与信号机制异常处理与信号机制n 中断服务程序中断服务程序n 系统时钟、高精度时钟、看门狗定时器系统时钟、高精度时钟、看门狗定时器9提纲提纲中断中断n 中断允许外部设备通知中断允许外部设备通知CPUCPU特定事件发生特定事件发生n 当发生外部中断时,用户安装的处理程序被执行当发生外部中断时,用户安装的处理程序被执行n 中断发生时占用中断时间,而不是任务执行时间中断发生时占用中断时间,而不是任务执行时间n 目标板定时器是常见中断源,可以辅助了解

    6、外部目标板定时器是常见中断源,可以辅助了解外部中断的工作原理中断的工作原理10中断处理示例中断处理示例-PowerPC-PowerPC11中断处理示例说明中断处理示例说明n PowerPCPowerPC有单独的外部中断引脚。板级支持包有单独的外部中断引脚。板级支持包(BSPBSP)可以支持外部中断控制器实现中断嵌套。)可以支持外部中断控制器实现中断嵌套。n 中断表中中断入口数量取决于中断表中中断入口数量取决于BSPBSP中中断控制器的中中断控制器的能力。目前中断向量表最多可支持能力。目前中断向量表最多可支持256256个。个。n 外部中断的处理流程外部中断的处理流程n保存保存CPUCPU寄存器

    7、寄存器n从中断控制器中读取中断号从中断控制器中读取中断号n调用用户连接的中断处理程序(用户关心)调用用户连接的中断处理程序(用户关心)n清中断控制器状态清中断控制器状态n恢复恢复CPUCPU寄存器并返回寄存器并返回12中断和优先级中断和优先级中断可以抢占最高优先级的任务中断可以抢占最高优先级的任务13中断栈中断栈n 系统使用独立中断栈系统使用独立中断栈n 中断栈在系统初始化阶段分配中断栈在系统初始化阶段分配n 中断栈在生成操作系统时配置中断栈在生成操作系统时配置n 系统支持中断嵌套,中断栈配置时应充分考虑嵌系统支持中断嵌套,中断栈配置时应充分考虑嵌套时最大栈使用情况套时最大栈使用情况14中断服

    8、务执行限制中断服务执行限制n 任务只有中断服务执行完成后才能执行任务只有中断服务执行完成后才能执行n 中断服务中限制使用操作系统机制,特别是中断中断服务中限制使用操作系统机制,特别是中断不能够阻塞不能够阻塞n不能够调用不能够调用ACoreOs_semaphore_obtain()/semTake()n不能够调用不能够调用malloc(内部使用信号量)(内部使用信号量)n不能够调用不能够调用I/O系统程序(如,系统程序(如,printf())n参考指南给出了每个函数能否在中断服务程序参考指南给出了每个函数能否在中断服务程序调用的限制说明调用的限制说明15中断服务编制指南中断服务编制指南n 尽可能

    9、保证中断服务程序简短尽可能保证中断服务程序简短n延迟低级别和同优先级的中断延迟低级别和同优先级的中断n延迟所有任务延迟所有任务n调试困难调试困难n避免使用浮点操作避免使用浮点操作n 浮点操作速度较慢浮点操作速度较慢n 用户必须自行保存和恢复浮点相关寄存器用户必须自行保存和恢复浮点相关寄存器n尽可能将处理移交给任务处理尽可能将处理移交给任务处理n 任务处理时间更长任务处理时间更长n 时间要求更低时间要求更低16典型的中断服务典型的中断服务n 读和写存储器映射的读和写存储器映射的I/O寄存器寄存器n 与任务通信采用如下方式与任务通信采用如下方式n写存储区写存储区n非阻塞形式写到消息队列非阻塞形式写

    10、到消息队列n释放二进制信号量释放二进制信号量17中断服务调试中断服务调试n 中断服务中采用中断服务中采用logMsg()将信息输出到指定的控将信息输出到指定的控制台制台(仅使用于配置仅使用于配置VxWorks兼容包情形兼容包情形)logMsg(“foo=%dn”,foo,0,0,0,0,0);发送请求给发送请求给tLogTask执行执行printf()的功能的功能n 类似类似printfprintf()()功能,须注意如下事项:功能,须注意如下事项:n参数必须是参数必须是4 4个字节个字节n格式外字符串和格式外字符串和6 6个参数个参数n采用系统级调试功能可以调试中断服务,任务采用系统级调试功

    11、能可以调试中断服务,任务级不可以调试中断服务程序级不可以调试中断服务程序18n 异常处理与信号机制异常处理与信号机制n 中断服务程序中断服务程序n 系统时钟、高精度时钟、看门狗定时器系统时钟、高精度时钟、看门狗定时器19提纲提纲定时器定时器n 目标板的定时器周期性地中断目标板的定时器周期性地中断CPUn 定时器周期间隔到达时,可以执行用户连接处理定时器周期间隔到达时,可以执行用户连接处理程序,可用于:程序,可用于:n 查询硬件状态查询硬件状态n 检查系统错误检查系统错误n 避免不准确操作避免不准确操作n操作系统提供通用的接口操作两个定时器操作系统提供通用的接口操作两个定时器n 系统时钟系统时钟

    12、n 高精度时钟(如果可用)高精度时钟(如果可用)n 如果目标板有其他的定时器,可以编写额外驱动如果目标板有其他的定时器,可以编写额外驱动程序进行控制程序进行控制20系统时钟系统时钟n 系统时钟中断服务为系统时钟脉冲,周期到达系统时钟中断服务为系统时钟脉冲,周期到达n增加增加tick计数计数n更新延迟和超时更新延迟和超时n检查时间片轮转调度检查时间片轮转调度n系统时钟到达时,可能引起系统重调度系统时钟到达时,可能引起系统重调度n系统时钟的频率可以配置,根据用况配置系统时钟的频率可以配置,根据用况配置sysClkRateSet()设置时钟频率设置时钟频率int sysClkRateGet()返回时

    13、钟频率返回时钟频率 n sysClkRateSet()不仅仅在系统初始化阶段调用不仅仅在系统初始化阶段调用21看门狗定时器看门狗定时器n 系统时钟的用户接口系统时钟的用户接口n 在指定时间延时后执行在指定时间延时后执行C程序程序n 在时间延时到达时,连接的程序执行在时间延时到达时,连接的程序执行n作为系统时钟作为系统时钟ISR的一部分的一部分n满足中断服务的限制满足中断服务的限制22看门狗定时器看门狗定时器n 以以VxWorks兼容包提供看门定时器为例兼容包提供看门定时器为例n 创建看门狗定时器创建看门狗定时器WDOG_ID wdCreate(void)创建成功返回看门狗创建成功返回看门狗ID

    14、,失败返回,失败返回NULL。n启动(或)重启动看门定时器启动(或)重启动看门定时器STATUS wdStart(WDOG_ID wdId,int delay,FUNCPTR pRoutine,int parameter)wdId看门狗看门狗ID,由创建,由创建wdCreate返回返回delay延时的延时的tick值值pRoutine 延时时间到时调用程序延时时间到时调用程序parameter传递给调用程序的参数传递给调用程序的参数23看门狗定时器看门狗定时器n wdStart()当指定延时时间达到时,可以执行一次当指定延时时间达到时,可以执行一次看门狗服务。为了周期执行,看门狗服务必须自看门

    15、狗服务。为了周期执行,看门狗服务必须自身调用身调用wdStart()进行重启动进行重启动n 只有最近调用只有最近调用wdStart()启动的看门狗才能运行,启动的看门狗才能运行,为了运行多个看门狗服务程序,必须使用多个看为了运行多个看门狗服务程序,必须使用多个看门狗定时器门狗定时器24如何使用看门狗如何使用看门狗n 使用看门狗周期执行使用看门狗周期执行wdId=wdCreate();wdStart(wdId,DELAY_PERIOD,myWdIsr,0);void myWdIsr(int param)doit(param);wdStart(wdId,DELAY_PERIOD,myWdIsr,p

    16、aram);ndoit()服务可能服务可能n 查询硬件设备查询硬件设备n 解除特定任务阻塞解除特定任务阻塞n 检查系统是否存在错误检查系统是否存在错误25截止期超时检测截止期超时检测n 从截止期超时中恢复从截止期超时中恢复26WDOG_ID wdId;void foo(void)wdId=wdCreate();/*必须在必须在10秒内完成每个周期秒内完成每个周期*/FOREVERwdStart(wdId,DELAY_10_SEC,fooISR,0);fooDoWork();void fooISR(int param)/*处理截止期超时处理截止期超时*/fooDoWork()fooDoWork(

    17、)必须每必须每1010秒运行,如果执行小秒运行,如果执行小于于1010秒钟,看门狗重新秒钟,看门狗重新启动(启动(fooISR()fooISR()没有被没有被调用)。如果调用)。如果fooDoWork()fooDoWork()执行时间超执行时间超过过1010秒钟,则看门狗程秒钟,则看门狗程序序fooISR()fooISR()将被调用处将被调用处理紧急事件理紧急事件停止看门狗停止看门狗n 取消先前启动的看门狗取消先前启动的看门狗STATUS wdCancel(WDOG_ID wdId)n 消亡看门狗定时器(取消任何先前的启动)消亡看门狗定时器(取消任何先前的启动)STATUS wdDelete(

    18、WDOG_ID wdId)27查询考虑查询考虑n 任务和中断执行时均可以进行查询任务和中断执行时均可以进行查询n中断服务里面查询较为可靠中断服务里面查询较为可靠n任务里面查询可能受到系统的轻微影响任务里面查询可能受到系统的轻微影响n在任务里面查询可能有如下两种情况在任务里面查询可能有如下两种情况n 任务延时(如,任务延时(如,taskDelay):更快,但时间可能):更快,但时间可能漂移漂移n wdStart()+semGive():更加健壮:更加健壮28查询警告查询警告n 下列代码是正确的,只有当系统时钟频率是下列代码是正确的,只有当系统时钟频率是15Hz的整数倍的整数倍void myWdI

    19、SR()wdStart(myWdId,sysClkRateGet()/15,myWdISR,0);pollMyDevice();n为了防止系统在每个时钟为了防止系统在每个时钟tick开销过大,不能开销过大,不能够将系统时钟频率设置过高够将系统时钟频率设置过高n可以使用高精度时钟以很高频率进行查询可以使用高精度时钟以很高频率进行查询29高精度时钟高精度时钟n 对于高频率的查询,可采用高精度时钟对于高频率的查询,可采用高精度时钟n 系统提供操作高精度时钟的服务系统提供操作高精度时钟的服务nsysAuxClkConnect()连接连接ISR到高精度时钟到高精度时钟nsysAuxClkRateSet()设置高精度时钟频率设置高精度时钟频率nsysAuxClkEnable()启动高精度时钟启动高精度时钟nsysAuxClkDisable()停止高精度时钟停止高精度时钟n一些目标板没有高精度时钟一些目标板没有高精度时钟30综述综述n 使用定时器进行查询使用定时器进行查询31

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:天脉(ACoreOS)操作系统培训第六章:异常中断与定时器课件.ppt
    链接地址:https://www.163wenku.com/p-4307300.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库