zoukankan      html  css  js  c++  java
  • JZ2440开发板之中断体系

    ARM架构的CPU有7种工作模式:

    1. 用户模式--usr

    2. 管理模式--svc

    3. 系统模式--sys

    4. 快中断模式--fiq

    5. 中断模式--irq

    6. 数据访问终止模式--abt

    7. 未定义指令终止模式--und

    ARM架构的CPU有2种工作状态:

    1. ARM状态--处理器执行32位的字对齐的ARM指令

    2. Thumb状态--处理器执行16位的半字对齐的Thumb指令

    ARM架构的CPU的寄存器:

    1. ARM有31个通用的32位寄存器和6个状态寄存器

    2. 每种ARM工作模式下都有16个通用寄存器和一个或两个程序状态寄存器

    3. CPSR--程序状态寄存器,当前工作在什么模式下

    4. SPSR--程序状态保存寄存器,保存前一个工作模式的CPSR寄存器的值

    S3C2410/S3C2440中断控制器

    1. 中断方式:发生中断时,会设置相应的寄存器;CPU在每执行完一条指令后就去检查这个寄存器,如果法相寄存器被设置,就去执行相应的中断。

    有两种中断源:

    1. with sub-register  发生中断后,SUBSRCPND寄存器的某些位被置1,如果相应位没有在INTSUBMSK寄存器中被屏蔽的话,SRCPND寄存器中的相应位也会被置1,如果相应位的INTMSK寄存器没有被屏蔽的话,会被进一步处理,选出优先级高的,并将此中断在INTPND寄存器中的相应位置1,然后CPU进入中断模式进行处理。

    2. without sub-register  发生中断后,SRCPND寄存器中的相应位也会被置1,如果相应位的INTMSK寄存器没有被屏蔽的话,会被进一步处理,选出优先级高的,并将此中断在INTPND寄存器中的相应位置1,然后CPU进入中断模式进行处理。

    用户可以通过读取INTPND或者INTOFFSET寄存器,来确定是哪种中断。

  • 相关阅读:
    函数【二】嵌套/作用域/名称空间
    内核模块加载错误 “Invalid module format” 解决办法
    linux oops调试
    linux 工具
    makefile 嵌套
    scheduling while atomic 出现的错误
    Windows下VSCode编译调试c/c++
    window markdown 编辑器
    linux 比较命令
    openwrt 加入nand flash的支持
  • 原文地址:https://www.cnblogs.com/bkyysd/p/4188593.html
Copyright © 2011-2022 走看看