历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2021年10月25日 | ARM架构—— Cortex-M3与Cortex-M4特点概述

发布者:画意人生 来源: eefocus关键字:ARM架构  Cortex-M3  Cortex-M4 手机看文章 扫描二维码
随时随地手机看文章

一、处理器和微控制器差别

微控制器包含处理器,处理器只是其中一小部分,具体包含存储器、时钟生成、分配逻辑、系统总线以及外设(I/O接口单元、通信接口、定时器、ADC、DAC等等),如图1-1所示:

图 1一1微控制架构


即使处理器相同,但是不同芯片厂商根据不同的应用场景选择不同的特性模块就能设计出不同特性的微控制器。


二、Cortex-M3与Cortex-M4特点

Cortex-M3与Cortex-M4处理器均使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位。Cortex-M处理器使用的指令集架构(ISA)为Thumb ISA,基于Thumb-2技术并同时支持16位和32位指令。


异同点:


相同点:


基于ARM-v7-M架构。

三级流水线设计。

哈佛总线架构,统一的存储器空间:指令和地址总线使用相同的地址空间。

32位寻址,支持4GB 存储空间。

基于ARM AMBA(高级微控制器总线架构)技术的片上接口,支持高吞吐量的流水线总线操作。

NVIC(嵌套向量中断控制器),最多支持240个中断请求和8~256个中断优先级(理论上支持,实际需芯片厂商设计)

具有支持多种OS(操作系统)特性,例如:节拍定时器和影子栈指针等。

支持休眠模式和多种低功耗模式。

支持可选MPU(存储器保护单元),具有存储器保护特性:可编程存储器或访问权限控制等。

可通过位段特性支持两个特定存储器区域中的位数据访问。

可选择使用单个或多个处理器。

具有多种指令:

普通数据处理,包括硬件除法指令。

存储器访问指令(8位,16位,32位)

位域处理指令

乘累加(MAC)以及饱和指令

跳转,条件跳转以及函数调用指令

系统控制、支持OS指令

不同点:


Cortex-M4在DSP方面应用具有更高的性能。

Cortex-M4支持浮点运算(单精度)。

Cortex-M4支持单指令多数据(SIMD)操作。

Cortex-M4支持快速MAC和乘法指令。

Cortex-M4支持饱和运算指令。

优势:


低功耗:都低于200uA/MHz。

高性能:3 CoreMark/MHz

高能耗效率:功耗低,性能高所以具有高能耗效率。

良好的代码密度:Thumb ISA指令架构,在完成相同任务时,所需程序代码更少。

中断多数量,多优先级,实时性好:240个向量中断,8~256中断优先级,中断等待12个周期(中断嵌套由硬件自动处理)。

易于使用:具有简单、线性的存储器。

可扩展性强:低端处理器,到200MHz高端处理器。

调试特性丰富:标准调试特性(单步,暂停等),捕获程序流、数据变动以及概况信息等跟踪数据。还可以多Cortex-M处理器共享调试连接。

多种OS支持,超过30余种。

多种系统特性,例如:可位寻址存储器区域(位段特性)和MPU(存储器保护单元)。

软件可移植性、可重用性:C友好架构,CMSIS。


三、开发流程

图3-1开发流程

3.1软件编译流程


在常用的keil MDK-ARM中采用基于GNUD的gcc工具链编译程序,编译过程如图3-2所示:

图3-2编译流程


3.2软件运行模式

1.轮询


在大多数应用开发过程中,微控制器要接受多个接口的控制,需要支持处理多个任务,所以处理器等待接口数据准备好后进行处理,处理完毕后再进行下一个任务的处理。如图3-3所示:

图3-3轮询处理多个任务


轮询只适合简单的应用,当任务繁多复杂时,轮询设计维护将非常困难,且不能定义任务优先级,导致任务执行缓慢,能耗效率较差。


2.中断执行


中断执行有两种方式:


第一种外设任务放在中断服务程序中进行处理,当外设任务需要处理时,触发处理器中断,处理器执行相关任务,此方式可以设定不同中断优先级,可以进行中断嵌套快速响应高优先级中断任务。处理流程如图3-4所示:

图3-4中断服务程序处理


第二种将外设任务执行过程分为两部分,第一部分为需要快速处理的部分,第二部分不着急处理部分。当外设中断到来时在中断服务程序中处理需要快速处理的部分并设置相关标志位或状态,在轮询流程中根据标志位或状态进行相关处理。处理流程如图3-5所示:

图3-5中断轮询方式


3.多任务系统


在复杂的多任务嵌入式系统中,多任务同步等操作,以上几种方式均无法满足要求,所以此时需要嵌入实时操作系统(RTOS)将处理器时间分为多个时间片再将时间片按照优先级分配给进程,实现多个进程同时执行。RTOS中是以定时器记录时间片,根据定时器产生中断,触发任务调度器进行调度,从而进程间将会发生上下文切换。处理流程如图3-6所示:

图3-6 RTOS多任务处理


3.3 Cortex微控制器软件接口标准(CMSIS)

  CMSIS目标:


提高软件重用性。

提高软件兼容性。使用统一的软件架构。

易于学习。允许使用C语言访问内核特性。

独立于工具链。负荷CMSIS设备驱动可用多种编译工具编译。

开放性。源码开源。

目前有5种CMSIS:


CMSIS-Core(访问Cortex-M处理器特性的API,便于应用程序的开发)。

CMSIS-DSP(常见DSP运算如FFT和滤波器等)。

CMSIS-RTOS(用于Cortex-M微控制器上嵌入式OS的API)。

CMSIS-DAP(调试接口适配器的参考设计,支持USB到JTAG/串行协议的转换)。

CMSIS-SVD(CMSIS系统视图描述,基于XML语言格式,用于描述微控制产品的外设集)。

CMSIS标准:


处理器外设标准化定义。

访问处理器特性标准化函数。

操作特殊指令标准化函数。

系统异常处理标准化命名。

系统初始化标准函数。

描述时钟频率标准化变量。

CMSIS层次结构:


内核外设访问层

设备外设访问层

外设访问函数层

图3-7 CMSIS-Core结构


四、技术要点

4.1指令集

ARM Cortex-M 是32位RISC(精简指令集)处理器,具有:


32位寄存器

32位内部数据通路

32位总线接口

但是还是可以高效的运行8位和16位数据,都具有三级流水线(取指,译码和执行),它们都基于哈佛总线结构,取指令和数据访问可以同时执行。


Cortex-M 处理器基于一种加载-存储结构,数据需要从存储器中加载和处理后,使用多个单独的指令写回存储器。


ARM架构一般指两个方面:


架构。指令集架构(ISA),编程模型以及调试方法。

微架构。接口信号,指令执行时序以及流水线阶段等。

ARM7TDMI等经典ARM处理器两种操作状态:


32位的ARM状态,32位指令,内核能以很高的性能执行所有指令。

16位的Thumd状态,16位指令,可以得到很好的代码密度,不具有

ARM指令的所有功能。

图4-1 ARM7TDMI等经典ARM处理器

Thumd-2技术的Cortex-M 处理器无需在16位和32位指令间切换。

图4-2 Cortex-M 处理器与ARM7TDMI等经典ARM处理器指令集比较

图4-3 Cortex-M3/4处理器框图


4.2 存储器保护单元


MPU位监控总线传输的可编程设备,须通过软件配置。MPU开启时,应用程序可以将存储器空间分为多个部分,并为每个部分定义访问权限。当违反规则时,产生错误异常。例如保护OS内核,其他特权任务使用的数据,隔离不同用户存储器,防止意外擦除SRAM,覆盖指令代码。


4.3中断处理

嵌套向量中断控制器(NVIC)特性:


最多240个中断输入,不可屏蔽中断(NMI)输入和系统异常。

中断和系统异常具有可编程优先级。

嵌套中断/异常按照优先级先后处理。

向量中断/异常,处理器自动取出无需软件确认。

向量表可重定位在存储器多个区域(默认0x0)。

低中断等待。具有零等待状态存储系统,中断等待仅为12个周期。

中断和异常可用软件触发。

具有屏蔽中断和异常功能(NMI除外),也可将屏蔽为某个优先级之下。

多个优化用于降低不同异常上下文切换时的中断处理开销。

4.4 OS支持和系统特性


三个系统特性:


具有一个内置系统节拍定时器SysTick,为OS提供周期性定时中断。

具有两个栈指针:OS内核和中断用的主栈指针(MSP)和任务用的进程栈指针(PSP),分隔用户栈和内核栈,提高可靠性同时优化栈空间。

具有特权和非特权模式,处理启动后默认在特权模式,OS使用时可以将应用任务运行在非特权模式中,防止破坏OS任务和其他数据。

关键字:ARM架构  Cortex-M3  Cortex-M4 引用地址:ARM架构—— Cortex-M3与Cortex-M4特点概述

上一篇:ARM Cortex-M处理器详解
下一篇:ARMv7-A 处理器窥探(1) —— 处理器模式

推荐阅读

Qualcomm Incorporated子公司Qualcomm Technologies, Inc.宣布推出全新Qualcomm®骁龙™675移动平台。骁龙675旨在提供出色的游戏体验、先进的AI功能以及领先的拍摄性能。骁龙675支持的顶级特性包括Qualcomm®人工智能引擎AI Engine、Qualcomm Spectra™ ISP、Qualcomm® Kryo™ CPU和Qualcomm® Adreno™ GPU。 Qualcom...
初次接触ESP8266模块,说实话还是费了很大的劲,从硬件部分到软件部分,一个一个的问题对于我这个新手来说,确实有些吃力。不过还好,在51hei电子论坛有很多这方面的资料,也有很多很友好的人,感谢他们给予的帮助。虽然我是一个菜鸟,但我还是希望和大家分享一下。时间比较仓促,代码也有很多不成熟的地方,希望能对初次接触这个模块的人有一些帮助。1,...
OPPO 刚刚发布了自己新开发的高精度定位算法,它被称为 RTK(实时动态定位),它使智能手机导航在 1 米的距离半径内更加精确。这是一个高度准确的数字,可以在各种情况下提供更精确的读数。根据 GizArena 的报告,新的定位技术基于载波相位测量。简单来说,该算法通过实时测量网络站点之间的距离来映射用户的位置,以提供精确的读数。该系统并非完全...
Modbus通信协议的特点Modbus协议是应用于电子控制器上的一种通用语言。 通过此协议,控制器之间,控制器经由网络和其他设备之间可进行通信。不同厂商生产的控制设备可以连成工业网络,进行集中控制,这已成为了一种工业标准。该协议定义了控制器能够认识和使用的数据结构,描述了控制器请求访问其他设备的过程,回应其他设备的请求的方式,侦测错误记录的...

史海拾趣

问答坊 | AI 解惑

用M8制作电感、电容、电解电容测量仪表

来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3279392&bbs_page_no=2&bbs_id=9999 这个电路不同国家和地区很多人制作过,测量精度高,测量范围大,有用不同语言写的程序,我作了一个BASCOM-AVR版本的,并增加了对电解电容器测量。 ...…

查看全部问答∨

网友自制泄愤专用Reset按钮

电脑的reset按钮都是非常非常小的,不过Windows出生以后,人们对于reset按钮的应用就频繁起来。当然我们也可以应用Ctrl + Alt + Del,但对于Windows 98致命的Kernel 32毛病,我们还是不得不弯下腰寻找那渺小的reset按钮。国外一名玩友看来厌倦了这 ...…

查看全部问答∨

6合1车铣刨磨组合车床

看起来像玩具!不知道加工精度是多少,说是铝合金制造,结实么? [ 本帖最后由 DIAG 于 2010-7-10 16:07 编辑 ]…

查看全部问答∨

串口流驱动问题!急用!!

初学CE,平台是S3C2440 + wince5.0 在网上找了个周立功的按键中断流驱动程序,就按着这个程序开始写了个串口流驱动,程序在WaitForSingleObject()处停止了,无法进入线程处理。可能是什么原因呀? com0是CE调试串口,我写的驱动是对com1操作。 ...…

查看全部问答∨

Wince6.0 SDIO移植---- 缺少SD补丁???

在wince6.0的SDHC移植中,编译出错,出错信息如下: SC2440_SDHCBase.lib(sdhcmain.obj) : error LNK2019: unresolved external symbol "class CSDIOControllerBase * __cdecl CreateSDIOController(struct SDCARD_HC_CONTEXT *)" (?CreateS ...…

查看全部问答∨

如何把CE Device当作U盘?

WinCE5.0 我的CE Device已经有FAT32的分区了 请问如何把CE Device在连接PC后,当作U盘? 看到很多大侠已经实现了: “WinCE5有,支持那个U盘的。那个core os service下面那个usb host support加一个usb storeage class driver,然后加一个devic ...…

查看全部问答∨

请各位参加工作的朋友们给小弟指明一条路~~感谢!

请各位参加工作的朋友们给小弟指明一条路~~感谢! 偶现在大三下了,今年11月份就开始找工作了。。眼前想抓紧时间学点东西,好找个好工作·但不知道学什么好,望各位朋友给点建议~ 我想做嵌入式开发,软件,硬件,现在还没有定,准备都要好好学 ...…

查看全部问答∨

如何处理usb的STALL PID

三星44B0X+SL811HST,无操作系统,可以正确识别到1.1的U盘,但因为现在大多是2.0的U盘,发现有的2.0的U盘在做完 GetMaxLUN后,如果做Inquiry,也可以成功,但接下来做ReadFormatCapacity时,BulkIn会产生STALL,也就是读不到 FormatCapacity的内 ...…

查看全部问答∨

可以把U盘格式化为YAFFS文件系统格式吗?

如果可以,该怎么搞? mkfs.(type) type为ext2, ext3等,里面没有看到yaffs系统格式啊…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved