ARM学习(1)

今天学习了ARM相关的概念,了解到很多关于寄存器的相关知识,内核中有哪些东西,以及数据是怎么在CPU中被处理读取写入的,概念相关的知识还是挺繁琐的,以下是今天总结的相关重点知识

Day1

1.ARM体系架构

1. 概念
  1. PC寄存器:process counter 程序计数器

  2. CPU:Center: Processing Unit 中央处理单元

  3. GPU:Graphics Processing Unit 图形处理单元

  4. FPU: Float Processing Unit 浮点运算单元

  5. 二八定律:百分之80的硬件的电路只会在百分之20的情况下会用到

  6. RAM跟ROM区别记忆

  7. 内核想要访问ROM中的东西就要先将ROM里面的东西读到RAM中才能让内核读到

  8. 三大总线:数据总线(双向) 地址总线(单向) 控制总线(双向)

2.内核
  1. 机器字长:CPU 一次能自然处理、运算和传输的二进制位数(传输处理都是以32位来处理,及四个字节)

  2. 裸机操作时建议把dcache关闭还有MMU,避免数据不回写

  3. MMU(memory mangement unit):内存管理单元:

    • MMU映射0到4G的虚拟内存

    • MMU用来映射背后的真实物理内存可能是寄存器,RAM,ROM

  4. CPSR(Current Program status Register):当前程序状态寄存器

    • ARM中默认使用是小端对齐
  5. SPSR(Save Program status Register):备份程序状态寄存器

  6. 通用寄存器:

    1. R13(SP:stack pointer):栈顶指针寄存器

    2. R14(LR:linked register):链接寄存器

    3. R15(PC:program counter):程序计数器

3.处理器工作模式
  1. ARM七种基本工作模式

  2. ARM内核里面一共有多少个通用寄存器:

  3. 溢出

    • 两个正数相加结果应该是正数,但是超过存储范围,就会产生溢出
  4. 记忆

    1. ARM七种工作模式

      1. User:非特权模式,相当于Linux的普通用户模式

      2. FIQ:当高优先级中断产生时会进入此模式

      3. IRQ:当低优先级中断产生时会进入此模式

      4. Supervisor:当复位或者中断指令执行时会进入此模式

      5. Abort:当存取异常的时候会进入此模式

      6. Undef:当执行未定义指令时会进入此模式

      7. System:使用和User模式下相同寄存器的特权模式(相当于Linux下的sudo)

      8. Monitor:Cortex-A特有模式,用于执行安全代码监控的模式,也姓相当于一种特权模式

    2. ARM Core中包含了哪几种器件

      1. 通用寄存器:用来暂存数据和地址,是CPU的工作台

        • R13:SP栈顶指针寄存器

        • R14:LR链接寄存器

        • R15:PC程序计数器

      2. ALU算数逻辑单元:执行算数逻辑运算

      3. 程序状态寄存器CPSR:相当于CPU的状态面板,上面记录了CPU的状态,CPU执行下一条命令时都要根据这个状态面板来决定下一步该怎么走

      4. 备份状态寄存器SPSR:相当于存档,当中断或者异常时,CPU将当前状态存入SPSR,等到CPU处理完中断或者异后,通过备份状态寄存器恢复回CPSR

      5. Cache(高速缓存):指令 Cache、数据 Cache,减少访存延迟

      6. MMU(内存管理单元):将物理空间虚拟成0到4G的虚拟内存

    3. ARM Core异常处理流程

      1. 产生异常时:

        1. 先将当前CPSR拷贝到SPSR_<mode>

        2. 设置CPSR

          1. 改变状态进入ARM态

          2. 改变模式,进入相应的异常模式

          3. 如果需要的话设置中断禁止位禁止相应中断

        3. 保存返回地址到LR_<mode>

        4. 设置PC为相应异常向量

      2. 从异常中返回:

        1. 从SPSR_<mode>中恢复CPSR

        2. 从LR_<mode>中恢复PC

相关推荐
行思理8 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
楚山之石12 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
Li_RuiQi13 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
SteveSenna16 小时前
aubo学习:realsense手眼标定
学习·机器人·视觉检测
Li_RuiQi18 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
Canmag 兴隆磁性18 小时前
回复磁导率 μ_R:永磁体在动态磁路中的关键参数
开发语言·学习·r语言·永磁材料·充磁·磁导率
lengxuenong18 小时前
区间覆盖问题 · 简明学习手册1
java·学习·算法
悟道书生19 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
Be for thing19 小时前
PyTorch自动求导Autograd详解|requires_grad、backward、grad、梯度清零
pytorch·学习·1024程序员节
小嘉丶学长19 小时前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节