【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态执行该操作"

相关推荐
MC_J21 小时前
Linux 6.1 移植RTL8723du驱动
linux·arm
海浪鱼2 天前
嵌入式系统相关文件说明
arm
孤独的小丑2 天前
OpenClaw学习资源汇编
汇编·学习
EnglishJun2 天前
ARM嵌入式学习(八)--- 汇编应用:点亮led
汇编·arm开发·学习
2501_918126913 天前
学习所有6502写游戏存档的语句
汇编·嵌入式硬件·学习·游戏·个人开发
2501_918126913 天前
学习所有6502写游戏地图的语句
汇编·嵌入式硬件·学习·游戏·个人开发
2501_918126914 天前
学习所有6502写游戏动画的语句
汇编·嵌入式硬件·学习·程序人生·游戏
2501_918126914 天前
学习所有6502写游戏控制器的语句
java·linux·网络·汇编·嵌入式硬件
2501_918126914 天前
学习所有6502写游戏动作的语句
汇编·嵌入式硬件·学习·游戏·个人开发