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

相关推荐
東隅已逝,桑榆非晚1 小时前
vector(模拟实现)
c++·笔记·学习
鱼听禅1 小时前
C# 学习笔记-使用 类型化客户端搭建HTTP客户端服务
学习·http·c#·工厂方法模式
高亦真2 小时前
今天是学习嵌入式的第38天
linux·学习·算法
传奇开心果编程2 小时前
【Rust入门知识点学与练】第33课:异步编程入门(async/await)强化
开发语言·学习·rust
传奇开心果编程2 小时前
【Rust入门知识点学与练】第34课:所有权与借用
开发语言·学习·rust
AAA代码批发商3 小时前
DAY43 ARM 体系结构学习笔记|嵌入式入门,从硬件组件到流水线、内存与栈帧
arm开发·笔记·学习
彧azz3 小时前
初学Unity:编辑器
笔记·学习·unity·游戏引擎
明德扬3 小时前
AD9653单通道波形怎么看?幅度、频率与基础测量入门
学习·fpga开发·fpga
幼儿园蛋小黄3 小时前
学习ARM
学习