收藏 分享(赏)

从零上手必读:Cortex-M处理器入门 中文版.pdf

上传人:精品资料 文档编号:9996362 上传时间:2019-09-26 格式:PDF 页数:26 大小:1.06MB
下载 相关 举报
从零上手必读:Cortex-M处理器入门 中文版.pdf_第1页
第1页 / 共26页
从零上手必读:Cortex-M处理器入门 中文版.pdf_第2页
第2页 / 共26页
从零上手必读:Cortex-M处理器入门 中文版.pdf_第3页
第3页 / 共26页
从零上手必读:Cortex-M处理器入门 中文版.pdf_第4页
第4页 / 共26页
从零上手必读:Cortex-M处理器入门 中文版.pdf_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、白皮书 Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 1 of 26 ARM Cortex-M 处理器入门 ARM Cortex-M 处理器家族介绍和 比较Joseph Yiu, 高级嵌入式技术经理 , ARM 三月 2017 White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 2 of 26 概要 ARM Cortex-M 处理器家族 现在 有 8 款处理器成员

2、。 在 本文 中,我们会比较 Cortex-M 系列 处理器 之间 的产品特性 ,重点讲述如何根据产品应用选择正确的 Cortex-M 处理器 。本文中 会详细的对照 Cortex-M 系列 处理器的指令集和高级中断处理能力, 以及 SoC 系统 级特性 ,调试和追踪功能和性能的比较。 1 简介 今天, ARM Cortex-M 处理器家族 有 8 款处理器成员。除此之外, ARM 的产品系列还有很多其他的处理器成员。对很多初学者,甚至某些 芯片设计经验丰富但 是 不熟悉 ARM 系列 处理器 的 设计者来说,也是很容易混淆这些产品的。不同的 ARM 处理器有不同的指令集,系统功能和性能。本文

3、会深入展现 Cortex-M 系列 处理器之间的 关键 区别,以及 它们 和 ARM 其他系列处理器 的 不同 。 1.1 ARM 处理器家族 多年来, ARM 已经研发了相当多的不同的处理器产品。 如下图中(图 1) : ARM 处理器产品分为经典 ARM 处理器系列和 最新 的 Cortex 处理器系列。并且根据应用范围的不同, ARM 处理器可以 分 类 成 3 个系列。 Application Processors(应用处理器) 面向移动计算,智能手机,服务器等市场的的高端处理器。这类处理器运行在很高的时钟频率(超过 1GHz),支持像 Linux, Android, MS Windo

4、ws 和 移动 操作系统等 完整 操作系统 需要 的内存管理单元( MMU)。 如果规划开发的产品需要运行 上述 其中的一个操作系统,你需要选择 ARM 应用处理器 . Real-time Processors (实时处理器) 面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。多数实时处理器不支持 MMU,不过 通常具有 MPU、 Cache 和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如 200MHz 到 1GHz ),响应延迟非常低。虽然实时处理器不能运行 完整版本的 Linux 和 Windows 操作系统 , 但是支持大量的实

5、时操作系统( RTOS)。 Microcontroller Processors(微控制器处理器) 微控制器处理器通常 设计 成 面积 很小 和 能效比很高 。 通常 这些 处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在 200Mhz 之上)。 并且,新的 Cortex-M 处理器家族设计的非常容易使用。因此, ARM 微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。 White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 3 of 2

6、6 图 1: 处理器家族 表 1 总结了三个处理器系列的主要特征 。 Application processors Real-time processors Microcontroller processors 设计特点 高时钟频率,长流水线,高性能,对媒体处理支持( NEON 指令集扩展) , 高时钟频率,较长的流水线,高确定性(中断延迟低) 通常较短的流水线,超低功耗 系统特性 内存管理单元 (MMU), cache memory, ARM TrustZone 安全扩展 内存保护单元 (MPU), cache memory, 紧耦合内存 (TCM) 内存保护单元 (MPU), 嵌套向量中断

7、控制器 (NVIC), 唤醒中断控制器 (WIC), 最新ARM TrustZone 安全扩展 . 目标市场 移动计算,智能手机,高能效服务器,高端微处理器 工业微控制器,汽车电子,硬盘控制器,基带 微控制器,深度嵌入系统(例如,传感器, MEMS,混合信号 IC, IoT) 表 1: 处理器特性总结 A p p l i ca t i o nP r o ce s s o r s( w i t h M M U , s up por t Li nu x ,M S m obi l e O S )R e a l T i m eP r o ce s s o r sM i cr o co n t r o

8、l l e r sa n d d e e p l y e m b e d d e dS y s t e m c a p a b i l i t y & p er fo r ma n c eA RM7TMs er i esA RM9 2 0 TTM, A RM9 4 0 TTMA RM9 4 6TM, A RM9 6 6TMA RM9 2 6TMC o r t e x - M3C o r t e x - M1(F P G A )C o r t e x - M0C o r t e x - M0 +C o r t e x - M4C o r t ex - R4C o r t ex - R5C o r

9、 t e x - R7C o r t e x - A8C o r t ex - A9C o r t ex - A5C o r t ex - A 1 5C o r t ex - A7A R M Co r t e x P r o c e s s o r sC l a s s i c A R M P r o ce s s o r sC o r t e x - A 5 7C o r t e x - A 5 3C o r t e x - A 1 2A RM1 1T Ms er i esC o r t e x - R8C o r t ex - A 1 7C o r t e x - A 7 2C o r t

10、 e x - A 7 3C o r t e x - A 3 2C o r t e x - A 3 5C o r t ex - R5 2C o r t e x - M7C o r t e x - M2 3C o r t e x - M3 3White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 4 of 26 1.2 Cortex-M 处理器家族 Cortex-M 处理器家族更多的集中在低性能端, 但是这些处理器相比于许多微控制器使用的传统处理器性能仍然很强大 。例如, Co

11、rtex-M4 和 Cortex-M7 处理器应用在许多高性能的微控制器产品中,最大的时钟频率可以达到400Mhz。 当然,性能不是选择处理器的唯一指标。在许多应用中,低功耗和成本是关键的选择指标。因此, Cortex-M 处理器家族 包含各种产品来满足不同的需 求 : 处理器 描述 Cortex-M0 面向低成本,超低功耗的微 控制器 和深度嵌入应用的非常小的处理器(最小 12K 门电路) Cortex-M0+ 针对小型嵌入式系统的最高能效的处理器,与 Cortex-M0 处理器接近的尺寸大小和编程模式,但是具有扩展功能,如单周期 I/O 接口和向量表重定位功能 Cortex-M1 针对 F

12、PGA 设计优化的小处理器,利用 FPGA 上的存储器块实现了紧耦合内存( TCM) 。和Cortex-M0 有相同的指令集 Cortex-M3 针对低功耗微控制器设计的处理器,面积小但是性能强劲,支持可以处理器快速处理复杂任务的丰富指令集。具有硬件除法器和乘加指令( MAC) .并且, M3 支持全面的调试和跟踪功能,使 软件开发者可以快速的开发他们的应用 Cortex-M4 不但 具备 Cortex-M3 的所有功能, 并且 扩展了面向数字信号处理( DSP)的指令集, 比如 单指令多数据指令( SMID)和更快的单周期 MAC 操作。此外 , 它还有一个 可选的支持 IEEE754 浮点

13、标准的单精度浮点运算单元 Cortex-M7 针对高端微控制器和数据处理密集的应用开发的高性能处理器。具备 Cortex-M4 支持的所有指令功能,扩展支持 双 精度浮点运算,并且具备扩展的存储器功能,例如 Cache 和紧耦合存储器( TCM) Cortex-M23 面向超低功耗,低成本应用设计的小尺寸处理器,和 Cortex-M0 相似,但是支持各种增强的指令集和系统层面的功能特性。 M23 还支持 TrustZone 安全扩展 Cortex-M33 主流的处理器设计,与之前的 Cortex-M3 和 Cortex-M4 处理器类似,但系统设计更灵活,能耗比更高效,性能更高。 M33 还支

14、持 TrustZone 安全扩展 表 2: Cortex-M 处理器家族 不同于老的 经典 ARM 处理 器 (例如, ARM7TDMI, ARM9), Cortex-M 处理器有一个非常不同的架构 。例如 : - 仅支持 ARM Thumb指令 , 已扩展到同时支持 16 位 和 32 位 指令 Thumb-2 版本 - 内置的嵌套向量中断控制负责中断处理,自动处理中断优先级,中断屏蔽,中断嵌套和系统异常处理。 - 中断处理函数可以使用标准的 C 语言编程,嵌套中断处理机制避免了使用软件判断哪一个中断需要响应处理。同时,中断响应速度是确定 性 的, 低 延迟 的 - 向量表从跳转指令变为中断

15、和系统异常处理函数的起始地址。 - 寄存器组和某些编程模式也做了改变。 这些变化意味着许多为经典 ARM 处理器编写的汇编代码需要修改, 老的项目需要修改和重新编译才能迁移到Cortex-M 的产品上。软件移植具体的细节 记录在 ARM 文档: ARM Cortex-M3 Processor Software Development for ARM7TDMI Processor Programmers http:/ White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 5

16、 of 26 1.3 Cortex-M 系列 处理器 的 共同特性 Cortex-M0, M0+, M3, M4 and M7 之间有很多的 相似之处 ,例如: - 基本编程模型 (章节 Error! Reference source not found.) - 嵌套向量中断控制器( NVIC)的中断响应管理 - 架构设计的休眠模式:睡眠模式和深度睡眠模式 (章节 Error! Reference source not found.) - 操作系统支持特性 (章节 Error! Reference source not found.) - 调试功能 (章节 Error! Reference s

17、ource not found.) - 易用性 例如,嵌套向量中断控制器是 内置 的中断控制器 图 2: Cortex-M处理器的嵌套向量中断控制器 支持 许多 外围设备的中断输入,一个 不可屏蔽的中断请求,一个来自 内置时钟 ( SysTick) 的中断 请求 (见章节 3.3) 和一定数量的系统异常请求。 NVIC 处理这些中断和异常的优先级和屏蔽管理。 NVIC 以及异常处理模型的更多的内容在 章节 3.2 描述。其他 Cortex-M 处理器间的异同点会在本文的其余 部分讲解。 2 Cortex-M 处理器指令集 2.1 指令集简介 大多数情况下, 应用程序代码可以用 C 或其他高级语

18、 言 编写 。但是,对 Cortex-M 处理器支持指令集的基本了解有助于 开发者针对具体应用选择合适的 Cortex-M 处理器。 指令集( ISA)是处理器架构的一部分, Cortex-M 处理器可以分为几个架构规范 N V I CS y s T i c k( S y s t e m T i c k T i m e r )P e r i p h e r a l sN M II R Q sC o r t e x - Mp r o c e s s o rC o r eC o n f i g u r a t i o nr e g i s t e r sI n t e r n a l b u s

19、i n t e r c o n n e c tS y s t e m e x c e p t i o n sB u s i n t e r f a c eP e r i p h e r a lWhite paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 6 of 26 架构 描述 ARMv6-M Cortex-M0, Cortex-M0+ 和 Cortex-M1 支持的架构 ARMv7-M Cortex-M3, Cortex-M4 和 Cortex-M7 支持 的架构 .ARMv

20、7-M 扩展的 DSP 类型指令( SMID)也被称为 ARMv7E-M. ARMv8-M 这个架构进一步分为: Baseline 子规范 Cortex-M23 对应的架构 Mainline 子规范 Cortex-M33 对应的架构 For more information about ARMv8-M architecture, please see in ARMv8-M 关于ARMv8-M 架构的更多信息 ,请参见 ARMv8-M 的 ARMv8-M Architecture Technical Overview https:/ 表 3: Cortex-M 处理器 ARM 架构规范的规范 所

21、有的 Cortex-M 处理器都支持 Thumb 指令集。整套 Thumb 指令集扩展到 Thumb-2 版本时 变得 相当 大。但是,不同的 Cortex-M 处理器支持不同的 Thumb 指令集的子集,如图 3 所示 C o r t e x - M 0 / M 0 +C o r t e x - M3C o r t e x - M4C o r t e x - M7A R M v 6 - MA R M v 7 - MAd v a nc e d d a ta pr o c e s s i ngbi t fi e l d m a ni pul a ti o nsG e ne r a l d a t

22、a pr o c e s s i ngI/ O c o ntr o l ta s k sDSP ( SIM D , fa s t M A C )F l o a ti ng P o i ntA R M v 8 - MB a s e l i n eA R M v 8 - MC o r t e x - M 2 3C o r t e x - M 3 3White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 7 of 26 图 3: Cortex-M 处理器 的指令集 2.2 Cor

23、tex-M0/M0+/M1 指令集 Cortex-M0/M0+/M1 处理器基于 ARMv6-M 架构 。这 是一个 只支持 56 条指令的小指令集,大部分指令是 16 位指令,如图 3 所示只占很小的一部分。但是,此类处理器中的寄存器和处理的数据长度是 32 位的。对于大多数简单的 I/O 控制任务和普通的数据处理 ,这些指令已经足够了。这么小的指令集可以用很少的电路门数来实现处理器设计, Cortex-M0 和 Cortex-M0+最小配置仅仅 12K 门。然而,其中的很多指令无法使用高位寄存器( R8 到R12) , 并且 生成立即数的能力有限。这是 平衡 了 超低功耗和性能 需求 的结

24、果。 2.3 Cortex-M3 指令集 Cortex-M3 处理器是基于 ARMv7-M 架构的处理器,支持更丰富的指令集,包括许多 32 位指令,这些指令可以高效的使用高位寄存器。另外, M3 还支持: 查表跳转指令和条件执行(使用 IT 指令) 硬件除法指令 乘加指令 ( MAC) 各种位操作指令 更丰富的指令集通过几种途径来增强性能;例如, 32 位 Thumb 指令支持了更 大范围的立即数,跳转偏移和内存数据范围的地址偏移。支持基本的 DSP 操作(例如, 支持若干 条需要多个时钟周期执行 的 MAC 指令,还有饱和运算指令)。最后,这些 32 位指令允许用单个指令对多个数据一起做桶

25、型移位操作。 支持更丰富的指令导致了更大的面积成本和更高的功耗。典型的微控制器, Cortex-M3 的电路门数是 Cortex-M0 和 Cortex-M0+两倍还多。但是,处理器的面积只是大多数现代微控制器的很小的一部分, 多 出来的面积和功耗经常不那么重要。 2.4 Cortex-M4 指令集 Cortex-M4 在很多地方和 Cortex-M3 相同:流水线,编程模型。 Cortex-M4 支持 Cortex-M3 的所有功能,并额外支持各种面向 DSP 应用的指令,像 SIMD, 饱和运算指令, 一系列 单周期 MAC 指令( Cortex-M3 只支持 有限条MAC 指令 ,并且

26、是多周期 执行 的 ),和可选的单精度浮点运算 指令 。 Cortex-M4 的 SIMD 操作可以并行处理两个 16 位数据和 4 个 8 位 数据。例如,图 4 展示的 QADD8 和 QADD16 操作: White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 8 of 26 图 4: SIMD 指令例子 : QADD8 and QADD16 The uses of SIMD enable much faster computation of 16-bit and 8

27、-bit data in certain DSP operations as the calculation can be parallelized. However, in general programming, C compilers are unlikely to utilize the SIMD capability. That is why the typical benchmark results of the Cortex-M3 and Cortex-M4. However, the internal data path of the Cortex-M4 is differen

28、t from Cortex-M3, which enable faster operations in a few cases (e.g. single cycle MAC, and allow write back of two registers in a single cycle).在某些 DSP 运算中,使用 SIMD 可以加速更快 计算 16 位和 8 位数据,因为这些运算可以并行处理。但是, 一般 的编程中, C 编译器并不能充分利用 SIMD 运算能力。这是为什么 Cortex-M3 和 Cortex-M4 典型 benchmark 的分数 差不多。然而, Cortex-M4 的

29、内部数据通路和 Cortex-M3 的不同,某些情况下Cortex-M4 可以处理的更快(例如,单周期 MAC, 可以在一个周期中写回到两个寄存器 )。 2.5 Cortex-M7 指令集 Cortex-M7 支持的指令集和 Cortex-M4 相似, 添加了 : 浮点数据架构是基于 FPv5 的,而不是 Cortex-M4 的 FPv4,所以 Cortex-M7 支持额外浮点指令 可选的双精度浮点数据处理指令 支持缓存数据预取指令( PLD) Cortex-M7 的流水线和 Cortex-M4 的非常 不同 。 Cortex-M7 是 6 级双发射流水线,可以获得更高的性能。多数为Corte

30、x-M4 设计的软件可以直接运行在 Cortex-M7 上。 但是,为了充分利用流水线差异来达到最好的优化,软件需要重新编译,并且在许多情况下, 软件 需要一些小的升级,以充分利用像 Cache 这样的新功能 。 2.6 Cortex-M23 指令集 Cortex-M23 的指令集是基于 ARMv8-M 的 Baseline 子规范,它是 ARMv6-M 的超集。扩展的指令包括: 硬件除法指令 比较和跳转指令, 32 位跳转指令 支持 TrustZone 安全扩展的指令 互斥数据访问指令(通常用于信号量操作) i n t 8 _ ti n t 8 _ ti n t 8 _ ti n t 8 _

31、 t3 10i n t 8 _ ti n t 8 _ ti n t 8 _ ti n t 8 _ t3 10R nR mi n t 8 _ ti n t 8 _ ti n t 8 _ ti n t 8 _ t3 10R d+S i g n e d s a t u r a t i o nS a t u r a t i o n b i t p o s i t i o n8S i g n e d s a t u r a t i o nS i g n e d s a t u r a t i o nS i g n e d s a t u r a t i o nQ A D D 8 , , i n t 1

32、6 _ ti n t 1 6 _ t3 103 10R nR mi n t 1 6 _ ti n t 1 6 _ t+S i g n e d s a t u r a t i o nS a t u r a t i o n b i t p o s i t i o n1 6S i g n e d s a t u r a t i o nS a t u r a t i o n b i t p o s i t i o n1 6i n t 1 6 _ ti n t 1 6 _ t3 10R dQ A D D 1 6 , , White paper Copyright 2013-2017 ARM Limite

33、d or its affiliates. All rights reserved. Page 9 of 26 16 位立即数生成指令 载 入 获取及存储释 放指令( 支持 C11) 在 某些情况下 ,这些增强的指令集 可以 提高 处理器 性能 , 并且对包含多个处理器的 SoC 设计有用(例如,互斥访问对多处理器的信号量处理有帮助) 2.7 I Cortex-M33 指令集 因为 Cortex-M33 设计是非常可配置的,某些指令也是可选的。例如: DSP 指令( Cortex-M4 和 Cortex-M7 支持的)是可选的 单精度浮点运算指令是可选的,这些指令是基于 FPv5 的, 并且比

34、Cortex-M4 多几条。 : Cortex-M33 也支持那些 ARMv8-M Mainline 引入的新指令: 支持 TrustZone 安全扩展的指令 载 入 获取及存储释 放指令(支持 C11) 2.8 指令集 特性 比较总结 ARMv6-M, ARMv7-M 和 ARMv8-M 架构有许多指令集功能特点, 很难介绍到所有的细节 。但是,下面的表格(表4)总结 了那 些关键的差异。 Cortex-M0/M0+ Cortex-M1 Cortex-M3 Cortex-M4 Cortex-M7 Cortex-M23 Cortex-M33 Architecture ARMv6-M ARMv6

35、-M ARMv7-M ARMv7E-M ARMv7E-M ARMv8-M Baseline ARMv8-M Mainline v4T,v5T, v6-M Thumb ISA Y Y Y Y Y Y Y v7-M Thumb ISA - - Y Y Y - Y Low power / Sleep mode : WFE, WFI, SEV Y Execute as NOP Y Y Y Y Y Single cycle Multiply (32-bit result) Y Y Y Y Y Y Y Bit field processing - - Y Y Y - Y Hardware divide (

36、integer) - - Y Y Y Y Y Unaligned data access - - Y Y Y - Y Table branch - - Y Y Y - Y Conditional execution (IT) - - Y Y Y - Y Compare & branch (CBZ, CBNZ) - - Y Y Y Y Y Floating point - - - Single Single - Single White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Pa

37、ge 10 of 26 precision (optional) precision / Single + double precision (optional) precision (optional) MAC - - Y (multi-cycle, limited) Y (single cycle) Y (single cycle) - Y (single cycle) SIMD - - - Y Y - Y Saturation - - USAT, SSAT only Y Y - Y Exclusive access - - Y Y Y Y Y Load acquire, store re

38、lease - - - - - Y Y Memory barrier Y Y Y Y Y Y Y SVC Y Optional Y Y Y Y Y TrustZone support - - - - - Y Y 表 4: 指令集特性总结 Cortex-M 处理器指令集的最重要的特点是向上兼容。 Cortex-M3 的指令是 Cortex-M0/M0+/M1 的超集。所以,理论上讲, 如果存储空间分配是一致的 ,运行在 Cortex-M0/M0+/M1 上的二进制文件可以直接运行在 Cortex-M3 上。同样的原理也适用于 Cortex-M4/M7 和其他的 Cortex-M 处理器; Cor

39、tex-M0/M0+/M1/M3 支持的指令也可以运行在 Cortex-M4/M7 上。 虽然 Cortex-M0/M0+/M1/M3/M23 处理器没有浮点运算单元 配置 选项,但是 处理器 仍然 可以利用软件来做浮点数据运算。这也适用于基于 Cortex-M4/M7/M33 但 是 没有配置浮点运算单元的产品。在这种情况下,当程序中使用了浮点数, 编译工具包会在链接阶段插入需要的运行软件库 。软件模式的浮点运算需要更长的运行时间,并且会略微的增加代码大小。但是,如果浮点运算不是频繁使用的,这种方案是适合这种应用的。 3 架构 特性 3.1 编程模型 Cortex-M 处理器家族的编程模型是

40、高度一致的。例如所有的 Crotex-M 处理器都支持 R0 到 R15, PSR, CONTROL 和 PRIMASK。两个特殊的寄存器 FAULTMASK 和 BASEPRI只有 Cortex-M3, Cortex-M4, Cortex-M7 和 Cortex-M33 支持;浮点寄存器组和 FPSCR(浮点状态和控制寄存器)寄存器,是 Cortex-M4/M7/M33 可选的浮点运算单元使用的。 White paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 11 of 26

41、图 5: 编程模型 BASEPRI 寄存器允许程序阻止指定优先级或者低的优先级中断和异常 。对 ARMv7-M 来说这是很重要的,因为Cortex-M3, Cortex-M4, Cortex-M7 和 Cortex-M33 有大量的优先级等级,而 ARMv6-M 和 ARMv8-M Baseline 只有有限的 4 个优先等级 。 FAULTMASK 通常用在复杂的错误处理上 (查看章节 3.4) 非特权级别 的 实现 对 ARMv6-M 处理器是可选的,对 ARMv7-M 和 ARMv8-M 处理器一直支持的。对 Cortex-M0+处理器,它是可选的 , Cortex-M0 and Cor

42、tex-M1 不支持这个功能。这意味着在各种 Cortex-M 处理器的CONTROL 寄存器是稍微不同的。 FPU 的配置也会影响到 CONTROL 寄存器,如图 6 所示。 图 6: CONTROL 寄存器 P r i v i l e g e d H a n d l e rU n p r i v i l e g e d T h r e a dP r i v i l e g e d T h r e a dS t a r t( r e s e t )E x c e p t i o nE x c e p t i o ne x i tE x c e p t i o nE x c e p t i o

43、 ne x i tP r o g r a m o f C O N T R O L r e g i s t e rN o t a v a i l a b l e i n A R M v 6 - MG e n e r a l r e g i s t e r sR 0R 1R 2R 3R 4R 5R 6R 7R 8R 9R 1 0R 1 1R 1 2R 1 3 ( M S P )R 1 4R 1 5R 1 3 ( P S P )M a i n S t a c k P o i n t e r ( M S P ) , P r o c e s s S t a c k P o i n t e r ( P S

44、 P )L i n k R e g i s t e r ( L R )P r o g r a m C o u n t e r ( P C )N a m ex P S RP R I M A S KF A U L T M A S KB A S E P R IF u n c t i o n s P r o g r a m S t a t u s R e g i s t e r sI n t e r r u p t M a s k R e g i s t e r sC o n t r o l R e g i s t e rC O N T R O LS p e c i a l R e g i s t e

45、 r sN o t a v a i l a b l e i n C o r t e x -M 0 / M 1 , o p t i o n a l i n C o r t e x - M 0 +D 3D 2D 5D 4D 7D 6D 9D 8D 1 1D 1 0D 1 3D 1 2D 1 5D 1 4F l o a t i n g P o i n t U n i tS 1D 1S 3S 5S 7S 9S 1 1S 1 3S 1 5S 1 7S 1 9S 2 1S 2 3S 2 5S 2 7S 2 9S 3 1S 0S 2S 4S 6S 8S 1 0S 1 2S 1 4S 1 6S 1 8S 2

46、0S 2 2S 2 4S 2 6S 2 8S 3 0D 0F P S C RF l o a t i n g P o i n t S t a t u s a n d C o n t r o l R e g i s t e rA v a i l a b l e o n t h e C o r t e x - M 4 w i t h F P U o n l y0C O N T R O L3 1 : 4n P R I V12S P S E LC o r t e x - M 3C O N T R O L n P R I VS P S E LC o r t e x - M 4 / M 7 F P C AC

47、 O N T R O L S P S E LA R M v 6 - M n P R I VC O N T R O L n P R I VS P S E LC o r t e x - M 2 33C o r t e x - M 3 3 C O N T R O L n P R I VS P S E LF P C AS F P AI n d i c a t e s f l o a t i n g p o i n t c o n t e x t i s S e c u r e ( f o r T r u s t Z o n e s e c u r i t y e x t e n s i o n )I

48、n d i c a t e s f l o a t i n g p o i n t c o n t e x t i s a c t i v eS t a c k p o i n t e r s e l e c t i o n f o r T h r e a d m o d eT h r e a d m o d e u n p r i v i l e g e dWhite paper Copyright 2013-2017 ARM Limited or its affiliates. All rights reserved. Page 12 of 26 另外一个编程模型之间的不同是 PSR 寄存

49、器 (程序状态寄存器 )的细节。所有的 Cortex-M 处理器, PSR 寄存器都被 再分成应用 程序状态寄存器 (APSR), 执行 程序状态寄存器 (EPSR)和中断 程序状态寄存器 (IPSR)。 ARMv6-M 和 ARMv8-M Baseline 系列的处理器不支持 APSR 的 Q 位和 EPSR 的 ICI/IT 位。 ARMv7E-M 系列 ( Cortex-M4, Cortex-M7) 和 ARMv8-M Mainline (配置了 DSP 扩展的 Cortex-M33 )支持 GE 位。另外, ARMv6-M 系列处理器 IPSR 的中断号数字范围很小,如图 7 所示。图 7: PSR 差异 请注意 Cortex-M 的编程模型和 ARM7TDMI 等这些经典的 ARM 处理器是不一样的。除了寄存器组不同外 ,经典ARM 处理器中“模式”和“状态”的定义与 Cortex-M 中的也是不同

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报