interrupt_control
中断的概念
CPU在处理过程中,经常需要同外部设备进行交互,交互的方式由“轮询方式”“中断方式”
轮询方式:
方式:在同外设进行交互的过程中,CPU每隔一定的时间状态就去查询相关的状态位,所以在交互期间CPU几乎没有干任何事情,仅仅就是是 在一直等待查询,等待查询。
特点:不断查询设备状态,实现方式简单,但是CPU,利用率较低
中断方式:
方式:CPU告知硬件做某件事情 后就去做其他事情,当硬件完成相应的工作后,向CPU发送某个消息。表示已经完成相应的工作。
2440总共有60个中断:
组中断
子中断
中断过程分析:
一:中断生命周期
二:中断源
中断源分为“一般中断源”和“含有子中断源”
三:中断过滤
中断过滤主要依靠掩码寄存器(mask),通过设置相应的位起到过滤中断信号的作用(凡是需要的中断信号,就将其在mask中对应的位设置为0,反之设置为1)
注意:对于mask 寄存器中的EINT4_7总共有4个中断源,但是却用一个为来控制,所以为了分别控制每一个中断源,就需要对EINTMSK 这个寄存器。
四:中断模式
中断模式将分为irq和firq
注意:所谓firq即为将中段信号中具有vip特权的中断信号,优先处理
五:中断处理
(1)判断中断源:
在arm 中有一个寄存器叫INTOFFSET,在其中对于每一个中断都有唯一的编码,读取INTOFFSET中的值,然后惊醒判断。
(2)对不同的中断码,做不同的操作。
六:开中断
在进行核心初始化的过程中,是将中断关闭的,中断控制寄存器为与程序状态寄存器中的(cpsr),因此想要使用中断,就需要开中断。
七:清中断
SUBSRCPND:
中断状态寄存器(个人觉得应该叫这个名字),一旦有中断相应,就会
SRCPND : 对其中中断相对应的位做出置1的操作,如果不将其清零,则下个中
断将不会响应。
INTPND:
注意:这两个寄存器有点特殊,对其置0,是往里面写入1
八:改变cpu工作模式
在核心初始化的过程中,将cpu初始化为了SVC模式,然而在处理一般中断的时候需要将cpu调整为IRQ模式。尤其是对应的复用寄存器,只有在改变处理器是模式后才能发挥其相应的功能。(这里尤其指sp指针)
interrupt_control的更多相关文章
随机推荐
- 18、Random类简介
Random类概述 Random类在java.util包下,使用这个类可以生成随机数 package com.sutaoyu.usually_class; import java.util.Rando ...
- CMD命令利用tasklist与taskkill关闭程序
昨天远程服务器后,服务器无故卡住了,鼠标各种延迟与无反应,想在进程管理器里关闭程序也卡住,想点击重启系统也卡死无反应.纠结后win+R打开了cmd用shutdown重启才算搞定.重启期间思考了下,如何 ...
- React-Native 之 FlexBox介绍和使用
# 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...
- 排序与相关性(Sorting and Relevance)
本文翻译自Elasticsearch官方指南的Sorting and Relevance一章的第一节. 原文地址:http://www.elastic.co/guide/en/elasticsearc ...
- supervisor管理uwsgi
1. 前言 传统的管理uwsgi服务: 1. 通过shell脚本来编写start restart stop函数来控制 2. 比较麻烦,有时候控制写的烂,还会出现意想不到的错误 supervisor进行 ...
- SQL之PROCEDURE(存储过程)
先来看一小段代码 create procedure pr_bank(@bank_id int) as BEGIN select *from bank where bank_ID = @bank_id ...
- C#中ASCII码与字符串的互换
主要代码: int a = (int)'a';// 把字符直接转换为int类型,即可得到ASCII码值 ).ToString();// 将数字直接转换为char类型,即可得到ASCII码对应的字符 C ...
- hdu 1028 整数划分 (母函数)
假如输入44 = 4;4 = 3 + 1;4 = 2 + 2;4 = 2 + 1 + 1;4 = 1 + 1 + 1 + 1;一共5种 假如输入3 用母函数的方法就是写成(1+X+X2+X3)(1+X ...
- 【51nod】1773 A国的贸易
题解 FWT板子题 可以发现 \(dp[i][u] = \sum_{i = 0}^{N - 1} dp[i - 1][u xor (2^i)] + dp[i - 1][u]\) 然后如果把异或提出来可 ...
- 【LOJ】#2672. 「NOI2012」魔幻棋盘
题解 代码7.1KB,人傻代码长 恶心死我了这代码真的把我写恶心了= = 想一想就知道这个东西--维护到中心的差分,然后用二维线段树维护一下矩形的gcd 嗯,我说完了,你写吧. 首先这个二维线段树的单 ...