搜索
bottom↓
回复: 7

简单粗暴解读Cortex-M23/33(上)

[复制链接]

出0入296汤圆

发表于 2020-8-15 03:11:43 | 显示全部楼层 |阅读模式
本帖最后由 Gorgon_Meducer 于 2020-8-15 03:15 编辑

【说在前面的话】
自从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.    增强版的Cortex-M0/M0+


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


注:图片来自ARM官网

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+不简单。



2.    增强版的Cortex-M3/M4



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


注:图片来自ARM官网


3.     ARMv8-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是个好同志,士别三日当刮目相看


4.      安全扩展(Trust Zone for ARMv8-M)又如何简单的理解呢?
请听下回分解。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入8汤圆

发表于 2020-8-15 06:56:07 来自手机 | 显示全部楼层
本帖最后由 canspider 于 2020-8-15 06:57 编辑

理想很丰满,现实很骨感
在中美脱钩的大环境下,能用上这类安全芯片的行业,是不会让国外的芯片作为安全核心的
而没有这类需求的行业,又不会为安全相关的成本买单

出0入54汤圆

发表于 2020-8-15 08:28:27 | 显示全部楼层
MPU改进的这一点挺好的,原来的规定容易造成浪费。当然可能大部分人的使用场景用不上MPU。
我现在做汽车功能安全,要实现memory的FFI(Free From Interference)最常规的手段就是MPU,当然一般来说MPU需要OS支持,而且MPU需要跟MCU的模式(User, Privilege)配合使用的,这个跟Linux的用户/内核模式应该是类似的概念

出20入186汤圆

发表于 2020-8-15 08:44:01 来自手机 | 显示全部楼层
谢谢楼主的解释。。。。。。

出0入0汤圆

发表于 2020-9-23 16:36:56 | 显示全部楼层
谢谢分享!

出0入25汤圆

发表于 2020-9-23 17:17:18 | 显示全部楼层

感觉就是增加个TrustZone,,把之前的Cortex-M0和M4再卖一遍

ARM也是心里苦,,不像Cortex-A,,可以年年出新内核,,年年卖

Cortex-M这么长时间了也就M0/M3/M4/M7这四个内核,,该买的都买了,,而且这内核还贼耐用,,恨不能用上50年都不过时,,这今后还咋挣钱啊

只能时不时的把Cortex-A上的TrustZone、Neon精简精简下放到Cortex-M上忽悠一波

出0入4汤圆

发表于 2021-8-12 00:46:14 来自手机 | 显示全部楼层
STC32M4内核就是用M33,说将于年底送样

出100入312汤圆

发表于 2021-8-12 06:25:54 来自手机 | 显示全部楼层
不错,解说透彻
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 06:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表