IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式Linux_ARM裸机_ARM的七种工作模式和37个寄存器 -> 正文阅读

[嵌入式]嵌入式Linux_ARM裸机_ARM的七种工作模式和37个寄存器

主要整理ARM处理器的七种编程模式。

ARM的基本属性

ARM采用的32位架构;Byte 8bit, HalfWord = 2B=16bits, Word = 32bits=4bits;

七种工作模式

ARM有七种基本工作模式:1个用户模式,6个特权模式(Privilege)。6个特权模式种除了sys之外,其余5种为异常模式;
模式之间可以通过代码(写CPSR寄存器)或者是CPU在某些情况下切换;不同模式下, 可以访问的寄存器(一共37个寄存器)不同。

  • User: 非特权模式,大部分任务在这种模式下工作;
  • System: 使用和User模式相同寄存器集的特权模式;
  • FIQ(Fast Interrupt Request):当一个高优先级中断产生时,会进入该模式;
  • IRQ(Interrupt Request):当一个低优先级中断产生时,进入该模式;
  • Supervisor: 当复位,或者软中断指令执行时,进入该模式;
  • Abort: 当存取异常时,进入该模式;
  • Undef: 当执行未定义指令时,进入该模式。

采用如此多模式的原因

这也是软硬件为了笔记兼容,更好工作的结果。操作系统有安全等级,CPU有各种模式,

ARM的37个寄存器

ARM的CPU中一共有37个寄存器。在CPU的七种工作模式,用户模式User和系统模式Sys拥有物理空间上完全相同的寄存器。其他五种特权(异常)模式,都自己独立的寄存器。如下图所示:每种工作模式的黑色部分是通用寄存器,不同的颜色代表不同模式下,独有的寄存器,比如,FIQ的独有寄存器是r8-r14,spsr等。这样做的好处是,当发生异常时,各个模式都保留自己的一些重要数据,使得异常处理程序完成后,返回异常前的程序时不会破坏原有的寄存器状态。
在这里插入图片描述
总结一下上图说的寄存器:

  1. User和Sys拥有的寄存器:r0-r15,CPSR寄存器。
  2. FIQ:r0-r7是通用的,r8-r14spsr是该模式特有的。
  3. IRQ:r0-12是通用的,r13、r14和spsr是该模式固有的。
  4. SVC:r0-12是通用的,r13、r14和spsr是该模式固有的。
  5. Undef: r0-r12是通用的,r13、r14和spsr是该模式固有的。
  6. Abort: r0-r12是通用的,r13、r14和spsr是该模式固有的。

SP(R13),LR(R14),PC(R15),CPSR

**R13(SP):**堆栈指针寄存器,当遇到异常时,程序可以将一般寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的完整性。
**R14:**当通过BL和BLX调用子程序时,硬件自动将子程序返回地址保存在R14中,子程序通过将R14复制到PC来实现返回。
**R15(PC)😗*程序计数器,读取的值是指令的地址加上8个字节;PC指向哪里,CPU就运行哪里;整个CPU只有一个PC。
CPSR程序状态寄存器:
在这里插入图片描述

  • 28,29,30,31位是条件位:
    N:如果结果是有符号的二进制补码下,结果为负数,N=1;如果为非负数,N=0;
    Z:判断是否为0,如果是结果是0,Z=1;否则N=0;
    C:进位情况:
    对于加法指令,产生进位,则C=1,否则C=0;
    对于减法指令,产生借位,则C=0,否则C=1;
    对于移位操作,C为最后移除位的值。
    V:溢出操作,对于加法指令,在操作数和结果都是有符号整数时,如果发生溢出,则V=1,无溢出,则V=0。
    27,Q位:指示饱和状态。
    24,J位:J=1,处于Jazelle状态(为Java字节码提供硬件加速的功能,提高了Java代码的执行效率).
    7 6,I,F: 中断禁止位:
    I=1,禁止IRQ,F=1,禁止FIQ。
    5,T:T=0,位ARM状态,T=1为Thumb状态。
    0-4处理器模式位。
    总结:CPSR中各个bit表明了CPU的某些状态信息,这些状态信息和汇编息息相关,下一篇写汇编指令。CPSR中,IF和中断开关有关;
    SPSR:
    程序状态保存寄存器(saved program status register),用于保存CPSR的状态,以便异常恢复后,恢复到以前的状态。

总结

这部分写了,7种工作模式,具体每种模式的工作模式以后遇到了再具体研究,又说了37个寄存器,每种模式对应上面的寄存器,r15固定用作pc寄存器,CPSR是固定的所有模式下共享的寄存器,5个SPSR是五种异常模式下的各自的寄存器。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 09:31:07  更:2021-08-29 09:33:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:57:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码