【DAY30】ARM 架构核心技术详解

一、CPU内核

1.CISC

Complex Instraction Set Computer 复杂指令集 计算机

芯片面积大、成本高、复杂、体积大、功耗大

2.RISC

Reduce Instraction Set Computer 精简指令集 计算机

芯片面积小、成本低、简单、体积小、功耗小

3.ARM

|-----------|------------|-------|
| 处理器 | 内核 | 指令集版本 |
| imx6ull | Cortext A7 | armv7 |
| S3C2440 | ARM920T | armv4 |
| exnoy4412 | CortexA8 | armv8 |

ARM9(37个寄存器)

Cortex-A(40个寄存器)

|---|-------------|-----------|
| A | Applacation | 手机应用电子领域 |
| R | Realtime | 汽车电子;航空航天 |
| M | Micro | 单片机 |

在ARM中

1.ALU:

算数逻辑单元,搭配寄存器来使用

2.R0-R12:

通用寄存器(内核),用来存放数据

3.SP(R13):

栈指针寄存器(stack pointer), 管理栈区

4.LR(R4):

连接寄存器(linked regster)保存函数返回地址

5.PC(R15):

程序计数器(program counter),是一个指针,指向当前代码执行指令的下一条指令;指向哪,程序就执行到哪

6.CPSR:

当前程序状态寄存器(crrunt program status register),保存程序运行到某一步时的状态

7.SPSR:

保存/备份程序状态寄存器,异常发生,备份cpsr寄存器中程序状态

8.MMU:

内存管理单元(memory mannager unit),用于管理虚拟内存到物理内存映射,从而提高物理内存的利用率

9.Cache:

高速数据缓存,直接从cache访问数据,提高cpu访问数据效率

哈弗架构:

icache:指令缓存(instruction cache)

dcache:数据缓存(data cache)

二、总线

1.单总线通信

通过一根/一组线与外设通信,和某个外设通信时,其他外设无法接入

2.双总线通信

AHB总线:

先进高速总线(USB、网卡、RAM)连接通信速率快的外设

APB总线:

先进外设总线(GPIO、UART)连接通信速率慢的外设

三、编译

编译程序流程

1.预处理

展开头文件

替换宏定义代码

据条件编译增加或删除代码

2.编译

将C语言编译为汇编语言

3.汇编

将汇编语言转换为机器语言

4.链接

将代码与系统中的库连接成一个可执行程序

交叉编译:

在一个平台编写编译程序,能够在另外一个平台运行程序

四、Flash

ROM的一种类型

Flash 是一种可擦写的存储器,它结合了 ROM 和 RAM 的优点。它的数据可以被任意读取和写入,并且可以擦除和重新写入。Flash 的数据在断电后仍然能够保持

nor flash

每一个字节都可以被寻址,地址线和数据总线

nand flash

无法被寻址,以固定块大小写入或读取数据

五、处理器工作模式

1.User

非特权模式,大部分任务执行在该模式

2.FIQ

产生高优先级中断,进入该模式

3.IRQ

产生低优先级中断

4.Supervisor

复位或软中断执行执行时,进入该模式

5.Abort

存取异常,进入该模式

6.Undef

执行了未定义指令,进入该模式

7.System

和user模式使用相同寄存器集的特权模式

六、异常处理

一>异常向量表

数组,存放跳转到对应异常服务函数的指令

二>处理流程

产生异常:

1.拷贝CPSR到SPSR_<mode>

2.设置CPSR

  • 进入ARM状态
  • 改变处理器模式进入对应的异常模式
  • 设置中断禁止位

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

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

返回:

1.从SPSR_<mode>恢复CPSR

2.从LR_<mode>恢复PC

"只能在ARM态执行该操作"

相关推荐
九思十安16 小时前
HNU2026-计算机系统-笔记 5 汇编进阶
汇编·笔记
九思十安18 小时前
HNU2026-计算机系统-笔记 4 汇编初步
汇编·笔记
这猪好帅2 天前
协程原理与实现
汇编
Byron Loong5 天前
【逆向】AT Hook 与 Inline Hook 对比
c语言·汇编·c++
clear sky .5 天前
[arm]HardFault_Handler()来源定位
arm
iCxhust6 天前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
xxjj998a8 天前
PHP与汇编:从Web到硬件的编程差异
开发语言·汇编·php
陈eaten8 天前
汇编使用AES指令集实现AES解密
汇编·python·aes解密·aes指令集
顾鉴行思9 天前
10 字符串常量到底存在哪里?
c语言·汇编·经验分享
iCxhust9 天前
在 emu8086 中可以直接编译运行的完整汇编程序,演示数组的定义、遍历、求和、求最大值。
开发语言·前端·javascript·汇编·单片机·嵌入式硬件·算法