【嵌入式开发】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


目录
相关文章
|
9月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
174 0
|
9月前
|
存储 机器学习/深度学习 编译器
ARM汇编快速入门
ARM汇编快速入门
376 0
|
4月前
|
编译器
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
120 0
|
8月前
|
存储 程序员 存储控制器
【读书笔记】汇编语言(第四版)第二章 寄存器
【读书笔记】汇编语言(第四版)第二章 寄存器
|
4月前
|
存储 编译器 C语言
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
|
4月前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
104 0
|
4月前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
424 0
|
6月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
180 3
|
7月前
|
存储 索引
8086 汇编笔记(十一):内中断
8086 汇编笔记(十一):内中断
8086 汇编笔记(十):标志寄存器
8086 汇编笔记(十):标志寄存器