当前位置: 首页 > news >正文

【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】


请阅读【嵌入式开发学习必备专栏 之 Cortex-Mx 专栏】


文章目录

    • 背景
    • Cortex-M33 与 M4 差异
      • Cortex-M33
      • Cortex-M4
      • 关系和差异
      • 举例说明

背景

在移植 RT-Thread 到 瑞萨RA4M2(Cortex-M33)上时,遇到了hardfault 问题,最后使用了Cortex-M4中的调度相关的函数后,OS 可以正常调度了。所以这里做下 M33与 M4的关系梳理。

ARM Cortex-M33 和 Cortex-M4 都是 ARM 公司设计的32位RISC微处理器核心,它们属于 ARM Cortex-M 系列,专为微控制器和嵌入式系统设计。这两种核心都很受欢迎,并被广泛应用于各种低功耗和实时处理场景。尽管它们有许多共同点,但也存在一些关键的差异。

Cortex-M33 与 M4 差异

Cortex-M33

Cortex-M33 是基于 ARMv8-M 架构的处理器核心,其中包含了一些用于增强安全性、性能和能效的新特性。它引入了 TrustZone 技术,这是为微控制器提供的一种安全功能,允许设备在不受信任的应用代码和可信固件之间创建隔离的执行区域。

Cortex-M33 提供了以下特性:

  • ARMv8-M 架构 - 可选的浮点单元(FPU),支持单精度浮点运算
  • 优化的协处理器接口,允许更紧密地集成定制硬件加速器
  • TrustZone 技术,提供硬件级别的安全性
  • 支持可选的 ARMv8-M Memory Protection Unit (MPU)
  • 可选的 Digital Signal Processing (DSP) 指令
  • 更高性能的分支预测和指令缓存

Cortex-M4

Cortex-M4 是基于 ARMv7E-M 架构的处理器核心,专为需要数字信号处理(DSP)功能的应用而设计。虽然它不具备 Cortex-M33 的一些安全性特性,但它在数字信号和控制任务方面非常出色,特别是在音频和实时处理应用中。

Cortex-M4 主要特点包括:

  • ARMv7E-M 架构
  • 可选的浮点单元(FPU),支持单精度浮点运算
  • DSP 指令集,用于高效执行常见的信号处理操作
  • 不支持 TrustZone 技术 - 支持 Memory Protection Unit (MPU)

关系和差异

关系上,Cortex-M33 继承了 Cortex-M4 的许多特性,并在此基础上增加了新的安全和性能特性。

Cortex-M23Cortex-M0+ 的继任者,主打超低功耗;
Cortex-M33是Cortex-M3和Cortex-M4的继任者,性能更强,具有DSP浮点运算功能。
在这里插入图片描述

直观比较:Cortex-M23 = Cortex-M0/M0 + 硬件除法器 + 性能提升 +专门的栈溢出硬件检测+指令集不可忽略的小动作
+安全扩展(TrustZone for Armv8-M) +MPU开发者模型的友好化改进。

直观比较:Cortex-M33 =Cortex-M3/M4 + 性能提升 +专门的栈溢出硬件检测+指令集不可忽略的小动作
+安全扩展(TrustZone for Armv8-M)+MPU开发者模型的友好化改进。

Cortex-M33 在安全性和性能上的提升使其成为适用于更广泛的应用场景,特别是那些需要硬件安全的场合。

举例说明

假设您正在开发一个智能家居系统,该系统需要安全地处理来自传感器的数据,并控制家中的各种设备。在这种情况下,Cortex-M33 的 TrustZone 技术可以提供一个安全的执行环境,以确保敏感的数据和控制逻辑受到保护,不受恶意软件的影响。而在另外一种场景中,如果您正在开发一个需要快速数字信号处理能力的音频处理器,Cortex-M4 可能是更好的选择,因为它的 DSP 指令和浮点性能能很好地满足这类需求。

关于Cortex-M系列更多内容见:【ARM Cortex-M 系列 1 – Cortex-M0, M3, M4, M7, M33, M35P 差异】

相关文章:

  • Python学习从0到1 day8 Python循环语句
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • k8s之ingress
  • Parallels Desktop 19 mac 虚拟机软件 兼容M1 M2
  • golang常用库之-golang-jwt/jwt包
  • go-carbon v2.3.6 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
  • 云风网(www.niech.cn)个人网站搭建(二)服务器域名配置
  • 用于垃圾回收的运行时配置选项
  • k8s---包管理器helm
  • 模型部署flask学习篇(一)---- flask初始及创建登录页面
  • c#企业微信上传的文件丢失格式,pdf不能预览,errcode:44001
  • Python中按照字典value中的某个类属性对字典重排序
  • 2023年第十四届蓝桥杯软件赛省赛总评
  • 基于SpringBoot的宽带业务管理系统
  • 云原生离线工作流编排利器 -- 分布式工作流 Argo 集群
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Java精华积累:初学者都应该搞懂的问题
  • JS 面试题总结
  • JSONP原理
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Yeoman_Bower_Grunt
  • 不上全站https的网站你们就等着被恶心死吧
  • 记录一下第一次使用npm
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 我与Jetbrains的这些年
  • MyCAT水平分库
  • ​io --- 处理流的核心工具​
  • #laravel 通过手动安装依赖PHPExcel#
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (16)Reactor的测试——响应式Spring的道法术器
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework .NET Core与 .NET 的区别
  • .net web项目 调用webService
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET开源项目介绍及资源推荐:数据持久层
  • []常用AT命令解释()
  • []指针
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [LeetCode] Contains Duplicate
  • [Mac软件]Boxy SVG 4.20.0 矢量图形编辑器
  • [PHP]严格类型
  • [Python] 递归返回值 为 None 的问题
  • [Python人工智能] 四十.命名实体识别 (1)基于BiLSTM-CRF的威胁情报实体识别万字详解
  • [redis] Jedis 与 ShardedJedis 设计