arm7内核的中断屏蔽方法

上传人:wt****50 文档编号:37678324 上传时间:2018-04-20 格式:PDF 页数:3 大小:378.78KB
返回 下载 相关 举报
arm7内核的中断屏蔽方法_第1页
第1页 / 共3页
arm7内核的中断屏蔽方法_第2页
第2页 / 共3页
arm7内核的中断屏蔽方法_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《arm7内核的中断屏蔽方法》由会员分享,可在线阅读,更多相关《arm7内核的中断屏蔽方法(3页珍藏版)》请在金锄头文库上搜索。

1、 ( 投稿专用) 年第期 内核的中断屏蔽方法翁斌( 安徽省消防电子工程技术中心 蚌埠依爱消防电子有限责任公司, 蚌埠 )引 言 在执行程序的过程中, 由于外部的某种原因, 有必要尽快地中止当前程序的执行, 而去执行相应的处理程序, 待处理结束后再回来继续执行被中止了的原程序, 这种情况称为“ 中断” 。从事嵌入式开发的工程师对中断的概念都很熟悉, 在 系列 体系中, 软件设计人员会调用 ( ) 函数和 ( ) 函数来允许或屏蔽中断。 ( ) 和 ( ) 是两个库函数, 函数 ( ) 的作用是屏蔽中断, 它唯一允许执行的中断是 ( 不可屏蔽中断) ; 函数 ( ) 的作用与函数 ( ) 相反,

2、是将被屏蔽的中断打开, 允许中断。这两个函数的原型都是在头文件 中定义的, 定义的都是一些 接口函数。 的全称为“ ” , 即“ 磁盘操作系统” , 是一种在 系列的微型计算机上运行的操作系统。 和 是两种不同体系的微处理器, 不支持 接口函数, 在 公司提供的集成开发环境 的头文件中没有 文件, 中定义的所有函数在 的编译器中都不支持, 所以需要重新设计两个函数替代上述函数, 以实现相同的功能。 处理器简介 是 的缩写, 公司开发了很多系列的 处理器内核, 处理器就是其中的一个系列, 其中包括 、 、 带有高速缓存处理器宏单元的 和扩充了 的 。该系列处理器提供 位压缩指令集和 软件调试方式

3、, 多应用于多媒体和嵌入式设备, 包括 设备、 移动电话、 等。 中断工作模式 处理器具有个中断输入, 分别为 中断和 中断, 如图所示。其对应的中断操作模式为向量中断 模式( 用于通用中断处理) 和快速中断 模式( 支持数据传输或通道处理) 。向量中断请求( ) 是一个由 输入端的低电平图 中断源所产生的正常中断。 的优先级低于 , 对于 序列它是被屏蔽的。任何时候在一个特权模式下, 都可通过置位当前程序状态寄存器( ) 中的位来禁止 。快速中断请求( ) 支持数据转移或通道处理, 在 状态中, 模式有个专用的寄存器可用来满足寄存器 保 护 的 需 要, 这 是 上 下 文 切 换 的 最

4、小 开 销。将 信号拉低可实现外部产生 。在一个特权模式中, 可通过置位当前程序状态寄存器( ) 中的标志来禁止 异常。当标志清零时, 处理器在每条指令结束时检测 同步器输出端的低电平。 中断屏蔽程序实现 内核包含个当前程序状态寄存器( ) ,该寄存器中包含条件代码标志位、 控制中断的使能和禁止位, 以及设置处理器操作模式位。当前程序状态寄存器如图所示。图 当前程序状态寄存器当前程序状态寄存器的控制位中包含个中断禁止位 和位:当位置位时, 禁止 中断, 清零时允许 中断; 当位置位时, 禁止 中断, 清零时允许 年第期 中断。在 系列的处理器中, 只有“ ” 和“ ” 两条指令可以直接读取和设

5、置当前程序状态寄存器( )或保存程序状态寄存器( ) 。在 公司提供的编译器中并没用提供特殊的语法格式, 用于指定生成这两条指令, 所以如要想将 中断和 中断都屏蔽, 就必须使用汇编语言来编写函数。对于 中断, 还有另外一种管理模式, 即通过向量中断控制器( ) 负责管理芯片的中断源, 如果是只屏蔽或打开向量中断 , 也可以使用语言来设计这两个函数。 语言程序实现本例选用的 是 公司的 , 内核为 。在其向量中断控制器 中有两个寄存器控制向量中断使能或禁止: 中断使能寄存器( ) 和中断使能清零寄存器( ) 。中断使能寄存器相应位置“” , 则允许相应的中断; 置“” 则不允许中断。程序如下:

6、 ( ) ; ; ( ) ; ;函数 首先将中断使能寄存器的当前值备份到全局变量( ) 中, 然后通过给中断使能清零寄存器置“” , 来清零中断使能寄存器, 从而屏蔽 中断。函数 首先将中断使能寄存器清零, 然后将全局变量( ) 备份的数据赋值给中断使能寄存器, 从而恢复允许中断。设计软件需要注意的一点是, 中断使能寄存器虽然是读写寄存器, 但只能向其写入“” , 不能写“” , 写“” 无效, 只能通过向中断使能清零寄存器中相应的位写“” , 来清除中断使能寄存器中相应的位。所以写软件时, 如想将中断 使 能 寄 存 器 的 第 位 清 零, 应 注 意 不 能 使 用 下 面语句: ( )

7、 ;该语句的语法没有错误, 编译也能通过, 本意是将中断使能寄存器的第位清零, 但实际上此功能是无法完成的, 语句执行后中断使能寄存器的值没有任何变化。要实现上述功能可用下面语句来代替: ;中断使能清零寄存器中为“” 的位清零中断使能寄存器的相应位, 为“” 的位则不影响中断使能寄存器中的相应位。 汇编语言程序实现语言程序只能实现对向量中断 的屏蔽, 具有局限性, 如想实现对全部中断的屏蔽就只能使用汇编语言来实现。程序如下:; 禁止中断, ( ) 函数 , , ; 声明代码段 ; 标识程序入口 ; 声明 位 指令 ! , , ; 现场保护 , ; 读取 , , ; 置位、位, 禁止、中断 ,

8、; 设置 ! , , ; 现场恢复 ; 函数结束; 使能中断, ( ) 函数 , , ; 声明代码段 ; 标识程序入口 ; 声明 位 指令 ! , , ; 现场保护 , ; 读取 , , ; 取模式位 , ; , 处于用户模式 ; 用户模式下转到; 处执行 , ; , 处于快速中断模式 ; 快速中断模式下转到; 处执行 , ; , 处于向量中断模式 ; 向量中断模式下转到; 处执行 , ; , 处于系统模式 ; 系统模式下转到; 处执行 ; 非上述模式, 结束函数; 用户或系统模式下函数处理 , ; 读取 , , ; 清零、位, 允许、中断 , ; 设置 ; 结束函数; 快速中断模式下函数处理 , ; 读取 ( 投稿专用) 年第期 , , ; 取模式位 , ; , 处于向量中断模式 ; 结束函数 , , ; 清零位, 允许中断 , ; 设置 ; 结束函数; 向量中断模式下函数处理 , ; 读取 , , ; 清零位, 允许中断 , ; 设置 ! , , ; 现场恢复 ; 函数结束在读写 时, 可以指定传送的区域, 指定一种或多种( 字母必须为小写) 格式:为控制域屏蔽字节( ) ;为扩展域屏蔽字节( ) ;为状态域屏蔽字节( ) ;为标志域屏

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑机械

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号