zoukankan      html  css  js  c++  java
  • 嵌入式中 ARM的几种工作模式 以及异常模式的优先级

    一、Arm工作模式:

    Arm微处理器支持7种工作模式,分别为:

    1. 用户模式(Usr)            用于正常执行程序

    2. 快速中断模式(FIQ)    用于高速数据传输

    3. 外部中断模式(IRQ)   用于通常的中断处理

    4. 管理模式(SVC)          操作系统使用的保护模式(高权限),复位和软件中断进入

    5. 数据访问终止模式(abt)   当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护

    6. 系统模式(sys)            运行均有特权的操作系统任务

    7. 未定义指令终止模式(und)   用于支持硬件协处理器的软件仿真(浮点、微量运算)

    其中除了用户模式以外,其余所有6种模式称之为非用户模式(特权模式,权限比用户模式高),

    其中特权模式中除去系统模式外的5种模式称之为异常模式(在用户模式和系统模式看来这些都属于异常),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

    异常模式优先级如下:

    1(最高)         SVC   复位
    2                      数据中止
    3                      FIQ(快速中断请求)
    4                      IRQ(外部中断请求)
    5                      abt 预取指令中止
    6(最低)        und    未定义指令,SWI 

    从编程的角度看,arm微处理器的工作状态有两种,并可在两种状态之间切换:

    (1) arm状态,此时处理器执行32位的字对齐的arm指令

    (2) thumb状态,此时处理器执行16位的,半字对齐的thumb指令

    (为了兼容老芯片)在程序运行的过程中,可以在两种状态之间进行相应的转换。

    处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

    二、存储器格式(字对齐):

    Arm体系结构将存储器看做是从零地址开始的字节的线性组合。

    从 0~3 字节放置第一个存储的字(32位)数据,

    从 4~7 字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。

     存储器格式:

    Arm体系结构可以用两种方法存储字数据,称之为大端格式小端格式(如上上章所讲)

    大端格式:字数据的高字节存储在低地址中,而字数据的低地址存放在高地址中。 比较直观

    小端格式:与大段格式相反。 易计算机存储

    如:int ox12345678

    大端:12 34 56 78

    小羰:78 56 34 12

    三、指令长度:

    Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。

    注:所谓的指令长度是一条完整的指令的长度,而不是单纯的mov这3个字母长度 

     四、Arm的工作模式切换

    有两种方法:

    被动切换:在arm运行的时候产生一些异常或者中断来进行模式切换

    主动切换:通过软件改变,即软件设置寄存器来经行arm的模式切换,因为arm的工作模式都是可以通过相应寄存器的赋值来切换的。

    注:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。 

    原文链接: http://blog.csdn.net/firefly_2002/article/details/8034078

  • 相关阅读:
    阿里云服务器CentOS系统putty登录安全组设置
    5!(简单的了解for循环与递归的区别)
    一个简单的九九乘法表的打印输出,对for循环的认识
    6.SpringCloud学习(六)——Spring Cloud Bus 消息总线
    5.SpringCloud学习(五)——Spring Cloud Config 配置中心
    3.SpringCloud学习(三)——Spring Cloud Hystrix 服务降级
    2.SpringCloud学习(二)——Spring Cloud Eureka 服务注册中心
    1.SpringCloud学习(一)——Spring Cloud Ribbon 实现负载均衡
    17.SpringBoot学习(十七)——Spring Boot 自定义Starter
    16.SpringBoot学习(十六)——Spring Boot MessageConverter消息转换器
  • 原文地址:https://www.cnblogs.com/ranson7zop/p/7569383.html
Copyright © 2011-2022 走看看