



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM中断分析一 首先 ARM 芯片要中断设置要是能中断向量,然后当有 IRQ 中断来之后,CPU自动的到0x18地址处取指。0x18处的指令呢是CPU 根据中断源算好的(比如:中断 EINT4567 来了,那么 0x18 处的指令就是跳转到地址 0x30 处)。然后就执行“ldr pc,=HandlerEINT4567”这条指令。这条指令的执行结果就是跳转到 “HandlerEINT4567 HANDLER HandleEINT4567”处执行。这条是宏指令,你可以看一下宏定义。执行结果就是跳转到HandleEINT4567 处执行。 那么 HandleEINT4567 处又是什么指令呢?这就要联系 44b.h 文件的#define pISR_EINT4567 (*(unsigned *)(_ISR_STARTADDRESS+0x74) 定 义 看 了。 HandleEINT4567 处的地址就是“_ISR_STARTADDRESS+0x74”。到此还不知道这个地址对应的指令是什么。 这时候就要去看Target.c文件的中断初始化了,其中pISR_EINT4567= (unsigned) OSEINT4567ISR;这条语句就解释了中断去向何处。 OSEINT4567ISR 就是在OS_CPU_A.s 里面定义的中断处理程序了。 一、 关于44B0中断系统 44B0 中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序。第一张中断向量表由硬件决定,所在区域为ROM(flash),地址空间从0X00开始,其中0X00-0X1C为异常向量入口地址,0X20-0XC0为中断向量入口地址。另一张中断向量表在RAM 中,可以随便改,其位置在程序连接后才定。 二、 如何从第一张中断向量表跳到第二张中断向量表 由于 RAM 放在地址空间的高端(距离中断向量超过了 32M),故在第一张中断向量表对应位置上写上 ldr PC,# interrupt_service 如:ldr PC,=HandlerEINT4567 三、如何在启动程序中设置异常向量,中断向量表 如何把 C 语言中的一个中断函数对应到汇编的中断向量表中,示意图及举例如下: #define _ISR_STARTADDRESS 0xc7fff00 /GCS6:16M bit DRAM/SDRAM #define pISR_EINT4567 (*(unsigned *)(_ISR_STARTADDRESS+0x74) .macro HANDLER HandleLabel sub sp, sp, #4 stmfd sp!, r0 ldr r0,=HandleLabel ldr r0, r0 str r0, sp,# 4 ldmfd sp!, r0,pc .endm .text ENTRY: b ResetHandler VECTOR_BRANCH: ldr pc,=HandlerEINT0 ldr pc,=HandlerEINT4567 /* 0x30 */ HandlerEINT4567:HANDLER HandleEINT4567 .equ HandleEINT4567, _ISR_STARTADDRESS+4*29 把C语言中的一个中断函数对应到汇编的中断向量表中 pISR_EINT4567 = (int)Eint4567Isr; 其实异常向量就是中断向量,ARM7的内核实际上只有8个(1个保留)异常向量,对于众多的中断源,ARM7 的内核是通过 IRQ、FRQ 的软件查询中断状态寄存器的位来获得ISR的起始地址。而44B0为了克服这种方式所带来的中断延迟,就加入了更多的中断向量表(0x20到0xc0),要使用这种方式,必须在中断控制寄存器中设置每个中断源的方式为IRQ 方式,且使用向量中断。S3C44B0X 的中断控制器有 30 个中断源。S3C44B0X 支持新的中断处理模式称为(vectored interrupt mode),在多个中段请求发生时,由硬件优先级逻辑确定应该有哪个中断得到服务,同时硬件逻辑使中断相量表的跳转指令加载到(0X18或0X1C)位置,在该位置执行跳转指令使程序跳到相应的中断服务线程,因此相对与传统的ARM 的软件方法能够大大减少中断进入延时。有两种类型的中断模式,FIQ (快速中断)和IRQ.所有的中断源在中断请求时应该确定使用的中断模式。在网络上广为流传的44b0开发板例程中,大部分使用的都是IRQ 中断模式(请查阅寄存器rINTCON)。 一般来讲,使用 44b0 开 发板进行调试时, 无需更改44b.h,44blib.h,def.h,option.h,44binit.s,44blib.c,44blib_a.s,memcfg.s,option.s 等程序,甚至无需看懂,即可编程使用 44b0 开发板。如前所述,硬件逻辑使中断向量表的跳转指令加载到(0X18 或 0X1C)位置,在该位置执行跳转指令使程序跳到相应的中断服务线程,用户只需定义相应的中断服务程序即可。中断向量表的定义如下 (节选,请看44b.h) /* ISR */ #define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0) #define pISR_UNDEF (*(unsigned *)(_ISR_STARTADDRESS+0x4) #define pISR_SWI (*(unsigned *)(_ISR_STARTADDRESS+0x8) #define pISR_PABORT (*(unsigned *)(_ISR_STARTADDRESS+0xc) #define pISR_DABORT (*(unsigned *)(_ISR_STARTADDRESS+0x10) #define pISR_RESERVED (*(unsigned *)(_ISR_STARTADDRESS+0x14) #define pISR_IRQ (*(unsigned *)(_ISR_STARTADDRESS+0x18) #define pISR_FIQ (*(unsigned *)(_ISR_STARTADDRESS+0x1c) void _irq Mycat(void); 显然,至此可以基本理解 44b0 的中断,是如何与程序中的中断服务子程序联系起来的了。中断的硬件逻辑,将检测到的中断,以某种方式指向中断服务程序的地址,该地址在头文件中以宏定义的形式出现。用户在自己的程序中,将中断服务子程序的地址付给该指针,从而将其联系起来。 ARM7TDMI 在矢量模式下,当从 0X18 地址处取指令时候,中断控制器会在数据总线上加载分支指令,这些分支指令使程序计数器能够对应到每一个中断源的向量地址。这些跳转到每一个中断源向量地址的分支指令由中断控制器产生。 例如:假设 EINT0 是 IRQ 中断,EINT0 的向量地址为:0X20(见向量表),那么中断控制器必须产生0X18-0X20的分支指令。 中断控制器产生的机器码为: 0XEA000000。在各个中断源对应的中断向量地址中,存放着跳转到相应中断服务程序的程序代码。在相应向量地址处分支指令的机器代码如下计算: 矢量中断模式的机器指令代码=0XEA000000+(-0X8)2) 机器代码一般由反汇编后自动产生。 结合这些,再看看程序中的代码。在无矢量中断模式,通过分析IISPR/FISPR 寄存器,IRQ/FIQ 处理器将移动PC到相应的ISR。HandleXXX 地址包含每个响应的ISR程序的起始地址。(见 44binit.S 文件) 编译器它自动有设置的(初始化的伪编译宏), |Image$RO$Limit|:表示RO 区末地址后面的地址,即RW数据源的起始地址 |Image$RW$Base|:RW 区在 RAM 里的执行区起始地址,也就是编译器选项RW_Base指定的地址 |Image$ZI$Base|:ZI 区在RAM 里面的起始地址 |Image$ZI$Limit|:ZI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合肥北城建设投资发展控股集团有限公司招聘33人笔试参考题库附带答案详解
- 重庆人文科技学院《装饰施工工程》2023-2024学年第二学期期末试卷
- 福建江夏学院《知识产权法经典著作选读》2023-2024学年第二学期期末试卷
- 石家庄工程职业学院《产品开发与营销》2023-2024学年第二学期期末试卷
- 陕西机电职业技术学院《东南亚传统建筑形态比较》2023-2024学年第二学期期末试卷
- 河北传媒学院《房屋建筑学B》2023-2024学年第二学期期末试卷
- 西安欧亚学院《检测技术及应用》2023-2024学年第二学期期末试卷
- 江西卫生职业学院《中国对外贸易概论》2023-2024学年第二学期期末试卷
- 广西民族大学相思湖学院《数字视频制作艺术》2023-2024学年第二学期期末试卷
- 广东科技学院《软件构造实验》2023-2024学年第二学期期末试卷
- 水稻联合收割机使用与维护
- 成人经鼻胃管喂养临床实践指南
- 过程控制实验指导书讲解
- 安徽钢结构人行天桥施工方案
- 形势与政策(吉林大学)智慧树知到答案章节测试2023年
- 《表观遗传》教学设计
- 20千伏及以下配电网工程业主项目部标准化管理手册
- 黎民公共管理学考研笔记
- 《人工智能导论:模型与算法》习题答案及期末试题
- GB/T 3036-1994船用中心型蝶阀
- GB/T 29497-2017高沸点芳烃溶剂
评论
0/150
提交评论