基于嵌入式实时操作系统的程序设计(4)

基于嵌入式实时操作系统的程序设计(4)

ID:20295402

大小:821.50 KB

页数:57页

时间:2018-10-09

基于嵌入式实时操作系统的程序设计(4)_第1页
基于嵌入式实时操作系统的程序设计(4)_第2页
基于嵌入式实时操作系统的程序设计(4)_第3页
基于嵌入式实时操作系统的程序设计(4)_第4页
基于嵌入式实时操作系统的程序设计(4)_第5页
资源描述:

《基于嵌入式实时操作系统的程序设计(4)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章 中断服务程序设计中断服务程序(ISR)是嵌入式应用系统获取各种事件的基本手段,而“事件”是实时性问题的讨论基础和时间计算的起点。ISR的设计质量直接影响到系统的实时性指标和操作系统的工作效率。5.1中断优先级安排为不同的中断服务程序安排不同的优先级,在允许中断嵌套的情况下,最高优先级的中断总是能够得到及时响应。5.1.1中断的优先级资源中断的优先级资源就是CPU的中断系统。以ARM7体系的CPU为例,最多可以有32个中断资源。每个具体的中断源可以将其设定为FIQ,使其具有最高优先级,但FI

2、Q最好是分配给唯一的中断源,否则就失去意义;也可以设定为向量IRQ,使其具有中等优先级,但向量IRQ的总数不能超过16个,这些中断源优先级的高低按向量编号从0(最高)到15(最低)排序;如果中断源的个数超过17个,则剩余的中断源只能设定为非向量IRQ,其优先级最低。操作系统本身必须使用一个定时器中断源来作为系统节拍中断,它是操作系统工作的基础。只要没有关闭中断,中断服务程序可以中断任何任务的运行,故可以将中断服务程序看成比最高优先级(0级)的任务还要优先的“任务”。5.1.2中断优先级安排原则中断

3、源是系统及时获取异步事件的主要手段,其优先级安排原则如下:》紧迫性:触发中断的事件允许耽误的时间越短,设定的中断优先级就越高。例如脉冲峰值数据采样时耽误的时间越短,采样结果就越真实。紧迫性为最高原则。》关键性:触发中断的事件越关键(重要),设定的中断优先级就越高。》频繁性:触发中断的事件发生越频繁,设定的中断优先级就越高。频繁事件的间隔时间比较短,如不及时处理有可能遗漏。》快捷性:在前三项条件相近时,ISR处理越快捷(耗时短),设定的中断优先级就越高。在发生中断嵌套时,耗时短的ISR嵌套在耗时长的

4、ISR里时对耗时长的ISR的完成时间影响不明显,而耗时长的ISR嵌套在耗时短的ISR里时对耗时短的ISR的完成时间影响很明显。中断服务程序的功能应该尽量简单,只要将获取的异步事件通信给关联任务即可,后续处理交由关联任务完成。5.2不受操作系统管理的中断服务程序在正常情况下,ISR应该接受操作系统的管理,因为很多任务是靠ISR触发的。但在两种情况下ISR不受操作系统管理:一种情况是没有必要;另一种情况是操作系统根本就没有对该ISR进行管理。某些控制系统需要在掉电时将各种现场动态数据保存起来,以便下次

5、上电时恢复原样。在这类系统中配备了掉电检测单元,在电源电压开始下降时及时触发掉电中断(配备最高优先级),在掉电ISR中将各种现场动态数据保存起来,然后使系统进入掉电状态,只有再次复位时系统才能开始重新运行。由于掉电ISR运行之后系统不再运行任何程序,故掉电ISR没有必要受操作系统管理。实时操作系统μc/os-II移植到ARM7体系的CPU上时,没有对FIQ进行处理,即FIQ是不受操作系统管理的。选用FIQ来响应实时性要求最高的高速采样操作是一个有效措施,保护现场的工作量很小(FIQ专有的8个寄存器

6、不需要保护)。在工程模板的系统启动文件Startup.s中,已经把汇编代码部分处理好了。用户只需要用C语言编写快速中断服务函数FIQ_Exception()即可,不需要考虑保护现场和恢复现场的问题。由于没有操作系统介入,FIQ的lSR无法与关联任务进行通信,所获取的信息不能及时得到关联任务的处理,故只能以原始形式保存在一个缓冲区内,等待以后进行离线处理。其典型的例子是高速数据采集系统。5.3受操作系统管理的中断服务程序实时操作系统μ/C/OS-II移植到ARM7体系的CPU上时,对IRQ进行了管理

7、,其ISR代码的编写必须遵循一定的规则。5.3.1中断服务程序的结构受实时操作系统管理的ISR与不受实时操作系统管理的ISR有很大区别,体现在以下3个时段。(1)进入中断:除了保护现场外,还需要调用“进入中断”服务函数,用来通知实时操作系统,使实时操作系统掌握当前中断的嵌套深度。(2)运行功能代码:在这部分代码中,除了完成本ISR的实质功能的代码外,还包含了对系统通信服务函数的调用,实现与其他任务进行通信的功能。正是这种通信功能,使关联任务得到同步信号或数据,从而进入就绪状态。但在ISR中不允许调

8、用延时函数和可能被挂起的系统服务函数。(3)退出中断:必须执行实时操作系统规定的“退出中断”流程。首先根据中断嵌套深度判断被本次中断所中断的代码是“任务级”还是“中断级”,如果是“中断级”,则返回被中断的较低级的ISR;如果被中断的代码是“任务级”且不允许进行任务调度,则返回被中断的任务。如果允许进行任务调度,且出现了比被中断的任务的优先级更高的就绪任务,便进行任务切换;否则还是返回被中断的任务。在中断返回时,如果没有进行任务切换,则恢复中断进入时保护的现场;如果进行了任务切换,则

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。