一、ARM内核基础知识

 

1.ALU

算术逻辑单元;完成运算的电路

2.通用寄存器:R0~R15

  •         R13(SP):栈指针寄存器:指向栈的指针(指向正确的位置),为了保护现场
  •         R14(LR):连接寄存器:保存PC要回来的位置,在PC调用完了,把地址给PC
  •         R15(PC)program counter 程序计数器;保存当前指令要执行的下一条指令的地址

3.cache

高速缓存;RAM和内核速度不匹配;

  •         I cache:指令高速缓存    instruction
  •         d cache:数据高速缓存   data

4.MMU:memory management unit 

        内存管理单元;映射虚拟内存和物理内存:提高内存的使用效率

5.CPSR:current program status register

        程序状态寄存器。

  • 用户级编程时用于存储条件码
  • 任何处理器模式下被访问
  • 两种运行状态:ARM状态(32位)、Thumb状态(16位),两种状态之间可任意切换
  • 七种运行模式:usr(用户)、fiq(快速中断)、irq(外部中断)、svc(管理)、sys(系统)、abt(数据访问中止)、und(未定义指令中止)

6.SPSR:saved program status register

        程序状态保存寄存器

  • 每一种处理器模式下都有一个状态寄存器SPSR,用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
  • 当特定的异常中断发生时,这个寄存器存放CPSR的内容。
  • 在异常中断退出时,可以用SPSR来恢复CPSR。

7.CISC:complex instruction set computer

        复杂指令集计算机

  •  特点:指令集复杂、可变长度,单条指令可完成多步操作(如x86)。
  • 优势:代码密度高,但硬件设计复杂,功耗较高,在80%情况下,只能用20%功能。

8.RISC:reduce  instruction set computer

       精简指令集计算机

  • 特点:指令集简单、固定长度,执行效率高,通常采用流水线技术,依赖编译器优化。

  • 优势:低功耗、高性能,适合嵌入式系统(如ARM、MIPS)。

9.cortex 系列:(从ARM 11)

  •         cortex  A:应用,消费类电子,便携类设备;A7系列
  •         cortex R:实时性高,高端,军工、卫星;
  •         cortex M:单片机系列;

10.总线(bus)

        AHB:先进的高速总线,连接高速设备,USB、RAM(早期叫北桥)
APB:先进外设总线,连接低速设备串口、GPIO,定时器(早期叫南桥)

11.哈佛结构和冯诺依曼

(1)哈佛架构

        程序存储和数据存储分离:哈佛架构使用独立的存储器和总线来分别存储程序和数据。程序存储器专门用于存储指令,数据存储器用于存储变量和数据。

(2)冯·诺伊曼架构

        程序存储和数据存储统一:冯·诺伊曼架构使用同一套存储器和总线来存储程序和数据。程序和数据存储在同一个存储空间中,通过地址来区分指令和数据。

(3) ARM内核

  • 早期经典ARM(如ARM7)采用冯·诺伊曼架构;

  • 现代ARM(如Cortex-M/A系列)采用改进的哈佛架构(缓存层级分离指令/数据)。

12.编译器

  • :交叉编译工具链:arm-gcc,编译出来的代码无法在主机运行,只能在目标机上运行。
  •         对内核进行操作,比如关闭MMU,打开SP,打开I cache,关闭d cache 

二、RAM分类

(1)sram(static ram)
用晶体管存储0、1;

        速度快,成本高,存储密度低;

        应用于单片机。

(2)dram(dynamic ram)动态存储
用电容充放电存储0,1;

        功耗大,需要外接(外接刷新电路,电路复杂(定期向存储1的补充电荷)),读写速度低于sram,成本低,存储密度大;

        多应用与高端Soc。

(3)sdram(synchronous dram)
增加了同步电路,提高dram的数据读写速度(dram升级版)。

(4)ddr ram(ddr sdramldouble data rate sdram)
为sdram的下一代;双倍速(双数据速率)

(5)iram(internal ram)
注意iram并非是真正意义上的某种ram,通常iram就是 sram,它通常存在于Soc内部,所以被称为iram(Soc内部直接封装好在芯片内部的sram)

三、ROM分类

(1)rom非易失性存储器
最早的rom在出场时写入数据,之后无法更改。

(2)prom(programmable rom)可编程rom
出场后能够让用户写入一次数据,例如cdrom。

(3)eprom(erasable prom)可擦写prom
出场后可以擦除数据再次写入, 但需要特殊的设备,如紫外光等。

(4)eeprom(electically eprom)电可擦写可编程rom
无需专用设备就可以擦写,编程。

(5)flash闪存,新一代非易失性存储器
1)nor flash(或非falsh)
可直接被CPU寻址(每个字节都有独一无二的地址)

        2)nand flash(与非falsh)
不可被COU寻址,每个字节不可被寻址(用flash控制器可以访问)

 (6)存储系统的速度和价格对比

四、ARM处理器工作模式(kernal)

Cortex A7有9种基本工作模式

五、寄存器概要

:1.PC所有模式公用;不同的工作模式下,各状态都有自己独立的栈区空间,管理不同的栈(SP和LR);

        2. ARM9 :37个寄存器;cortex A-7有40个寄存器

六、异常处理

1.异常模块

  • FIQ中断
  • IRQ中断
  • Data Abort(数据存储异常):对RAM的访问发生错误
  • Prefetch Abort(预取失败异常):指令预取阶段内存访问失败触发
  • Software Interrupt(软中断异常):软件中断(任务切换),多任务的并发靠底层的软中断实现
  • Undefined Instruction(未定义指令异常)
  • Reset(复位异常)

2.异常向量表

  • 定义:一段固定地址的内存区域(通常位于0x00000000或0xFFFF0000),存储异常处理函数的入口地址。

  • 内容:每个异常类型对应一个4字节跳转指令

3. 当异常发生时,ARM内核会做哪些操作?

  1. 保存现场

    将当前PC(下一条指令地址)存入LR(如LR=PC-4或PC+4),CPSR存入SPSR(备份状态)。切换到对应的异常模式(如IRQ模式)。
  2. 跳转至异常处理

    从异常向量表获取处理函数地址,执行异常服务程序(ISR)。
  3. 中断屏蔽

    自动禁用同级或低优先级中断(FIQ可能不被屏蔽)。
  4. 返回恢复(手动操作):

    通过特定指令(如SUBS PC, LR, #4)恢复PC和CPSR,返回到原程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92354.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92354.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92354.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QML开发:QML中的基本元素

文章目录一、概述二、常用基本元素2.1 基础视觉元素(常用于布局和显示)2.1.1 元素 Item 的介绍和使用2.1.2 元素 Rectangle 的介绍和使用2.1.3 元素 Image 的介绍和使用2.1.4 元素 Text 的介绍和使用2.2 交互元素(用于接收用户操作&#xff0…

Spring AI 项目实战(二十二):Spring Boot + AI +DeepSeek实现智能合同数据问答助手​(附完整源码)

系列文章 序号 文章名称 1 Spring AI 项目实战(一):Spring AI 核心模块入门 2 Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码) 3 Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码) 4

从 0 到 1 创建 InfluxDB 3 表:标签、字段、命名规范一篇讲透

前言 在使用 InfluxDB 3 存储时序数据时,表的设计堪比盖房子打地基,地基打歪,数据“塌方”指日可待。InfluxDB 虽然不是传统意义上的关系型数据库,但它有自己的一套“审美”:标签(Tags)和字段(Fields)是它的双核心,谁先谁后,关系重大,顺序写错,查询性能立马打折。…

[sqlserver] 分析SQL Server中执行效率较低的SQL语句

查询性能分析较低的SQL语句 -- 查询性能分析 SELECT TOP 50qs.creation_time AS [编译时间],qs.last_execution_time AS [最后执行时间],qs.execution_count AS [执行次数],qs.total_worker_time/1000 AS [CPU总时间(ms)],qs.total_elapsed_time/1000 AS [总耗时(ms)],(qs.tota…

SmartX 用户建云实践|宝信软件:搭建“双架构”私有云平台,灵活满足多种业务需求

上海宝信软件股份有限公司(以下简称宝信软件)系中国宝武实际控制、宝钢股份控股的上市软件企业,是中国领先的工业软件行业应用解决方案和服务提供商,为宝武集团提供整体 IT 基础架构解决方案与服务。为统一管理宝武集团旗下分散在…

应用科普 | 漫谈6G通信的未来

【摘要前言】2019年推出的5G无线通信将移动设备的性能提升到了一个新的水平。首批应用利用5G提供移动宽带,使消费者能够以远超以往的速度进行流媒体传输、游戏和连接。随着技术的成熟,它已成为物联网的关键组成部分,将机器汇集到一个全球网络…

从零开始用 Eclipse 写第一个 Java 程序:HelloWorld 全流程 + 避坑指南

对于 Java 初学者来说,第一次用 Eclipse 写程序往往会手足无措 —— 找不到新建项目的入口、不知道包和类该怎么命名、运行时控制台突然消失…… 别慌!本文以最经典的 “HelloWorld” 为例,手把手带你走完从 Eclipse 项目创建到程序运行的完整…

NVIDIA Isaac GR00T N1.5 源码剖析与复现

​ 0. 前言 2025.6.11 NVIDIA Isaac GR00T N1 进化,英伟达发布了NVIDIA Isaac GR00T N1.5模型,效果比原先提高了不少,故来复现一下,看看能否应用于我的项目中: 代码页 项目页 模型页 ​ 以下是使用 GR00T N1.5 的一般…

手把手教你驯服Apache IoTDB时序数据库,开启时序数据管理新征程!

手把手教你驯服Apache IoTDB,开启时序数据管理新征程! 本文是一篇幽默风趣的 Apache IoTDB 时序数据库安装使用教程。从 “这东西能不能吃” 的灵魂拷问切入,先科普 IoTDB 的 “真实身份”—— 一款专为时序数据设计的数据库利器,…

剧本杀小程序系统开发:开启沉浸式推理社交新纪元

在数字化浪潮席卷的当下,传统娱乐方式正经历着前所未有的变革,剧本杀这一融合了推理、角色扮演与社交互动的热门游戏,也搭上了科技的快车,剧本杀小程序系统开发应运而生,为玩家们开启了一扇通往沉浸式推理社交新世界的…

Ubuntu系统VScode实现opencv(c++)视频的处理与保存

通过OpenCV等计算机视觉工具,开发者可以像处理静态图像一样对视频流逐帧分析:从简单的裁剪、旋转、色彩校正,到复杂的稳像、目标跟踪、超分辨率重建。而如何将处理后的高帧率、高动态范围数据高效压缩并封装为通用格式(如MP4、AVI…

三坐标测量技术解析:从基础原理到斜孔测量难点突破

基础原理 三坐标测量仪(Coordinate Measuring Machine,CMM)这种集机械、电子、计算机技术于一体的三维测量设备,其核心技术原理在于:当接触式或非接触式测头接触感应到工件表面时,测量系统会瞬间记录三个坐…

【MySQL基础篇】:MySQL常用内置函数以及实用示例

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:MySQL篇–CSDN博客 文章目录内置函数一.日期函数二.字符串函数三.数学函数四.其他函数内置函…

Mirror学习笔记

Mirror官方案例操作 一、导入Mirror 在unity商城订阅Mirror https://assetstore.unity.com/packages/tools/network/mirror-129321 使用unity创建工程 (推荐版本:目前建议使用 Unity 2020 或 2021 LTS 版本;超出这些版本的可能可以运行…

R4周打卡——Pytorch实现 LSTM火灾预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、准备工作 1.1导入数据 1.2数据集可视化 二、构建数据集 2.1数据集预处理 2.2设置X、Y 2.3检查数据集中有没有空值 2.4划分数据集 三、构建模型 3.1定义训…

【视觉识别】Ubuntu 22.04 上编译安装OPENCV 4.12.0 鲁班猫V5

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

基于vue的财务管理系统/基于php的财务管理系统

基于vue的财务管理系统/基于php的财务管理系统

机器学习技术在订单簿大单检测中的应用研究

订单簿数据的特点 订单簿(Order Book)是记录市场上所有未成交买卖订单的数据结构,通常包括价格、数量、买卖方向等信息。订单簿数据具有以下特点: 高频率:订单簿数据更新速度极快,通常以毫秒甚至微秒为单位…

Spring MVC框架中DispatcherServlet详解

1. DispatcherServlet概述1.1 什么是DispatcherServlet?DispatcherServlet是Spring MVC框架的核心组件,它本质上是一个Java Servlet,作为前端控制器(Front Controller)负责接收所有HTTP请求,并根据特定规则将请求分发到相应的处理…

DBA急救手册:拆解Oracle死锁图,ORA-00060错误秒级定位终极指南

关于“死锁图”(Deadlock Graph)的一点浅见 当 Oracle 检测到死锁时,检测到死锁的会话中的当前 SQL 将被取消,并执行“语句级回滚”,以释放资源并避免阻塞所有活动。 检测到死锁的会话仍然“存活”,并且事务…