0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于ARMv7的知识--了解

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2020-10-30 11:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。

整理如下:

AMBA:先进单片机总线架构 ADK:AMBA设计套件 AHB:先进高性能总线 AHB-AP:AHB访问端口 APB:先进外设总线 ARM ARM:ARM架构参考手册 ASIC:行业领域专用集成电路 ATB :先进跟踪总线 BE8:字节不变式大端模式 CPI:每条指令的周期数 DAP:调试访问端口 DSP数字信号处理(器) DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元 FPB:闪存地址重载及断点 FSR:fault状态寄存器 HTM:Core Sight AHB跟踪宏单元 ICE:在线仿真器 IDE:集成开发环境 IRQ:中断请求(通常是外中断请求) ISA:指令系统架构 ISR:中断服务例程 ITM:仪器化跟踪宏单元 JTAG:连接点测试行动组(一个关于测试和调试接口的标准) LR:连接寄存器 LSB:最低有效位 MSB:最高有效位 LSU:加载存储单元 MCU微控制器单元 MPU:存储器保护单元 MMU:存储器管理单元 MSP:主堆栈指针 NMI:不可屏蔽中断 NVIC:嵌套向量中断控制器 PC:程序计数器 PPB:私有外设总线

同时,还要如下规定:

数值:

1. 4''hC , 0x123 都表示16进制数
2. #3表示数字3 (e.g., IRQ #3 就是指3号中断)
3. #immed_12表示一个12位的立即数
4. 寄存器位。通常是表示一个位段的数值,例如
bit[15:12] 表示位序号从15往下数到12,这一段的数值。 寄存器访问类型
1. R 表示只读
2. W表示只写
3. RW 表示可读可写(前3条好像地球人都知道)
4. R/Wc 表示可读,但是写访问将使之清 0Cortex-M3芯片简介1、芯片的基本结构如下图:


2、关于ARMv7的知识--了解

在这个版本中,内核架构首次从单一款式变成3种款式:

款式A:设计用于高性能的“开放应用平台”——越来越接近电脑

款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。

款式M:用于深度嵌入的,单片机风格的系统中

介绍A:用于高性能的“开放应用平台”,应用在那些需要运行复杂应用程序的处理器。支持大型嵌入式操作系统

R:用于高端的嵌入式系统,要求实时性的

M:用于深度嵌入的、单片机风格的系统中 3、Cortex-M3处理器的舞台

高性能+高代码密度+小硅片面积,使得CM3大面积地成为理想的处理平台,主要应用在以下领域:

(1)低成本单片机

(2)汽车电子

(3)数据通信

(4)工业控制

(5)消费类电子产品4、Cortex-M3概览(1)简介 Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。 比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的 cache。另外在CM3中,Both小端模式和大端模式都是支持的。

(2)Cortex-M3的简化图

(3)寄存器组

处理器拥有R0-R15的寄存器组,其中R13最为堆栈指针SP,SP有两个,但是同一时刻只能有一个可以看到,这就是所谓的“banked”寄存器。


a、R0-R12都是 32位通用寄存器,用于数据操作。但是注意:绝大多数 16位Thumb指令只能访问R0-R7,而 32位 Thumb-2指令可以访问所有寄存器。 b、Cortex-M3拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。
主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
进程堆栈指针(PSP):由用户的应用程序代码使用。 ---堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。--- c、R14:连接寄存器--当呼叫一个子程序时,由R14存储返回地址 d、R15:程序计数寄存器--指向当前的程序地址,如果修改它的值,就能改变程序的执行流(这里有很多高级技巧) e、Cortex-M3还在内核水平上搭载了若干特殊功能寄存器,包括 程序状态字寄存器组(PSRs) 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI)
控制寄存器(CONTROL)


Cortex-M3处理器支持两种处理器的操作模式,还支持两级特权操作。
两种操作模式分别为:处理者模式和线程模式(thread mode)。引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。

Cortex-M3 的另一个侧面则是特权的分级——特权级和用户级。这可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。处理器支持两种特权级,这也是一个基本的安全模型。


在 CM3 运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。复位后,处理器默认进入线程模式,特权极访问。在特权级下,程序可以访问所有范围的存储器(如果有 MPU,还要 在MPU规定的禁地之外),并且可以执行所有指令。
在特权级下的程序可以为所欲为,但也可能会把自己给玩进去——切换到用户级。一旦进入用户级,再想回来就得走“法律程序”了——用户级的程序不能简简单单地试图改写 CONTROL寄存器就回到特权级,它必须先“申诉”:执行一条系统调用指令(SVC)。这会触发SVC异常,然后由异常服务例程(通常是操作系统的一部分)接管,如果批准了进入,则异常服务例程修改 CONTROL寄存器,才能在用户级的线程模式下重新进入特权级。

事实上,从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态


通过引入特权级和用户级,就能够在硬件水平上限制某些不受信任的或者还没有调试好的程序,不让它们随便地配置涉及要害的寄存器,因而系统的可靠性得到了提高。进一步地,如果配了 MPU,它还可以作为特权机制的补充——保护关键的存储区域不被破坏,这些区域通常是操作系统的区域。 (4)内建的嵌套向量中断控制器 Cortex-M3 在内核水平上搭载了一颗中断控制器——嵌套向量中断控制器 NVIC(Nested Vectored Interrupt Controller)。它与内核有很深的“亲密接触”——与内核是紧耦合的。
NVIC提供如下的功能:
可嵌套中断支持
向量中断支持
动态优先级调整支持
中断延迟大大缩短
中断可屏蔽 可嵌套中断支持:可嵌套中断支持的作用范围很广,覆盖了所有的外部中断和绝大多数系统异常。外在表现是,这些异常都可以被赋予不同的优先级。当前优先级被存储在 xPSR 的专用字段中。当一个异常发生时,硬件会自动比较该异常的优先级是否比当前的异常优先级更高。如果发现来了更高优先级的异常,处理器就会中断当前的中断服务例程(或者是普通程序),而服务新来的异常——即立即抢占。 向量中断支持:当开始响应一个中断后,CM3会自动定位一张向量表,并且根据中断号从表中找出 ISR的入口地址,然后跳转过去执行。不需要像以前的 ARM那样,由软件来分辨到底是哪个中断发生了,也无需半导体厂商提供私有的中断控制器来完成这种工作。这么一来,中断延迟时间大为缩短。 (5)存储器映射Cortex-M3支持4G存储空间,具体分配如下图:


(6)总线接口Cortex-M3内部有若干个总线接口,以使 CM3能同时取址和访内(访问内存),它们是:
? 指令存储区总线(两条)
? 系统总线
? 私有外设总线
有两条代码存储区总线负责对代码存储区的访问,分别是 I-Code 总线和 D-Code 总线。前者用于取指,后者用于查表等操作,它们按最佳执行速度进行优化。
系统总线用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备,以及系统级存储区的部分空间。
私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。 (7)存储器保护单元(MPU) Cortex-M3有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到犯规(violated)时,MPU 就会产生一个 fault 异常,可以由fault异常的服务例程来分析该错误,并且在可能时改正它。
MPU 有很多玩法。最常见的就是由操作系统使用 MPU,以使特权级代码的数据,包括操作系统本身的数据不被其它用户程序弄坏。MPU在保护内存时是按区管理的。它可以把某些内存 region设置成只读,从而避免了那里的内容意外被更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更加健壮,更加可靠(很多行业标准,尤其是航空的,就规定了必须使用 MPU来行使保护职能——译
注) 。 (8)Cortex-M3的简评1、高性能许多指令都是单周期的——包括乘法相关指令。并且从整体性能上,Cortex-M3比得过绝大多数其它的架构。
指令总线和数据总线被分开,取值和访内可以并行不悖
Thumb-2的到来告别了状态切换的旧世代,再也不需要花时间来切换于 32位 ARM状态和16位Thumb状态之间了。这简化了软件开发和代码维护,使产品面市更快。
Thumb-2指令集为编程带来了更多的灵活性。许多数据操作现在能用更短的代码搞定,这意味着 Cortex-M3的代码密度更高,也就对存储器的需求更少。
取指都按 32位处理。同一周期最多可以取出两条指令,留下了更多的带宽给数据传输。
Cortex-M3的设计允许单片机高频运行(现代半导体制造技术能保证 100MHz以上的速度)即使在相同的速度下运行,CM3的每指令周期数(CPI)也更低,于是同样的 MHz下可以做更多的工作;另一方面,也使同一个应用在 CM3上需要更低的主频。 2、先进的中断处理功能内建的嵌套向量中断控制器支持240条外部中断输入。向量化的中断功能大大减少了中断延迟,因为不在需要软件去判断中断源。中断的嵌套也是在硬件水平上实现的,不需要软件代码来实现。 Cortex-M3在进入异常服务例程时,自动压栈了 R0-R3, R12, LR, PSR 和PC,并且在返回时自动弹出它们,这多清爽!既加速了中断的响应,也再不需要汇编语言代码了 NVIC支持对每一路中断设置不同的优先级,使得中断管理极富弹性。最粗线条的实现也至少要支持 8级优先级,而且还能动态地被修改。
优化中断响应还有两招,它们分别是“咬尾中断机制”和“晚到中断机制”。
有些需要较多周期才能执行完的指令,是可以被中断-继续的——就好比它们是一串指令一样。这些指令包括加载多个寄存器(LDM),存储多个寄存器(STM),多个寄存器参与的PUSH,以及多个寄存器参与的 POP。
除非系统被彻底地锁定,NMI(不可屏蔽中断)会在收到请求的第一时间予以响应。对很多安全-关键(safety-critical)的应用,NMI都是必不可少的(如化学反应即将失控时的紧急停机)。 通过上面我们可以很容易理解STM32的一些基本知识和结构,为学习STM32打好了基础。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20158

    浏览量

    247640
  • 寄存器
    +关注

    关注

    31

    文章

    5590

    浏览量

    129156
  • STM32
    +关注

    关注

    2305

    文章

    11124

    浏览量

    371333

原文标题:STM32经典概述(干货 )

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux驱动开发的必备知识

    内核基础知识: 1、熟悉 Linux 内核的架构、模块系统、进程管理、内存管理等。 了解内核的编译和加载过程。 2、C编程技能: 精通 C 语言编程,包括指针操作、内存管理、结构体等
    发表于 12-04 07:58

    网络接口:数字世界的“门铃”,你了解多少?

    ,还能为选择适合的网络解决方案奠定基础。在万物互联的时代,这些基础知识显得愈发重要。 希望这篇简单的介绍能帮助大家对网络接口有基本的了解。我始终相信,了解技术细节能让客户做出更明智的选择。如果你有更多
    发表于 11-26 18:53

    Arm Flexible Access方案引入Armv9边缘AI计算平台

    全球首个 Armv9 边缘 AI 计算平台(专为物联网及边缘 AI 工作负载优化)将纳入 Arm Flexible Access 方案,助力创新者以低成本、便捷的方式,在边缘侧获得先进的 AI 性能与安全保障
    的头像 发表于 10-29 15:27 796次阅读

    一文了解电压谐波

    我们经常会听到谐波,到底什么是谐波,怎么定义的?为什么要关注谐波?什么时候关注谐波?谐波如何计算或标准规定的谐波的算法是怎样的?GB关于电压谐波又是如何评估的?带着诸多的问题,我们一起来了解
    的头像 发表于 06-28 17:23 3904次阅读
    一文<b class='flag-5'>了解</b>电压谐波

    有奖问答 | Aigtek安泰电子“功“力无限知识竟赛!一起答题抽好礼!

    亲爱的电子工程师们~欢迎参加Aigtek“功“力无限知识竞赛!参与互动答题就有机会赢得精美奖品!作为专用于放大信号+驱动测试领域的测试仪器,你是否了解关于它基本知识
    的头像 发表于 06-26 18:46 506次阅读
    有奖问答 | Aigtek安泰电子“功“力无限<b class='flag-5'>知识</b>竟赛!一起答题抽好礼!

    关于SFP连接器你必须了解的那些知识

    关于SFP连接器你必须了解的那些知识 一、SFP光笼子的作用及材料组成 1.光笼子的概念与作用 ① 光笼子是什么? SFP Cage(Small Form-factor Pluggable Cage
    的头像 发表于 06-17 09:42 811次阅读
    <b class='flag-5'>关于</b>SFP连接器你必须<b class='flag-5'>了解</b>的那些<b class='flag-5'>知识</b>

    IP防护等级小知识

    ”。今天小编就来带大家了解一些关于IP等级的小知识。  IP等级的定义 外壳防护等级(IP代码)是针对电气设备外壳防止异物侵入、防尘、防水的特性加以分级,来源是国际电工委员会的标准IEC 60529。我国对应的国家标准为 GB/
    的头像 发表于 05-23 14:14 2053次阅读

    如何查看、修改STM32MP157D当前的CPU频率?

    name: ARMv7 Processor rev 5 (v7l)BogoMIPS: 48.00Features: half thumb fastmult vfp edsp thumbee neon
    发表于 03-14 07:33

    Arm推出全球首个Armv9边缘AI计算平台

    全球首个 Armv9 边缘 AI 计算平台以 Cortex-A320 CPU 和 Ethos-U85 NPU 为核心,专为物联网应用优化,支持运行超 10 亿参数的端侧 AI 模型,已获得包括亚马逊云科技 (AWS)、西门子和瑞萨电子等在内的多家行业领先企业的支持。
    的头像 发表于 02-27 17:08 1249次阅读

    关于齿轮流量计你该了解知识

    流量计
    华泰天科
    发布于 :2025年02月25日 17:31:12

    铝电解电容器基本化学知识

    关于铝电解电容器的基本化学知识介绍
    发表于 01-02 14:55 5次下载

    仪器知识问答小课堂

    关于仪器设备实验中的各种知识问题的问答
    的头像 发表于 12-27 16:21 775次阅读
    仪器<b class='flag-5'>知识</b>问答小课堂

    基于Armv9架构的MediaTek天玑8400移动芯片问世

    如今,基于 Armv9 CPU 技术构建的人工智能 (AI) 旗舰智能手机立于技术前沿,为 AI 创新提供了前所未有的机遇。为了应对持续增长的 AI 工作负载的计算强度及复杂度,Armv9.2 CPU 集群带来了更强性能、更高效率,以及更多功能,为新一代 AI 奠定了扎实
    的头像 发表于 12-24 14:18 1161次阅读

    关于NAND Flash的一些小知识

    前言 作为一名电子专业的学生,半导体存储显然是绕不过去的一个坎,今天聊一聊关于Nand Flash的一些小知识。 这里十分感谢深圳雷龙发展有限公司为博主提供的两片CS创世SD NAND的存储芯片
    的头像 发表于 12-17 17:33 1470次阅读

    xshell7,详细了解xshell7是什么

    Xshell7是一款功能强大的终端模拟器软件,由NetSarangComputer,Inc.开发。它主要用于远程连接和管理服务器,支持SSH1、SSH2、SFTP、TELNET、RLOGIN
    的头像 发表于 12-16 15:47 2160次阅读
    xshell<b class='flag-5'>7</b>,详细<b class='flag-5'>了解</b>xshell<b class='flag-5'>7</b>是什么