【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)

简介: 【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)

一. 中断控制 ( 基于 S3C6410 开发板 )



本节 基于 S3C 6410 开发板, 不同的开发板 以及 不同 的芯片 中断控制机制是不同的 ;




1. 关闭中断的两个步骤



(1) 关闭中断步骤

关闭中断步骤 :


1.步骤 1 ( 程序状态字寄存器设置 ) : 设置 程序状态字寄存器 ( CPSR ) 中对应的与 中断 相关的位;

2.步骤 2 ( 中断屏蔽寄存器设置 ) : 设置 中断屏蔽寄存器, 该寄存器的 使用方法在开发板芯片资料中有详细介绍;



2. CPRS 寄存器中的中断控制位



(1) CPRS 寄存器简介

程序状态字寄存器 :

image.png



1.寄存器内容 : 该寄存器 中 包含 ① 状态码标志位, ② 中断标志位, ③ 当前处理器工作模式 和 其它一些 ④ 状态 与 ⑤ 控制信息 ;

2.CPSR 寄存器 : 全称 Current Program Status Register ( 当前程序状态字寄存器 ), 保存的是当前的程序状态 ;

3.SPSR 寄存器 : 全称 Saved Program Status Register ( 程序状态保存寄存器 ), 每个异常都有对应的独立的 SPSR 寄存器, 当异常发生的时候, 先将 CPSR 寄存器中的值 保存到 SPSR 寄存器中, 以便 异常处理完毕后 再回到原来断点处 继续运行 ;


4.SPSR 寄存器分布 : 用户模式 和 系统模式 没有 对应的 SPSR 寄存器, 只有 5 种 异常模式才有对应的 SPSR 寄存器 ;

( 1 ) SPSR 寄存器读写 : 在 用户模式 或 系统模式 读写 SPSR 指令 会出现不可预测的错误或行为 ;



(2) CPRS 寄存器 中断控制 相关 位

CPRS 寄存器中断控制相关位 :

image.png



1.普通中断控制位 : I 位, 第 [ 7 ] 位, 如果设置了该位 可以 关闭 普通中断 ;

2.快速中断控制位 : F 位, 第 [ 6 ] 位, 如果设置了该位, 可以 关闭 快速中断 ;



3. 中断使能寄存器



参考手册 : S3C6410X.pdf ( 基于 6410 开发板 )


1.手册对应章节 : 12.6.5 章节 VECTORED INTERRUPT CONTROLLERS;

2.S3C6410芯片手册下载地址 :https://download.csdn.net/download/han1202012/10412045



(1) 中断使能寄存器简介

中断使能寄存器 ( VICINTENABLE ) :


1.分为两个寄存器 : 中断使能寄存器 分 两个寄存器 控制所有的中断打开功能;

( 1 ) 寄存器1 VIC0INTENABLE : 其地址是 0x71200010 ;

( 2 ) 寄存器2 VIC1INTENABLE : 其地址是 0x71300010 ;

image.png

2.寄存器位 : 这两个寄存器中, 每一位都对应着一种中断源;

3.中断关闭情况 : 在 重启的时候, 所有的中断都要被禁用 ;

4.寄存器功能 : 激活中断的请求线路, 允许中断信号能到达 处理器 ; 查看对应位的设置, 可以获取某种类型的中断是否可以到达 处理器 ;

( 1 ) 读取到 0 值 : 如果读取到的值 为 0, 那么 中断不可用;

( 1 ) 读取到 1 值 : 如果读取到的值 为 1, 那么 中断可用;

5.设置寄存器值 : 这两个寄存器 只能设置中断可以使用, 无法设置 屏蔽 中断, 如果设置 1 那么激活中断, 设置 0 没有任何效果, 如果要屏蔽中断, 那么需要使用 中断屏蔽寄存器 VICINTENCLEAR;

( 1 ) 设置 0 值 : 设置 0 值 没有任何效果;

( 2 ) 设置 1 值 : 设置 1 值 激活中断功能;

image.png




(2) 中断屏蔽寄存器简介

中断屏蔽寄存器 ( VICINTENCLEAR ) 简介 :


1.分为两个寄存器 : 中断 屏蔽 寄存器 分 两个寄存器 控制所有的中断 屏蔽 的功能;

( 1 ) 寄存器1 VIC0INTENABLE : 其地址是 0x71200010 ;

( 2 ) 寄存器2 VIC1INTENABLE : 其地址是 0x71300010 ;

image.png


2.寄存器位 : 这两个寄存器中, 每一位都对应着一种中断源;

3.功能概述 : 清除 中断屏蔽寄存器 ( VICINTENABLE ) 中 对应的位就可以屏蔽对应的中断 ;

( 1 ) 设置 0 值 : 没有任何效果 ;

( 2 ) 设置 1 值 : 屏蔽对应的中断源 ;







二. 关闭中断 代码示例



参考手册 : S3C6410X.pdf ( 基于 6410 开发板 )


1.手册对应章节 : 12.6.5 章节 VECTORED INTERRUPT CONTROLLERS;

2.S3C6410芯片手册下载地址 :https://download.csdn.net/download/han1202012/10412045


目录
相关文章
|
5月前
|
编译器
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
149 0
|
6月前
|
网络协议 C++
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
|
7月前
|
存储 算法 程序员
神秘代码世界惊现高效秘籍!究竟是什么让汇编语言编程如此强大?快来一探究竟!
【8月更文挑战第31天】《代码之美:探索高效汇编语言编程的最佳实践》介绍了汇编语言在系统内核、嵌入式系统及高性能应用中的不可替代作用。书中强调了深入理解处理器架构、提升代码可读性、优化算法与数据结构及有效利用寄存器等最佳实践的重要性。通过具体示例,如在 x86 架构下实现高效的加法函数,展示了如何运用这些技巧编写出既高效又可靠的汇编代码,充分展现了汇编语言的独特魅力及其在现代软件开发中的价值。
86 0
|
5月前
|
存储 编译器 C语言
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
103 0
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
|
5月前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
128 0
|
5月前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
509 0
|
7月前
|
NoSQL 前端开发 程序员
【震撼揭秘!】程序员绝不会告诉你的秘密:掌握汇编语言调试,轻松从软件故障中全身而退——透视代码底层,成为Bug猎人!
【8月更文挑战第31天】《调试的艺术:如何利用汇编语言追踪和解决软件问题》探讨了使用汇编语言进行高效调试的方法。无论是初学者还是资深开发者,面对棘手的 bug 时,高级语言的信息往往不足。文章通过具体示例展示如何通过汇编代码定位问题,如 C 语言中数组求和函数的崩溃问题。借助 `gcc -S` 生成的汇编代码和 GDB 调试器,可以深入理解程序行为,从而更准确地解决问题。掌握这一技能,将使你在复杂问题面前更加从容。
79 2
|
6月前
|
Windows
【原创】DOS下TSR程序的汇编演示代码2--黑屏保护程序
【原创】DOS下TSR程序的汇编演示代码2--黑屏保护程序
【原创】DOS下TSR程序的汇编演示代码1--自动按键程序
【原创】DOS下TSR程序的汇编演示代码1--自动按键程序
|
7月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
199 3