第5 章 中断服务程序设计 中断服务程序(ISR)是嵌入式应用系统获取各种事件的基本手段,而“事件”是实时性问题的讨论基础和时间计算的起点
ISR 的设计质量直接影响到系统的实时性指标和操作系统的工作效率
只要没有关中断,中断服务程序可以中断任何任务的运行,可将中断服务程序可成比最高优先级(0 级)还高的“任务”
1 中断优先级安排原则 中断源是系统及时获取异步事件的主要手段,其优先级安排原则如下: 紧迫性:触发中断的事件允许耽误的时间越短,设定的中断优先级就越高
关键性:触发中断的事件越关键(重要),设定的中断优先级就越高
频繁性:触发中断的事件发生越频繁,设定的中断优先级就越高
快捷性:ISR 处理越快捷(耗时短),设定的中断优先级就越高
中断服务程的功能应尽量简单,只要将获取的异步事件通信给关联任务,后续处理由关联任务完成
2 不受操作系统管理的中断服务程序 正常情况下,ISR 应受操作系统的管理,因很多任务是靠 ISR 触发的
但在两种情况下 ISR 不受操作系统管理:①没有必要;②操作系统没有对该 ISR 进行管理
实时操作系统uC/OS-Ⅱ移植到 ARM7 体系的CPU 上时,没有对 FIQ 进行处理,即 FIQ是不受操作系统管理的
选用FIQ 来响应实时性要求最高的高速采样操作是一个有效措施,保护现场的工作量很小(FIQ 专有的8 个寄存器不需要保护)
在工程模板的系统启动文件Startup
s 中,已经把汇编代码部分处理好,用户只需要用C语言编写快速中断服务函数 FIQ_Exception()即可,不需考虑保护现场和恢复现场的问题
程序: Startup
s 中队 FIQ 的处理 Reset ;异常向量表 LDR PC,ResetAddr ;跳转到复位入口地址 LDR PC,UndefinedAddr LDR