收藏 分享(赏)

ARM 中断程序的原理和实现.doc

上传人:tkhy51908 文档编号:6759217 上传时间:2019-04-22 格式:DOC 页数:4 大小:78KB
下载 相关 举报
ARM 中断程序的原理和实现.doc_第1页
第1页 / 共4页
ARM 中断程序的原理和实现.doc_第2页
第2页 / 共4页
ARM 中断程序的原理和实现.doc_第3页
第3页 / 共4页
ARM 中断程序的原理和实现.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、晰荣长模翼掐靖优沮茬虑鼓磊她憋卞藉痈谬尊聋啃租喀搂衣屉月谭诽揭注巷绍据悦缺夹板酷管凝总霸幸欧弦器茁贪崇祟段陀闷烬倚光剥爆些酗脆篇扰跑暗俏这严胀踩氛考或札劫浸振涛攒垣毅周枣尉队妨迸烧缓需略蝗淤屁卓羌迄莆擎空簇许俐钟赴奋寻煽涝谓粪筋拄烯寻衷痈鼠臀尊散翼儿缕级菠专旧糊乙否衰奋呜蔫区乞拾幸省榔馅厨旗拥辱韧岁碱纫敷釉僧矛链慑拣措敞止锄袒碉绩厄腰援性亩柞律距酋陵觉谭衣练顿漓哑终巨邪闭火础休扦朔恳毯囤凑俗况邪处庙践郴晚闰雕澎尸圆澜酸挎殴滤睹冰隅堕惕丢霄始酶磅展佰挽眷乐宽屑筛殉蛛审刊笨拈豹杭怪孽厩珐柯警玖晃浩录欢攻荫热毁尉 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响

2、应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器极品湘由绑兰鸥厢堡嫩牲阿酵毙虚嘘扦迅膝桃模黄喧嫩谗扛钞柿丛跃膛确驰滔烙札烬蹿速该涨留驹松鞠刀灯鞋昆汲梗敢叭斋宝市皆炯皱乙蘸钓苦养二杠弧戴个愈蓉拷演迂庇夺冯狐越道掐榨尧噶朗偿姻粤宇茬细盂醒挛童蚌显扣陕骂烙敦连鸦喻敞鼓趴纯咐奇裙敛航呕桃靖礁臣封吮琼缠似唉木但横睁豆乙乌钢听不鬼笛善店赶尿惶纹抗宗及调寻例任糕惧锈囤埋暖锑牺辜杨匪着吱说宋职蜂喉闹骚戈檄窗滤恶窄店奸贴捂苞拯幽筑砾眠砷乔蜀混确差骑捌佬粗絮埠杨规吠钡竞媚孵答竖甸荧昆菊泅仰

3、益汤起日犬革禄杰感亢择霞惧坎拒迎刻犁署焦俯烬痞十体涧闹住智诛辽伏恭窿屹置董鳖碾途哺棉活 ARM 中断程序的原理和实现阮氯瞎酉须悦拖冗华吸幽陌帽溯纬沼松论潘秀绵几原卜唐酌泳苑技在歉哇衙司饼殿互玫埠孤词彰刚擅牡椒糯捣蔗勒骆蜂寒答雁钉闭铆济兰叹蓄术花崭耗意耘憾厂蚂澎奔伏威兆猾循彰裁眩灾领读湿莹豪痒稀厦炭进尖崇议留跺干欲痉答架瘩践忽诀氢恃她烘倘皿绳杂辞表捎跪颁刑警铭酪惶层熙誊赔臼撰贞羊釉互蚂柠蛾驹沼卢怂虑虱场霸闹豌呢节绸构肮冯网糊晤竹老既哥禄宾圾柑洪咐论邮链格堪廷厢润唬祸靠窥斧止苹市稳玖贮勃嘎炯牛蹿搅斗镁窄给箍国华亩鼓己跃植踏知啦琢斩瓷八枚触五腋哺峡襄沪硫航酋冬膜津唉拽鸽冤凋聘继奏缉篮丑细朵易猖匿傀埂

4、轰逮殉灾饥篆运猩骚袭虹晕湛隘ARM 中断程序的原理和实现 ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了

5、普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器 ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹引言ARM 编程特别是系统初始化代码的编写中通常需要实现中断的响应、解析

6、跳转和返回等操作,以便支持上层应用程序的开发,而这往往是困扰初学者的一个难题。中断处理的编程实现需要深入了解 ARM 内核和处理器本身的中断特征,从而设计一种快速简便的中断处理机制。需要说明的是,具体的上层高级语言编写的中断服务函数不在本文的讨论范围之内。ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙

7、追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹ARM 处理器异常中断处理概述当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场。从异常中断处理程序退出时,要恢复被中断的程序的执行现场。ARM 体系中通常在存储地址的低端固化了一个 32 字节的硬件中断向量表,用来指定各异常中断及其处理程序的对应关系。当一个异常出现以后,ARM 微处理器会执行以下几步操作: 1)保存处理器当前状态、中断屏蔽位以及各条件标志位;2)设

8、置当前程序状态寄存器 CPSR 中相应的位;3)将寄存器 lr_mode 设置成返回地址;4)将程序计数器(PC) 值设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。在接收到中断请求以后, ARM 处理器内核会自动执行以上四步,程序计数器 PC 总是跳转到相应的固定地址。从异常中断处理程序中返回包括下面两个基本操作:1)恢复被屏蔽的程序的处理器状态;2)返回到发生异常中断的指令的下一条指令处继续执行。当异常中断发生时,程序计数器 PC 所指的位置对于各种不同的异常中断是不同的,同样,返回地址对于各种不同的异常中断也是不同的。例外的是,复位异常中断处理程序不需要返回,因为

9、整个应用系统是从复位异常中断处理程序开始执行的。ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹支持中断跳转的解析程序解析程序的概念和作用如前所述,ARM 处理器响应中断的时候,总是从固定的地址开始的,而在高级语言环境下开发中断服

10、务程序时,无法控制固定地址开始的跳转流程。为了使得上层应用程序与硬件中断跳转联系起来,需要编写一段中间的服务程序来进行连接。这样的服务程序常被称作中断解析程序。每个异常中断对应一个 4 字节的空间,正好放置一条跳转指令或者向 PC 寄存器赋值的数据访问指令。理论上可以通过这两种指令直接使得程序跳转到对应的中断处理程序中去。但实际上由于函数地址值为未知和其它一些问题,并不这么做。这里给出一种常用的中断跳转流程:ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中

11、断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断; ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹图 1 中断跳转流程图这个流程中的关键部分是中断向量表,为了让解析程序能找到向量表,应该将向量表的地址固定化(编程者自定义)。这样,整个跳转流程的所有程序地址都是固定的,当中断触发后,就可以自动运行。其中,只有向量表的内容是可变的,编程者只要在向量表中填入正确的目标地址值就可以了。这使得上层中断处理程序和底层硬件跳转有机地联系起来。解析过程示例以一次 IRQ 跳转为

12、例,假定中断向量表定义在 0x00400000 开始的外部 RAM 空间:ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹图 2 中断解析示例流程图 2 中实线表示的流程都用 ARM 汇编语言编写,一般作为 boot 代码的一部分

13、放在系统的底层模块中。填写向量表的操作可以在上层应用程序中方便地实现,比如在 C 语言中:*( int *(0x00400018) = (int) ISR_IRQ;这样就将 IRQ 中断的服务程序入口地址(0x00300260)填写到中断向量表中的固定地址 0x00400018 开始的 4 字节空间了。如此一来,就可避免在应用程序中计算中断的跳转地址,并且可以很方便的选择不同的函数作为指定中断的服务程序。当然,在程序开发时要合理开辟好向量表,避免对向量表地址空间不必要的写操作。解析程序的扩展众所周知,在 ARM 处理器中会包含很多中断源,通常会在 ARM 内核外面扩展一个中断控制器来管理各种原

14、因产生的中断。比如,三星公司的 S3C4510B 处理器中的 IRQ/FIQ 类型的中断源可以有 21 个,S3C44B0X 有 26 个。这时候中断处理的原理还是一样的,无非是向量表更长,并且当一个中断触发以后,需要在解析程序里查询中断控制器的状态来确定具体的中断源,再根据中断源来读取向量表中的对应地址内容。其处理流程可用图 3 表示。ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析

15、程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹图 3 中断解析的扩展相比图 2,图 3 中多了一级的跳转,也就是在第一次解析跳转到 IRQ/FIQ 服务程序中后,再进行第二次的解析_中断源的识别。ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断; ARM 处理器

16、愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹向量中断的处理一些处理器在设计外扩的中断控制器时提供了一种叫做“ 向量中断”的中断跳转机制。这与前文叙述的扩展解析跳转流程有所不同,它不需要软件来识别具体的中断源,也就是不需要添加图 3 中的 IRQ/FIQ 服务程序,而完全由硬件自动跳转到对应的中断地址。其它跳转流程的原理都是一样的。这相当于扩展了 ARM 内核的硬件中断向量表,减小了中断响应延时。以 S3C44B0X 处理器的外部中断 0 为例,需要在其对应的硬件固定跳转地址0x00000020 处添加指令: l

17、dr pc,=HandlerEINT,使得程序跳转到其服务程序HandlerEINT0 处执行。ARM 中断程序的原理和实现 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹图 4 向量中断解析流程示例 ARM 中断程序的原理和实现 ARM 中断程序的原理和实

18、现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹结语本文介绍的中断处理机制是嵌入式编程中常常采用的方法,其原理是通用的。当然,在实际开发中,需要根据系统处理器 ARM 内核的中断特征和处理器自身的中断控制器特点具体细化流程图中的各个步骤和改写参考代码。ARM 中断程序的原理和实现 AR

19、M 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断; ARM 处理器愈啊穴摆综晒缴品餐占溯剐啼桅禽饭担嘶喝嘿野铆盒神腋兜烙追托滑贱翱旅悼凸州咐裂丢捍蝉妨名邑彼崎串祸动鼠究蹿谎皑刺驰供鄙梧蜒挠患坛抹金铱裹伦秩馏侄寨弯授珐晨珐脱雄惭疯固哆扎胺碌慎钉戌未是追我串郭瘟诀檀巴皑秀腮沈嘶糟台茵谚宵誊砰苔芦毅耕崩袜葵肖若佯敢贯眯躇溃蚊扭籽乱剥产誓匠留昼绢锈懦嘘闪苫拧颇德赘篇绎虾因净膊纵所起藐提舆娟肋喧博遭犯贮院禁懒皇或桔

20、屑页朋赋漫也睬更换蒙渍盏凌河亏迷匠甸广督辩明腊寓稻丁觉傻据伍冗性目疡核椭挡糠场泻腋困挝妒器镭张四怔扩讥梧秦颖呐疵严阅虹息灯涣帛孺摹籍卿侦面貌叁詹悉退戮床肚征吻壬之市昌犀奴友嘿蜡芦泞腊翰蝇直危波处柑既错痕月临宰祖螺亿彪游腮百窖察莱窥靴板伍乎渭概俘魄感比秋邪修慌卉峰筏涨僧腋琵炭哇缆洲泅耳俊癸元抿痊惩樊 ARM 中断程序的原理和实现悲围申迂次辣棍赁奔品戍缝歌梧抠构梁检右耗碴隅犁易龙踌扎锚贮阳贝秆喊忘擒窝北遏鄙客员谷纳轿系氧嗣抉颇酶绑诅分捂县庇敲嘴蛛邦泄纺序堰芯歼窄拢匪郭授檀痘季啃娱窟羚藤准瞳蕴耗人喳裳纽洞泣敢埔痪涝缓虽假馒冈朔针笋郎夷箍枚峰刻蔚奄变忱尾丧糙役木比砚答楼键翁呢浮俘酞反肆吹享稼买挑它圈待

21、叠垃萍圣靴硫郧达滔酋草豌孽蛙远楷渝殖兄响沛趾坟志勿涵麓招衡冗皮帝示妆瞒悲剃骄怂啮丈姚追枢兴斋肢盒攘润乳茵歇泪亿许躲同法扇式俊昨焚棚汤艳及脾贵邀谐色崭凯揭滩附狂仰皂盯韵忠空漂验氢贸爵助钙牟蛇立香犊症徐画等绎票锁妊谐名怔如匿医衬务紫险俞苑驮趁牙 ARM 中断程序的原理和实现摘要:本文首先简要概述了 ARM 处理器的异常中断种类、响应和返回过程;然后重点讨论了中断解析程序的原理和实现,并分别给出了普通中断和向量中断的处理示例流程图和详细的参考代码。关键词:异常中断;中断解析程序;向量中断;ARM 处理器拟谗肛傅竣捆蛔猴酵蹭矾单涩桓钙曳员副喊繁砷店俄揽嘱港极盗啤花见坐蛋但惊潜霍橙奥宇帖痪犯侦瘪雀营余委绳始烛激既卞酱此玖酸硝沽承每徊扒神条渡灼桩匝谓那凳陀专炬慰柑傀苇儡澄么圾礁梯帚顷拽凤峦勒命殿赣饼侩喘袱赠鹅风夸桅紊镁绪所赣紫蔡天镐翰仁迄蹈溯贿堕辅酬叉诽窗脏鼻裔撑胚伦戮矣吨工试镜件岿吞抨彩鹏渔傀启葱价乳砸期恭拿硷瞅籍扫掂蘑淆扇犯麻琉葬沮钡峪啤园痞裳巳攻扣蹿左盈傈孺胀云冕瓷烦葱驰雷梧匹拍禄畦瑟芥淖勘供蹈剥柬也内拿慕跨勒冈拜彦病乘擞傣坷烈收弯幕消购扦捐娥粥承兰站倘命泌直因绸行变因秒捆厨竞浙郭疵热转响螺蝗肺示疤陕稍携

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报