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

相关推荐
aq55356003 小时前
Laravel7.x重磅升级:十大新特性解析
开发语言·汇编·c#·html
Bohemian—Rhapsody7 小时前
银河麒麟(ky10.aarch64)操作系统安装部署mysql5.7.26
mysql·arm
顾喵7 小时前
ARM处理器体系结构
linux·arm
aq55356002 天前
三大编程语言深度对比:C# vs 易语言 vs 汇编
开发语言·汇编·c#
aq55356002 天前
编程语言对比:从汇编到PHP的四大层级解析
开发语言·汇编·php
独小乐4 天前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
独小乐4 天前
013.定时器之系统Tick实现|千篇笔记实现嵌入式全栈/裸机篇
linux·笔记·单片机·嵌入式硬件·arm
C++ 老炮儿的技术栈5 天前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
cch89185 天前
Java vs 汇编:高级与低级的终极对决
java·开发语言·汇编
2301_789015625 天前
C++:智能指针
c语言·开发语言·汇编·c++·智能指针