(东南大学集成电路课程)中断管理讲解.ppt

(东南大学集成电路课程)中断管理讲解.ppt

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

中断响应 影响中断响应的主要因素 最长指令执行时间 在一条指令执行完成后,处理其他更紧急的任务所用时间 第一次“关CPU中断”到第一次“开CPU中断”所经历的时间 多个中断源同时请求中断服务时,通过软件找到相关中断源的中断服务程序入口所经历的时间 中断响应 中断延迟:因指令执行或中断屏蔽造成的中断响应的延长。 中断延迟时间和响应时间的计算 中断延迟时间 = MAX( 最长指令执行时间,最长关中断时间 )+ 中断服务开始执行的时间 中断响应时间 = 中断延迟时间 + 保存CPU内部寄存器的时间 中断屏蔽 对于可屏蔽中断,通过禁止CPU响应中断请求的方法,改变中断源的中断服务顺序 实现机制 开关中断 屏蔽码:每个中断源对应一个屏蔽位,通过设置屏蔽位控制对中断源的响应 改变中断优先级 中断处理 中断重入 具有相同中断服务程序(函数)的中断嵌套发生 可重入条件 保护共享资源 避免寄存器冲突 示例(ARM) 1.5 uC/OS II的中断管理 中断切换(OSIntCtxSw)与任务切换(OS_TASK_SW)的区别 无需保存寄存器(进入中断时已保存) 需要保证所有被挂起的任务的栈结构一致(调整栈指针) 中断退出(OSIntExit)与任务调度(OSSched)的区别 中断嵌套层数的判断 就绪表检索值的保存 切换方式 2.1 时间管理的功能 任务有限等待的计时 维持系统时间片轮转调度 软定时器的定时管理 维持日历时间 2.2 时间管理的硬件基础 嵌入式系统中的时钟源 硬件定时器(Timer) 由CPU时钟分频计数产生; 系统时钟(或称OS时钟)的时钟源,其最小粒度由应用和操作系统的特点决定; 实现系统时间片调度、任务超时等待和周期性唤醒等功能的基础。 实时时钟(Real Time Clock,RTC) 由外部晶振分频计数产生; 独立于操作系统,为整个系统提供一个计时标准; 一般靠电池供电,即使系统断电也可以维持计时; 实现日历管理功能的基础。 系统时钟 嵌入式操作系统的周期性工作节拍(tick) 作用 为时间片轮转调度提供时间片 为任务的超时等待提供到时唤醒 为任务的软定时器提供计时判读 时间精度与CPU开销的权衡 一般周期选择1ms~10ms 2.3 uC/OS II的时间管理 系统时钟的中断服务程序(OSTickISR) (1)保存处理器寄存器的值; (2)调用OSIntEnter()或将OSIntNesting加1; (3)调用OSTimeTick(); /*检查每个任务的时间延时*/ (4)调用OSIntExit(); (5)恢复处理器寄存器的值; (6)执行中断返回指令。 系统时钟节拍器必须在多任务系统启动后开始 2.3 uC/OS II的时间管理 时钟节拍函数 2.3 uC/OS II的时间管理 系统时钟管理函数(os_time.c) 任务延时:OSTimeDLY 任务按日历延时:OSTimeDLYHMSM 结束任务延时:OSTimeDlyResume 获得系统时间:OSTimeGet 设置系统时间:OSTimeSet 2.3 uC/OS II的时间管理 软定时器 单次触发:只触发执行一次挂接的定时服务例程; 周期触发:在每次触发服务例程后,经过相同的时间间隔又会触发挂接在该定时器上的服务例程。 2.3 uC/OS II的时间管理 软定时器管理函数(os_tmr.c) 创建定时器:OSTmrCreate 删除定时器:OSTmrDel 启动定时器:OSTmrStart 暂停定时器:OSTmrStop 后台服务任务:OSTmrTask 例如:掉电中断,当发生掉电时,无论程序正在进行什么样的运算,它都肯定无法正常运行下去。这种情况下,急需进行的是一些掉电保护的操作。对这类中断,应随时进行响应; * * 与中断相关的任务管理 如果中断处理导致系统中出现比被中断任务具有更高优先级的就绪任务出现: 需要把高优先级任务放入就绪队列; 把被中断的任务从执行状态转变为就绪状态; 完成用户中断服务程序后,在中断接管程序的中断后续处理中激活重调度程序,使高优先级任务能在中断处理工作完成后得到调度执行。 1.5 uC/OS II的中断管理 中断服务程序 (1)保存全部CPU寄存器的值; (2)调用OSIntEnter(),或直接把全局变量OSIntNesting(中断嵌套层次)加1; (3)执行用户代码做中断服务; (4)调用OSIntExit(); (5)恢复所有CPU寄存器; (6)执行中断返回指令。 1.5 uC/OS II的中断管理 关键函数 OSIntEnter(C代码分析) OSIntCtxSw(汇编代码分析) OSIntExit(C代码分析) 1.5 uC/OS II的中断管理 中断服务过程 1.5 uC/OS II的

文档评论(0)

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

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

1亿VIP精品文档

相关文档