中断的概念
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的更多相关文章

随机推荐

  1. Tju_Oj_2790Fireworks Show

    这个题主要在于时间复杂度的计算,N是10的6次方,C是10的2次方,OJ系统可接受的时间是10的7次方(室友说是无数先人测出来了┭┮﹏┭┮),所以如果普通遍历的话肯定会超时.而代码中是跳着走了,相当于 ...

  2. C - A Plug for UNIX (又是建图坑)

    题目链接:https://cn.vjudge.net/contest/68128#problem/C 没理解好题意真的麻烦,一上午就这么过去了..... 具体思路:按照 源点 ->插座-> ...

  3. JDK1.8源码之String

    一.String类型 引用博文连接:  https://blog.csdn.net/ylyg050518/article/details/52352993 一.成员变量 //用于存储字符串 priva ...

  4. Python缓存技术,装x新高度。

    一段非常简单代码 普通调用方式 def console1(a, b): print("进入函数") return (a, b) print(console1(3, 'a')) pr ...

  5. 读书笔记 effective C++ Item 33 避免隐藏继承而来的名字

    1. 普通作用域中的隐藏 名字实际上和继承没有关系.有关系的是作用域.我们都知道像下面的代码: int x; // global variable void someFunc() { double x ...

  6. mysql -> 用户管理&数据类型_04

    用户权限,回收权限 数据类型 生产案例

  7. centos7 yum搭建lamp环境

    =============================================== 2018/1/14_第1次修改                       ccb_warlock == ...

  8. mac 下安装pip

    pip是常用的Python包管理工具,类似于Java的maven.用python的同学,都离不开pip. 在新mac中想用home-brew安装pip时,遇到了一些小问题: bogon:~ wangl ...

  9. TDictionary 与 TObjectDictionary

    TDictionary 与 TObjectDictionary 的区别是 : TObjectDictionary 可以做到 free的时候 里面的对象 一并free,从而不会出现内存 泄露. 用途: ...

  10. sqlserver中的全局变量总结

    @@CONNECTIONS返回自上次启动 Microsoft? SQL Server? 以来连接或试图连接的次数.@@CPU_BUSY返回自上次启动 Microsoft? SQL Server? 以来 ...