- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 中断服务程序设计
第5章 中断服务程序设计
中断服务程序(ISR)是嵌入式应用系统获取各种事件的基本手段,而“事件”是实时性问题的讨论基础和时间计算的起点。ISR的设计质量直接影响到系统的实时性指标和操作系统的工作效率。
只要没有关中断,中断服务程序可以中断任何任务的运行,可将中断服务程序可成比最高优先级(0级)还高的“任务”。
5.1中断优先级安排原则
中断源是系统及时获取异步事件的主要手段,其优先级安排原则如下:
紧迫性:触发中断的事件允许耽误的时间越短,设定的中断优先级就越高。
关键性:触发中断的事件越关键(重要),设定的中断优先级就越高。
频繁性:触发中断的事件发生越频繁,设定的中断优先级就越高。
快捷性:ISR处理越快捷(耗时短),设定的中断优先级就越高。
中断服务程的功能应尽量简单,只要将获取的异步事件通信给关联任务,后续处理由关联任务完成。
5.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 PC,SWI_Addr ;跳转到软件中断入口地址
LDR PC,PrefetchAddr
LDR PC,DataAbortAddr
DCD 0xb9205f80
LDR PC,[PC,#-0xff0] ;跳转到向量中断入口地址(向量中断控制器)
LDR PC,FIQ_Addr ;跳转到快速中断入口地址
ResetAddr DCD ResetInit
UndefinedAddr DCD Undefined
SWI_Addr DCD SoftwareInterrupt
PrefetchAddr DCD PrefetchAbort
Nouse DCD 0
IRQ_Addr DCD 0
FIQ_Addr DCD FIQ_Handler ;快速中断服务程序入口地址
FIQ_Handler ;快速中断服务程序
STMFD SP!,{R0-R3,LR} ;保护现场
HL FIQ_Exception ;调用C语言编写的快速中断服务函数
LDMFD SP!{R0-R3,LR} ;恢复现场
SUBS PC,LR,#4 ;中断返回
由于没有操作系统介入,FIQ的ISR无法与关联任务进行通信,所获取的信息不能及时得到关联任务的处理,故只能以原始形式保存在一个缓冲区内,等待以后进行离线处理。
典型的例子是高速数据采集系统。
由于使用FIQ方式进行采样,其ISR不受操作系统管理,所以只能用“使能中断源”和“关闭中断源”来控制采样过程。这是需要设置一个采样任务来控制采样过程。其代码结构如下程序。
程序: 高速采样任务函数结构
void TaskSamp(void *pdata) //高速采样任务函数
{
进行相关设置;
while(1) //无限循环
{等待启动信号’
进行准备工作;
使能采样中断;
您可能关注的文档
最近下载
- 网络传播法规(自考14339)复习必备题库(含答案).pdf VIP
- 2023-2024学年江苏南通市启秀中学数学七年级第一学期期末质量跟踪监视试题含解析.doc VIP
- 2024年贵州省黔西南州贞丰县龙场镇招聘社区工作者真题参考答案详解.docx VIP
- 山东省烟台市蓬莱区(五四制)2024-2025学年九年级上学期期中考试数学试题.docx VIP
- A公司管理人员绩效考核优化研究.doc VIP
- 2019-2021年江苏省镇江市中考数学试卷及答案.docx VIP
- 高考地理答题模板和技巧.pdf VIP
- 昆虫物种识别与分类的现代分子方法.pptx VIP
- 精神科团体心理治疗.pptx VIP
- Z公司销售人员绩效考核体系优化路径探讨.doc VIP
原创力文档


文档评论(0)