zoukankan      html  css  js  c++  java
  • interrupt_control

    中断的概念
    CPU在处理过程中,经常需要同外部设备进行交互,交互的方式由“轮询方式”“中断方式”

    轮询方式:

    方式:在同外设进行交互的过程中,CPU每隔一定的时间状态就去查询相关的状态位,所以在交互期间CPU几乎没有干任何事情,仅仅就是是 在一直等待查询,等待查询。

    特点:不断查询设备状态,实现方式简单,但是CPU,利用率较低

    中断方式:

    方式:CPU告知硬件做某件事情 后就去做其他事情,当硬件完成相应的工作后,向CPU发送某个消息。表示已经完成相应的工作。

    2440总共有60个中断:

    组中断

        子中断

    中断过程分析:

    一:中断生命周期

    二:中断源

    中断源分为“一般中断源”和“含有子中断源”

    三:中断过滤

    中断过滤主要依靠掩码寄存器(mask,通过设置相应的位起到过滤中断信号的作用(凡是需要的中断信号,就将其在mask中对应的位设置为0,反之设置为1

    注意:对于mask 寄存器中的EINT4_7总共有4个中断源,但是却用一个为来控制,所以为了分别控制每一个中断源,就需要对EINTMSK 这个寄存器。

    四:中断模式
    中断模式将分为irqfirq

    注意:所谓firq即为将中段信号中具有vip特权的中断信号,优先处理

    五:中断处理

    (1)判断中断源:

    arm 中有一个寄存器叫INTOFFSET,在其中对于每一个中断都有唯一的编码,读取INTOFFSET中的值,然后惊醒判断。

    (2)对不同的中断码,做不同的操作。

    六:开中断

    在进行核心初始化的过程中,是将中断关闭的,中断控制寄存器为与程序状态寄存器中的(cpsr),因此想要使用中断,就需要开中断。

    七:清中断

    SUBSRCPND:

                      中断状态寄存器(个人觉得应该叫这个名字),一旦有中断相应,就会

    SRCPND :         对其中中断相对应的位做出置1的操作,如果不将其清零,则下个中

                      断将不会响应。

    INTPND:                  

    注意:这两个寄存器有点特殊,对其置0,是往里面写入1   

    八:改变cpu工作模式

    在核心初始化的过程中,将cpu初始化为了SVC模式,然而在处理一般中断的时候需要将cpu调整为IRQ模式。尤其是对应的复用寄存器,只有在改变处理器是模式后才能发挥其相应的功能。(这里尤其指sp指针)

  • 相关阅读:
    9 *9 乘法表
    总结day04 ---- 列表的切片,增删改查,以及,相关方法, 元祖的使用方法
    三级菜单 -----待学习,待强化
    day04 --class --homework
    购物车项目 复杂版本.待简化
    python 学习资料 常用
    总结day3 ---- 进制转换,字符串切片,字符串常用方法.,for 循环,
    day03 --class --homework
    总结day2 ---- while循环的简单使用, 格式化输出.运算符.以及编码的应用
    Uva 10054 欧拉回路 打印路径
  • 原文地址:https://www.cnblogs.com/big-devil/p/8589400.html
Copyright © 2011-2022 走看看