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

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

3天内不再提示

Cortex-M0/M0+/M3/M4处理器是什么鬼?

安芯教育科技 来源:裸机思维 2023-04-18 15:07 次阅读

一、说在前面的话

自从Arm在2016年的十月发布两款Armv8-M架构的新处理器Cortex-M23和Cortex-M33以来,已经过去了3年多,而市面上基于这两款处理器的微控制器产品也刚刚才崭露头角。 很多才刚刚通过开发板熟悉Cortex-M0/M0+/M3/M4处理器的童鞋可能心中又要飘过弹幕:

谁TM告诉我,这个M23和M33是什么鬼?

从个位数一下蹦到两位数了喂!

前面十几位兄弟怎么了?喂!

别说跟M3有啥关系,这以后下第n代是不是就该叫2333333了?

该来的总会来,那么如何简单粗暴的理解这两个全新的处理器呢?以下是傻孩子独家特别提供的的无责任囫囵吞枣公式:

Cortex-M23 =

Cortex-M0/M0 + 硬件除法器 + 性能提升 +

专门的栈溢出硬件检测+

指令集不可忽略的小动作 +

安全扩展(TrustZone for Armv8-M) +

MPU开发者模型的友好化改进

Cortex-M33 =

Cortex-M3/M4 + 性能提升 +

专门的栈溢出硬件检测+

指令集不可忽略的小动作 +

安全扩展(TrustZone for Armv8-M)+

MPU开发者模型的友好化改进

再简单点说就是无敌增强版的“M0/M0+,M3/M4”加“安全扩展”。有人说,Armv8-M的主要功能就是为Cortex-M家族引入TrustZone,这么看来也是不无道理的。

1.1增强版的Cortex-M0/M0+

根据官方的说法,Cortex-M23实现的是Armv8-M架构的Baseline子架构,我们不妨理解为手机里面的“入门级”产品。

Cortex-M23从定位上也非常直接,就是给Cortex-M0/M0+增加个安全扩展。因此,实际上所有为Cortex-M0/M0+编译生成的二进制代码基本上都可以“无修”的在Cortex-M23/M33上执行——除非你原本的代码使用了MPU。此外Cortex-M23居然配备了硬件除法器,这无疑在原本Cortex-M0和Cortex-M0+主打的8位/16位市场上把“基本配置”又提升了一个档次。 指令集上,Cortex-M23师承Armv6-M,除了支持“安全扩展”所必须的一系列指令之外,这款入门级产品还做了一个“不可忽略的小动作”——也就是说,除了Cortex-M33以外,Cortex-M23也可以通过很小的代价支持“暗代码(eXecute Only Memory, XOM)”。

什么是暗代码呢?和“暗物质”只能理论上知道它存在却很难探测到类似——“暗代码”是一类只能由处理器执行(取指令)却根本无法用任何形式读取机器码(OPCODE)内容的程序——也就是人们常说的XO(eXecute-Only)代码。“暗代码”并不是依靠内核来实现的,但却需要编译器和内核共同努力才能支持。这是因为XOM本质上是芯片厂家在地址空间上划分出的一段特殊区域——只能由处理器取指令、用于代码的运行(Instruction Fetch),而不能进行普通的数据访问(Data Access)。这就要求“暗代码”里不能直接保存任何常数——它们必须编码到指令里面——成为指令的一部分,以指令编码中的立即数形式存在。

Armv6-M的指令集大部分都是16位的Thumb指令,16位的指令可以用于编码的立即数的二进制位长度可想而知——少得可怜。Armv7-M由于引入了32位的Thumb2指令集,从而极大增强了指令携带立即数的能力。为了将这一能力引入Armv8-M的Baseline指令集,MOVT和MOVW这两个可以分别携带32位立即数“高、低16位”的指令就被特别加入到Cortex-M23所使用的指令集中。考虑到Armv8-M所强的调信息安全,“暗指令”对固件的保护有多大的分量,可想而知。

结论:Cortex-M23——这个M0+不简单。

1.2增强版的Cortex-M3/M4

相对Cortex-M3/M4来说,Cortex-M33在性能上有了提升并不是什么意料之外的事情,不提也罢。值得说明的是,从城里来的Cortex-M7在性能上仍然可以"甩其他Cortex-M土包子几条街"——6级流水线和3级流水线的差别可是"三缸夏利和六缸宝马之间的差距"所不能比拟的!(认真脸)。

1.3ARMv8-M是个知错就改的好少年

我不知道有多少人真正用过Armv7-M,也就是Cortex-M3/M4的MPU——简单说就是个以Region为单位来修改Memory属性的系统级外设。原本设计的时候想法很简单,一个Region,给个大小(Size)给个基地址(Base Address),再给个属性(Memory Attribute),一使能,就工作了,很简单,很Happy。然而,出于优(pi)化(gu)内(jue)核(ding)面(nao)积(dai)的原因,Region地址范围的设定被人为加入了一个限定:

基地址(Base Address)必须对齐(Aligned with)到它的尺寸(Size),而且尺寸必须是2的整数次方(还必须大于4次方)。

举个例子:一个Region大小为512K,那么基地址必须是512K的整数倍……如果你还不能理解这个问题蛋疼的点在哪里,设想一个任意大小的Region该怎么设定,比如,一个234K大小的Memory该咋办?——还能咋办,用多个Region组合出来呗。正是这个蛋疼的限制,导致几乎没有什么RTOS可以很好的使用MPU,也罕有身边的项目把MPU这么骨感的现实应用的如理想般美好。

那么Armv8-M做了什么呢?他更正了这一蛋疼的设定,即:Region的设置由“基地址+尺寸”进化为“起始地址+终止地址”,除了这两个地址都必须是32字节的整倍数的要求外,再也没有变态的关于“基地址必须是Region大小的整倍数”这样的限定。是不是突然觉得眼前一亮,是不是突然发现了一个宝藏?MPU顿时好玩起来。

结论:ARMv8-M的MPU是个好同志,士别三日当刮目相看




审核编辑:刘清

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

    关注

    48

    文章

    7565

    浏览量

    151592
  • 处理器
    +关注

    关注

    68

    文章

    19334

    浏览量

    230184
  • MPU
    MPU
    +关注

    关注

    0

    文章

    361

    浏览量

    48849
  • RTOS
    +关注

    关注

    22

    文章

    817

    浏览量

    119713
  • ARMv8
    +关注

    关注

    1

    文章

    35

    浏览量

    14165

原文标题:简单粗暴解读Cortex-M23/33(上)

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    cortex M0/M0+/M3/M4 所支持的最高时钟频率是多少?

    请教一个问题,Cortex M0/M0+/M3/M4所支持的最高时钟频率是多少?哪里可以得到权威的数据?(以65nm为标准,或其他工艺节点)
    发表于 01-27 15:08

    Cortex-M0~M4的优势是什么啊?

    简述Cortex-M0~M4的各个优势
    发表于 02-22 06:57

    Cortex-M0处理器的基础知识

    Cortex-M0处理器介绍
    发表于 02-26 06:03

    Cortex™-M3处理器

    2.1STM32F103xx增强型LQFP48引脚分布2.2 STM32F103xx概述2.2.1ARM®的Cortex™-M3核心并内嵌闪存和SRAMARM的Cortex™-M3
    发表于 08-11 07:03

    cortex m3/m4处理器的复位设计资料分享

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分。core部分包括处理器内核(core)以及N
    发表于 02-07 09:05

    制造一种基于Cortex-M0Cortex-M3处理器的SoC

    Cortex-M0Cortex-M3处理器无需支付授权费。Cortex-A5处理器需要支付非常低的授权费,最多可提供
    发表于 07-27 16:58

    ARM Cortex-M0设计启动评估用户指南

    Cortex-M0 DesignStart Eval为开发人员提供了一种简单的方法来模拟基于Cortex-M0处理器的SoC设计。 它允许系统设计人员在模拟上进行设计和测试,然后使用
    发表于 08-18 07:58

    LPCXpresso54114:Cortex-M4/M0+教程

    本教程面向恩智浦LPCXpresso54114评估板。 Keil支持并使用其他恩智浦处理器制作威廉希尔官方网站 板。 有关更多信息,请访问 www.keil.com/nxp。 除了Cortex-M0M0+之外
    发表于 09-05 07:56

    ARM为主流嵌入式SoC设计提供免费的Cortex-M0处理器IP

    ARM公司今天宣布,将为采用ARM Cortex-M0处理器进行商业化之前的SoC元件的设计、原型建模和制造的设计人员提供免费的Cortex-M0处理器IP,以及低成本的FPGA原型建
    发表于 10-15 13:57 2634次阅读

    ARM推出CortexM0处理器

    ARM推出CortexM0处理器,有需要的下来看看 。
    发表于 01-22 14:00 29次下载

    特大好消息:ARM Cortex-M0/M3免收授权费了

    【导读】51单片机内核历史使命即将完结,因为ARM已经宣布,自2017年6月20日起,Cortex-M0/M3处理器内核免收授权费用,版权费也很低,500万出货量只收20万美元,相当于每一个C
    发表于 06-23 18:46 3724次阅读

    如何定制基于Cortex-M0/M3免费内核的自主SoC | 直播报名(11.25)

    活动主题 如何定制基于Cortex-M0/M3免费内核的自主SoC M0/M3免授权费+第三方设计服务=自主SoC Arm DesignStart宣布
    的头像 发表于 11-21 15:14 1.4w次阅读

    Cortex内核的比较(M3M4

    **Cortex内核的比较(M3M4)** 一、开发板资源描述    
    发表于 12-01 13:06 20次下载
    <b class='flag-5'>Cortex</b>内核的比较(<b class='flag-5'>M3</b>和<b class='flag-5'>M4</b>)

    cortex m3/m4处理器的复位设计

    cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分。core部分包括处理器内核(core)以及N
    发表于 12-04 13:21 9次下载
    <b class='flag-5'>cortex</b> <b class='flag-5'>m3</b>/<b class='flag-5'>m4</b><b class='flag-5'>处理器</b>的复位设计

    Cortex-M0处理器的中断请求形式:电平触发和脉冲输入

    Cortex-M0处理器允许两种形式的中断请求:电平触发和脉冲输入。
    的头像 发表于 05-13 12:05 1770次阅读