当前位置: 首页 > news >正文

Linux开发——ARM介绍

在嵌入式和Linux开发领域,ARM架构因其低功耗、高性能和广泛的应用而备受青睐。本文将从基础知识入手,对RISC与CISC、冯·诺伊曼与哈佛架构、ARM内核结构、工作模式以及异常向量表进行介绍和说明。


1. 什么是RISC与CISC?

  • CISC (Complex Instruction Set Computer):复杂指令集计算机。以x86为代表,CISC架构的特点是指令丰富且复杂,单条指令可完成较为复杂的操作,但解码和执行电路复杂,功耗较高。

  • RISC (Reduced Instruction Set Computer):精简指令集计算机。以ARM为代表,RISC架构强调简化指令,所有指令大多在一个时钟周期内完成,硬件实现相对简单,效率高、能耗低。

📌 对比示意图:

CISC: 一条指令 -> 多个操作 (复杂)
RISC: 一条指令 -> 单一操作 (精简)

2. 冯·诺伊曼架构与哈佛架构

  • 冯·诺伊曼结构:指令和数据共用一组总线,CPU分时获取指令和数据。优点是硬件简单,缺点是“瓶颈”问题(指令和数据不能同时访问)。

  • 哈佛结构:指令和数据分开存放,通过两组独立的总线访问,可以同时取指和取数,效率更高,但硬件设计更复杂。

  • ARM内核架构:属于 混合架构,在指令和数据访问上融合了两种结构的优点。例如,存储器层次上可能采用哈佛结构,而总线接口部分表现为冯·诺伊曼结构。

📌 示意图

冯·诺伊曼结构: [CPU] --一条总线-- [存储器(指令+数据)]
哈佛结构:      [CPU] --指令总线-- [指令存储器]--数据总线-- [数据存储器]

3. ARM内核包含的基本组成

ARM内核是ARM处理器的核心部分,主要包含以下功能单元:

  • 通用寄存器(R0-R15):存放数据和地址。

  • ALU (Arithmetic Logic Unit):算术逻辑单元,用于执行运算和逻辑操作。

  • Cache(高速缓存):提升数据访问速度。

  • CPSR (Current Program Status Register):当前程序状态寄存器,用于保存条件码、中断屏蔽位、处理器模式等信息。

  • SPSR (Saved Program Status Register):程序状态备份寄存器,用于在异常发生时保存CPSR。

  • PC (Program Counter):程序计数器,存放下一条要执行的指令地址。

  • LR (Link Register):链接寄存器,用于存放子程序返回地址。

  • SP (Stack Pointer):栈指针,用于管理函数调用和中断时的堆栈操作。


4. ARM的工作模式

ARM处理器支持多种工作模式,不同的模式决定了寄存器和系统的访问权限:

  • User 模式:非特权模式,大多数应用程序运行在此模式。

  • FIQ (Fast Interrupt Request):高速中断模式,响应高优先级中断。

  • IRQ (Interrupt Request):普通中断模式,响应低优先级中断。

  • Supervisor (SVC):管理模式,系统调用、复位后进入此模式。

  • Abort:存取异常模式,用于处理存储器访问错误。

  • Undef:未定义指令模式。

  • System:与User模式类似,但具备特权权限。

📌 模式切换示意图:

异常/中断发生 → 切换到特定模式 → 保存上下文 → 执行对应处理程序

5. 异常向量表

异常向量表是ARM处理器中用于处理异常和中断的重要机制。它是一张表,存放在固定的内存地址处,用于指引CPU在不同异常发生时跳转到对应的异常处理入口。

异常处理流程:

  1. 将当前CPSR内容保存到对应的SPSR寄存器。

  2. 设置CPSR的相关位,进入ARM态和异常模式。

  3. 将PC加载为异常向量表中的对应地址。

📌 常见异常向量表:

地址偏移     异常类型
0x00         Reset (复位)
0x04         Undefined Instruction (未定义指令)
0x08         SWI (软件中断)
0x0C         Prefetch Abort (取指异常)
0x10         Data Abort (数据异常)
0x14         保留
0x18         IRQ (普通中断)
0x1C         FIQ (快速中断)

📌 示意图

+------------------------+
| 0x00  Reset            |
| 0x04  Undefined        |
| 0x08  SWI              |
| 0x0C  Prefetch Abort   |
| 0x10  Data Abort       |
| 0x14  Reserved         |
| 0x18  IRQ              |
| 0x1C  FIQ              |
+------------------------+

总结

ARM作为典型的RISC架构处理器,结合了哈佛与冯·诺伊曼架构的优势,具备灵活的工作模式和完善的异常处理机制。在Linux开发和嵌入式应用中,理解ARM内核结构和异常处理机制是深入掌握系统开发的关键。

http://www.dtcms.com/a/391706.html

相关文章:

  • Force Dimension Sigma力反馈设备远程遥操作机械臂外科手术应用
  • 泛函驻点方程与边界条件的推导:含四阶导数与给定边界
  • C#开发USB报警灯服务,提供MES或者其它系统通过WebAPI调用控制报警灯
  • Docker基础篇08:Docker常规安装简介
  • 【软考-系统架构设计师】软件架构分析方法(SAAM)
  • 广西保安员考试题库及答案
  • 【Vue】Vue 项目中常见的埋点方案
  • 投稿之前去重还是投稿之后去重?
  • 【包教包会】CocosCreator3.x全局单例最优解
  • 为什么要使用dynamic_cast
  • 随机过程笔记
  • OpenHarmony:NDK开发
  • Dify 从入门到精通(第 87/100 篇):Dify 的多模态模型可观测性(高级篇)
  • 5种获取JavaScript时间戳函数的方法
  • Redis 三种集群模式
  • 初识kotlin协程
  • 多线程——内存可见性问题和指令重排序问题(volatile详解)
  • Linux第十八讲:应用层协议Http
  • 【C++】速识map与set
  • 多层感知机(MLP)
  • Linux系统诊断——拷贝日志系统
  • python中 ​实例方法​(普通方法)和 ​类方法​ 的核心差异
  • Sping AI接入deepseek-本地部署大模型-第二期
  • 数据分析-数据指标体系搭建及应用
  • 计算机专业课《大数据技术》课程导览:开启数据智能时代
  • dumpsys battery 简介
  • 从 CNN 基础到 AlexNet:计算机视觉的破局之路
  • 苏州自动化工厂1台服务器如何5人并发SolidWorks设计
  • 固态硬盘数据恢复一般多少钱?费用分析+恢复教程
  • WebRTC 探秘:构建你自己的实时视频应用