打印
[应用方案]

玩转APM32之Cortex-MX内核对比与兼容性

[复制链接]
375|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
onemoren|  楼主 | 2025-6-11 16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 onemoren 于 2025-6-12 17:36 编辑

       平时经常用APM32的F0/F1/F4系统芯片做产品,自认为很熟悉这些单片机。最近看到有网友提出脑洞大开的一个问题:M3芯片的程序(bin文件)可以直接烧录到M4芯片上运行。开始时我觉得他可笑无知,但认真研究、对比、调查了一下,是真的可行的哦!无知的人是我。
      先说结论:Cortex-M处理器的指令集呈现出显著的向上兼容性。例如,Cortex-M3的指令集是Cortex-M0/M0+/M1的指令的超集,这种兼容性意味着较低型号的二进制程序可在较高型号的处理器上运行。这种兼容性也适用于Cortex-M4/M7等其他处理器,即使未配置浮点运算单元,通过软件编程仍能实现浮点运算。
      Cortex-M4 与 Cortex-M3 和 Cortex-M0 在指令集和功能上是兼容的,但存在一些差异和限制‌。
指令集兼容性:
1. ‌Cortex-M3可以运行Cortex-M0的代码‌,反之亦然,但需要注意寄存器使用的差异(例如,Cortex-M0不支持R8-R12寄存器)‌。
2. ‌Cortex-M4可以运行Cortex-M3的代码‌,但同样需要注意寄存器使用的限制。此外,Cortex-M4增加了DSP指令和可选的单精度浮点单元(FPU),这些指令需要在支持这些功能的硬件上运行‌。
功能差异:
1. ‌Cortex-M0‌:基于 ARMv6-M 架构,支持56条指令,主要是16位 Thumb 指令,适用于低功耗的 IoT 和简单控制应用‌。
2. ‌Cortex-M3‌:基于 ARMv7-M 架构,支持 Thumb-2 混合指令集(16位和32位),增加了硬件除法、乘加(MAC)和位操作指令,适用于中性能的工业控制和电机驱动应用‌。
3. ‌Cortex-M4‌:同样基于ARMv7-M架构,增加了DSP指令(如SIMD和饱和运算)和可选的单精度浮点单元(FPU),适用于音频处理、电机控制和传感器融合等需要高性能计算的应用‌。
4.Contex-M7: Cortex-M7的指令集与Cortex-M4相似,但增加了支持更高性能的指令集特性。Cortex-M7采用6级双发射流水线设计,增强浮点运算及数据预取,对于需要高性能的设备而言,性能较Cortex-M4有显著提升。
5.Contex-M23:Cortex-M23的指令集基于ARMv8-M的Baseline子规范,是对ARMv6-M的扩展。新增了硬件除法指令、跳转指令以及支持TrustZone安全扩展的指令。这些新增指令促进安全关键应用、除法和复杂流程控制,在参与多处理器的SoC设计中提供了有力支持。
6. Cortex-M33:由于Cortex-M33设计的灵活性,其指令集部分内容是可选的。Cortex-M33全面支持ARMv8-M Mainline的新指令,包括支持TrustZone安全扩展的指令以及与C11标准兼容的指令。设计灵活,支持ARMv8-M Mainline指令、TrustZone安全扩展,可以选择启用DSP和浮点运算指令。

使用特权

评论回复
沙发
霜之闪耀| | 2025-6-11 18:47 | 只看该作者
M3是M0的超集。M0的程序可以跑在M3,而M3的程序如果使用了高级指令的话,M0应该不兼容了吧?

使用特权

评论回复
板凳
zjsx8192| | 2025-6-12 08:13 | 只看该作者
那stm32的F0/ F1/F4能用一套代码么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

61

帖子

2

粉丝