打印
[APM32F0]

关于M0/M0+ M3内核的特点

[复制链接]
740|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Fanexs168|  楼主 | 2022-5-25 15:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
**背景
    在进行日常技术支持时,发现很多研发工程师在产品开发时,也并没有太留意MCU内核级别的一些资源和差异。
    在此对M0/M0+、M3内核比较常见、有意思的资源做个简单介绍。

Arm架构区别
    通用MCU,如APM32F103系列MCU属于M3内核,APM32F407属于M4内核,而APM32F030/051/072都属于M0+内核。但从Arm架构来做划分,M3/M4都是属于Armv7架构,M0/M0+属于Armv6架构
    架构相同的内核,往往资源上也有很多共同点,而在Armv6架构上的资源,在Armv7架构上往往也能找到。
    具体可以参考Arm官方的文档资料,**末尾附件已整理好。

CPUID寄存器
    可以通过CPUID寄存器(地址是0x410CC200),读取内核版本相关的的VARIANT(大的版本号)、ARCHITETURE(内核架构版本)、内核型号(M0还是M0+)、RIVISION(小版本号)信息。
    比如使用不同厂家的通用F103、F030等MCU,想要在软件上做MCU厂家型号的区别,就可以尝试下用CPUID。有可能不同厂家用的内核版本号是不一样的。
   
   

M0/M0+和M3内核的资源差异
    抢占优先级
        如下图所示,M0/M0+内核的AIRCR寄存器不支持配置中断优先级分组(缺少PRIGROUP配置位),即没法区分抢占优先级和子优先级。
这是Arm内核架构级别(Armv6和Armv7)所决定的。
   

   
   
    软复位差异
        M0/M0+内核的MCU,只支持整个系统级别的MCU软复位(SYSRESETREQ内核相关的寄存器复位+芯片内部外设寄存器 / 外围电路资源(如内部SRAM)的复位)。但M3/M4内核的MCU,可以额外支持VECTRESET复位,即只复位Arm内核的寄存器(如中断使能配置、优先级配置等)。
   

   
VTOR寄存器的支持
    以往市面M0级别的MCU,在进行IAP Bootloader升级时,需要经过比较繁琐的中断向量表“重映射”操作:
    方案一:先把APP的中断向量表保存到SRAM起始地址,再从SRAM区域做启动偏移(此操作还要把MCU的启动模式,从Flash启动修改成从SRAM启动)。
    方案二:在从Bootloader跳转到APP之前,提前把Bootloader部分的中断服务函数地址,手动偏移到APP部分(即根据APP基于Flash基地址的偏移量,同样做中断服务函数地址的偏移)。但要维护好这么一个偏离表,相对累赘。
    但在APM32F030系列MCU上,只要灵活使用M0+内核的VTOR寄存器,就可以实现中断向量偏移的操作。Bootloader的设计和操作,也可以参考M3级别的MCU做参考设计了。
   


使用特权

评论回复
沙发
Fanexs168|  楼主 | 2022-5-25 16:00 | 只看该作者
Arm官方文档在这

Arm文档.rar

7.04 MB

使用特权

评论回复
板凳
gyzhuzicheng| | 2022-5-27 14:02 | 只看该作者
学习了,学习了

使用特权

评论回复
地板
内政奇才| | 2022-6-9 10:58 | 只看该作者
mcu的内核也是它性能的一个重要的方面啊

使用特权

评论回复
5
zjh20070904| | 2022-6-12 11:50 | 只看该作者
F0系列中,ST的还是M0内核,AP的是M0+内核,AP的在IAP上更有优势

使用特权

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

本版积分规则

认证:极海半导体
简介:珠海极海半导体有限公司是一家致力于开发工业级/车规级微控制器、模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。

16

主题

101

帖子

2

粉丝