网页建站分为几个类型,免费flash素材网站,网站如何绑定虚拟主机,网站建设与规划试卷文章目录 前言一、ARM内核与架构1.1 ARM芯片的组成1.2 ARM处理器命名规则#xff08;arm v6之前#xff09;1.3 ARM指令集与架构1.4 ARM授权方式1.5 ARM核心时间线 二、ARM处理器模式与寄存器2.1 ARM处理器模式2.2 ARM寄存器 参考资料 前言
该文章是通过学习《ARM体系结构与… 文章目录 前言一、ARM内核与架构1.1 ARM芯片的组成1.2 ARM处理器命名规则arm v6之前1.3 ARM指令集与架构1.4 ARM授权方式1.5 ARM核心时间线 二、ARM处理器模式与寄存器2.1 ARM处理器模式2.2 ARM寄存器 参考资料 前言
该文章是通过学习《ARM体系结构与编程》 杜春雷的书这本书描述的是以ARM v6之前的体系架构为基础的相对比较老不过对于初学者还是有很多可以借鉴的地方并结合网上资料所做的笔记希望可以共同进步。 一、ARM内核与架构
1.1 ARM芯片的组成 任何一款arm芯片主要由两大部分组成arm内核 、外设 。
arm内核 arm内核主要由寄存器 、指令集 、总线 、存储器映射规则 、中断逻辑 和调试组件等。内核是由ARM公司设计并以销售方式授权给个芯片厂商使用的ARM公司本身不做芯片。比如为高速度设计的Cortex A8、A9都是ARMv7a 架构Cortex M3、M4是ARMv7m架构前者是处理器就 是内核 后者是指令集的架构也简称架构。外设 包括计时器、A/D转换器、存储器、I2C、UART、SPI、ROM等等。由各个芯片厂商自己设计并与ARM内核衔接配套。不同的芯片厂商就有不同的外设因此构成了数量和规格庞大的ARM芯片产业。
1.2 ARM处理器命名规则arm v6之前 1.3 ARM指令集与架构 ARM指令集介绍 指令集的设计是处理器结构中最重要的部分用arm的术语称之为ISAInstruction Set Architecture。 指令集可以说是cpu设计的灵魂是打开CPU这个潘多拉魔盒的咒语要想使用cpu我们只能通过这些指令来操作cpu。 对于32位的cpu这些指令就是一个个32位的01的序列不同的值就代表了不同的机器指令 cpu的硬件能完美的解析并执行这些指令比如寻址、运算、异常处理等等。 ARM处理器架构 Cortex-A32/35/53/57/72/73/77/78采用的都是ARMv8 架构这是ARM公司的首款支持64位指令集的处理器架构 。 1ARM11之前的处理器和指令集架构对应关系如下 体系架构处理器家族ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM600、ARM610、ARM7、ARM700、ARM710ARMv4StrongARM、ARM8、ARM810、ARM7-TDMI、ARM9-TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11ARMv7Cortex-A、Cortex-R、Cortex-MARMv8Cortex-A35、Cortex-R52、Cortex-A50系列、Cortex-A72、Cortex-A73
2ARM11之后处理器和指令集架构 从1995年开始《ARM体系结构参考手册》是ARM文档的主要来源提供了关于ARM处理器架构和指令集区分接口所有的ARM处理器的支持如指令语义的实现细节可能会有所不同。 ARM公司自2004年推出ARMv7内核架构时ARM11之前的处理器统称经典处理器系列ARM的命名方式有所改变摒弃了以往ARM数字这种处理器命名方法。 新的处理器家族改以Cortex命名并分为三个系列分别是Cortex-ACortex-RCortex-M。 1Cortex-A系列AApplication 应用 面向性能密集型系统的应用处理器内核。*针对日益增长的消费娱乐和无线产品设计用于具有高计算要求、运行丰富操作系统及提供交互媒体和图形体验的应用领域 如智能手机、平板电脑、汽车娱乐系统、数字电视智能本、电子阅读器、家用网络、家用网关和其他各种产品。 2Cortex-R系列 RReal-time 实时 面向实时应用的高性能内核。*针对需要运行实时操作的系统应用面向如汽车制动系统 、动力传动解决方案 、大容量存储控制器 等深层嵌入式实时应用。 3Cortex-M系列MMCU FPGA 面向各类嵌入式应用的微控制器内核。 4Cortex-SC系列SCSecurCore 其实除了上述三大系列之外还有一个主打安全的Cortex-SC系列SCSecurCore主要用于政府安全芯片 。 Cortex-A系列是用于移动领域的CPUCortex-R和Cortex-M系列是用于实时控制领域的MCU。Cortex-M系列主要是用来取代经典处理器ARM7系列比如基于ARMv4架构的ARM7TDMICortex-M比ARM7的架构高了3代性能也有较大提升所以新的设计推荐使用Cortex-M关于从ARM7到Cortex-M的移植详见ARM官网指导 ARM7处理器系列。此外Cortex-M系列还细分为M0、M3、M4和超低功耗的M0用户依据成本、性能、功耗等因素来选择芯片。
1.4 ARM授权方式
ARM公司本身并不靠自有的设计来制造或出售CPU而是将处理器架构授权给有兴趣的厂家。
STM32就是属于ARM公司授权Cortex-M内核给ST公司生产的一款处理器。
ARM提供了多样的授权条款包括售价与散播性等项目。对于授权方来说ARM提供了ARM内核的集成硬件叙述包含完整的软件开发工具编译器、debugger、SDK以及针对内含ARM CPU硅芯片的销售权。
许多半导体公司持有ARM授权Atmel、 ST、NXP、 TI、 IBM等。
在知识产权工业ARM是广为人知最昂贵的CPU内核之一。单一的客户产品包含一个基本的ARM内核可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改则费用就可能超过千万美元。
1.5 ARM核心时间线
早在1993年经典的ARM7就问世了直到现在大家看到的Cortex-A系列处理器。 二、ARM处理器模式与寄存器
2.1 ARM处理器模式 ARM处理器共有7种运行模式分别为用户usr、快速中断fiq、外部中断irq、特权svc、中止abt、未定义指令中止und和系统模式sys。 在特权模式下程序可以访问所有的系统资源。非特权模式和特权模式之间的区别在于有些操作只能在特权模式下才被允许例如直接改变模式和中断使能等。而且为了保证数据安全一般MMU会对地址空间进行划分只有特权模式才能访问所有的地址空间。而用户模式如果需要访问硬件必须切换到特权模式下才允许访问硬件。
2.2 ARM寄存器 ARM共有37个寄存器都是32位长度的 131个通用寄存器包括程序计数器PC在内 26个状态寄存器包括1个当前状态寄存器和5个备份状态寄存器影子寄存器。目前只使用了其中12位。 ARM各工作模式下的寄存器 Thumb状态下的寄存器 ARM各寄存器介绍 未分组寄存器 R0 ~ R7共 8 个。在所有的运行模式下都使用同一个物理寄存器它们未被系统用作特殊的用途。 分组寄存器 R8 ~ R12R13 ~ R14 1R8 ~ R12 总共10个 每次所访问的物理寄存器与处理器当前的运行模式有关R8R12每个寄存器对应两个不同的物理寄存器当使用fiq模式时访问寄存器R8_fiqR12_fiq当使用除fiq模式以外的其他模式时访问寄存器R8_usrR12_usr。其中 FIQ 模式有单独的一组 R8 ~ R12共5个 FIQ ( 快速中断模式 ) 时访问寄存器 R8_fiq ~ R12_fiq 另外 6 种模式共用一组 R8 ~ R12共5个当使用除 FIQ 模式以外的其他模式时访问寄存器 R8 ~ R12 2 R13 ~ R14 总共12个 其中 USR 和 SYS 模式表格的第一列共用一组 R13 ~ R14 共2个 另外 5 种模式下各有独自的一组 R13 ~ R14并采用以下记号来区分不同的物理寄存器分别为 fiq、irq、svc、abt、und。共10个。 mode为以下几种之一usr、fiq、irq、svc、abt、und 1R13 在 ARM 指令中常用作堆栈指针 SP。由于每一种模式都有自己的 R13所以我们在自己初始化的时候一般都要初始化每种模式下的R13使其指向该运行模式的栈空间。 2R14 称为子程序链接寄存器 LR (Link Register)即在调用子程序的时候可以将当前的程序地址存入LR寄存器这样就方便了函数的返回。它有两个特殊功能一种是每一种模式下都可以用于保存函数的返回地址通常LR会配合BL和BLX来使用另外就是异常处理后的返回地址如中断。 PC 指针 R15 R15 用作程序计数器 ( PC )对应一个物理寄存器由于 ARM 体系结构采用了多级流水线技术对于 ARM 指令集而言PC 总是指向当前指令的下两条指令的地址可以通过向 pc 赋值来控制程序跳转即 PC 的值为当前指令的地址值加8个字节。 CPSR 1 个 状态寄存器当前程序状态寄存器 SPSR 5 个 备份状态寄存器 SPSR备份的程序状态寄存器或者叫 影子寄存器。 SPSR 除 usr、sys 外对应用于异常保护的 CPSR 的备份异常时保存CPSR值异常退出时将该值恢复到CPSR以保证程序的正常运行每一中异常运行模式除usr和sys有各自的物理寄存器。
参考资料
STM32、Cortex-M3和ARMv8-M之间的关联知乎
arm cortex-a cortex-r cortex-m的本质区别是什么体系架构指令集
ARM cortex三个版本AR, M之间区别
ARM7、ARM9、ARM11、ARM-Cortex系列的关系