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

相关推荐
爱倒腾的老唐4 小时前
0、元器件——电阻
学习
sunshine22 girl5 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
sunshine22 girl7 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
传奇开心果编程8 小时前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui
一条破秋裤8 小时前
内核驱动的意义与课程学习规划
学习
Bug收容所8 小时前
学习LangChain day1
学习·langchain·llm·agent
传奇开心果编程8 小时前
【现代声明式UI学与练】第7课 组件通信——父传子、子传父、跨层级通信、状态提升与 Context
学习·flutter·react native·ui·swiftui·android jetpack
我命由我1234510 小时前
Photoshop - Photoshop 矢量蒙版
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·photoshop
熊猫钓鱼>_>11 小时前
越顺,越空:当 AI 把学习 “优化“ 到消失
人工智能·学习·ai·llm·agent·ai编程·metaai
一条破秋裤11 小时前
02_注册设备号_从主次设备号到成对注销
学习