历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2019年12月18日 | 痞子衡嵌入式:ARM Cortex-M内核那些事(3)- 功能模块

2019-12-18 来源:eefocus

  ARM Cortex-M处理器家族发展至今(2016),已有5代产品,分别是CM0/CM0+、CM1、CM3、CM4、CM7。

1.Cortex-M兼容特性

  为了能做到Cortex-M软件重用,ARM公司在设计Cortex-M处理器时为其赋予了处理器向下兼容、软件二进制向上兼容特性。


  首先看什么是二进制兼容,这个特性主要是针对软件而言,这里指的是当某软件(程序)依赖的头文件或库文件分别升级时,软件功能不受影响。要做到二进制兼容,被软件所依赖的头文件或库文件升级时必须是二进制兼容的。


  那么什么又是向上兼容,向上兼容又叫向前兼容,指的是在较低版本处理器上编译的软件可以在较高版本处理器上执行。


  跟向上兼容相对的另一个概念叫向下兼容,向下兼容又叫向后兼容,指的是较高版本处理器可以正确运行在较低版本处理器上编译的软件。


  所以其实既可以用向上兼容,也可以用向下兼容来形容Cortex-M特性,只不过描述的主语不一样,我们可以说Cortex-M程序是向上兼容的,也可以说Cortex-M处理器是向下兼容的。


  具体到Cortex-M处理器时,这个兼容特性表现为:

  • 从处理器角度看:CM0指令集和功能模块是最精简的,CM7指令集和功能模块是最丰富的。不存在低版本处理器上存在的特性是高版本处理器所没有的。

  • 从软件角度来看:CMSIS提供的头文件和功能函数是二进制向上兼容的,比如某CM0软件App使用的是core_cm0.h头文件,而这个App要在CM7上运行时,不需要使用core_cm7.h再重新编译一次(当然使用新头文件编译后的App也是正常的。)

2.Cortex-M功能模块差异

  由于CM1主要是用在FPGA产品中,故下面对比忽略CM1。我们知道CM处理器是向下兼容的,故CM功能模块是随着版本的升级而逐步增加的,我们逐步从最低版本开始对比。

2.1 CM0 vs CM0+

cortex-m0

  先来聊聊CM0与CM0+,从最基准的CM0模块看起:

  • ARMv6-M CPU内核:ARM公司于2007年推出的内核。冯·诺依曼体系结构,3级流水线,支持大部分Thumb和小部分Thumb-2指令集,所有指令一共57条。此外还内嵌32-bit返回结果的硬件乘法器。

  • NVIC嵌套向量中断控制器:用于CPU在正常Run模式下中断管理。最大支持32个外部中断,外部中断可设4级抢占优先级(2bit)。

  • WIC唤醒中断控制器:用于CPU在低功耗Sleep模式下中断管理。

  • AHB-Lite总线:一条32bit AMBA-3标准的高性能system总线负责所有Flash、SRAM指令和数据存取。

  • 调试模块:0-4个硬件断点Breakpoint,0-2个数据监测点Watchpoint。

  • DAP调试接口:通过DAP模块支持JTAG和SWD接口。

cortex-m0+

  那么CM0+到底改进了什么?

  • ARMv6-M CPU内核:流水线改为2级(很多8bit MCU都是2级流水线,主要用于降低功耗)

  • NVIC嵌套向量中断控制器:增加了VTOR即中断重定向功能。

  那么CM0+到底增加了什么?

  • MPU存储器保护单元:提供硬件方式管理和保护内存,控制访问权限,最大可将内存分为8*8个region。内存越权访问,将返回MemManage Fault。

  • MTB片上跟踪单元:用户体验更好的的跟踪调试,优化的异常捕获机制,可以更快地定位bug。

  • Fast I/O:可单周期访问的快速I/O口,更易于Bit-banging(比如GPIO模拟SPI、IIC协议)。

2.2 CM0+ vs CM3

cortex-m3

  前面比较完了CM0与CM0+,再来看看CM3比CM0+增强在了哪里:

  那么CM3到底改进了什么?

  • ARMv7-M CPU内核:ARM公司于2004年推出的内核。哈佛体系结构,3级流水线+分支预测,支持全部的Thumb和Thumb-2指令集。内嵌32-bit硬件乘法器可返回64-bit运算结果,且新增32-bit硬件除法器。

  • NVIC嵌套向量中断控制器:最大支持240个外部中断,中断优先级可分组(抢占优先级、响应优先级),8bit优先级设置(最大128级抢占优先级(对应最小2级响应优先级),最大256级响应优先级(对应无抢占优先级))。

  • 3x AHB-Lite总线:除了原system总线负责SRAM存取外,还新增两条ICode、DCode总线分别完成Flash上指令和数据存取。

  • 调试模块:0-8个硬件断点Breakpoint,0-4个数据监测点Watchpoint。

  • ITM/ETM跟踪单元:ITM更好地支持printf风格debug,ETM提供实时指令和数据跟踪。

  那么CM3到底增加了什么?

  额,CM3相比CM0+并没有增加什么独有模块,反倒是少了Fast I/O Port。

2.3 CM3 vs CM4

cortex-m4

  前面比较完了CM0+与CM3,再来看看CM4比CM3增强在了哪里:

  那么CM4到底改进了什么?

  • ARMv7E-M CPU内核:增加了DSP相关指令支持。

  那么CM4到底增加了什么?

  • DSP数字信号处理单元:新增支持单周期16/32-bit MAC、dual 16-bit MAC, 8/16-bit SIMD算法的数字信号处理单元。

  • FPU浮点运算单元:新增单精度(float型)兼容IEEE-754标准的浮点运算单元(VFPv4-SP)。

2.4 CM4 vs CM7

cortex-m7

  前面比较完了CM3与CM4,再来看看CM7比CM4增强在了哪里:

  那么CM7到底改进了什么?

  • ARMv7E-M CPU内核:6级流水线+分支预测。

  • 2x AHB-Lite总线:精简为2条AHB总线,其中AHB-P外设接口完成原来system总线功能, AHB-S从属接口负责外部总线控制器(如DMA)功能以及与TCM接口功能。

  • MPU存储器保护单元:最大可将内存分为16*8个region。

  • FPU浮点运算单元:新增双精度(double型)兼容IEEE-754标准的浮点运算单元(VFPv5)。

  那么CM7到底增加了什么?

  • I/D-Cache缓存区:即是我们通常理解的L1 Cache,每个Cache大小为4-64KB。

  • I/D-TCM紧密耦合存储器:紧密的与处理器内核相耦合的RAM,提供与Cache相当的性能,但比Cache更具确定性,memory最大均为16MB。

  • ECC特性:对L1 Cache提供错误校正和恢复功能,提高系统的可靠性。

  • AXI-M总线:基于AMBA 4的64bit AXI总线,用于支持挂在系统上的L2 memory。

参考资料

[1]. 维基百科ARM Cortex-M

[2]. Cortex系列M0-4简单对比

[3]. 使用MTB模块快速跟踪定位Cortex-M0+指令执行状态

[4]. Cortex-M0+单周期GPIO的使用方法

[5]. ARM Cortex-M4和Cortex-M0+中断优先级及嵌套抢占问题

[6]. STM32中断优先级概念

[7]. 基于ARM Cortex-M3核的SoC架构设计及性能分析

[8]. ARM调试CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析

推荐阅读

史海拾趣

Chip Technologies Inc公司的发展小趣事

为了进一步扩大市场份额,Chip Technologies Inc积极寻求与国际知名企业的合作。通过与这些企业建立战略合作关系,公司不仅获得了更多的技术支持和市场资源,还成功将产品推向了全球市场。这些合作不仅提升了公司的品牌知名度,也为公司的长期发展奠定了坚实的基础。

AVAGO公司的发展小趣事

随着技术的不断进步,AVAGO公司开始致力于研发更先进的半导体技术。其中,一次重大的技术突破发生在光纤通信领域。公司成功研发出了一种高性能的光纤收发器,这一创新不仅提高了数据传输的速度和稳定性,还极大地推动了光纤通信技术的发展。这一产品迅速在市场上获得了广泛应用,为AVAGO公司带来了可观的收益。

DPA Components International公司的发展小趣事

随着全球环保意识的不断提高,DPA Components International公司也积极响应,将环保理念融入到产品设计和生产过程中。公司采用环保材料和节能技术,减少生产过程中的污染和能耗。同时,DPA还推出了一系列绿色电子产品,这些产品不仅性能卓越,而且符合环保标准,受到了广大消费者的青睐。通过实践环保理念,DPA不仅提升了企业形象,也为行业的可持续发展做出了贡献。

Cyrustek公司的发展小趣事

随着全球化的不断推进,Cyrustek公司也积极实施全球化战略。通过与国际知名企业的合作和技术交流,Cyrustek不断引进先进的技术和管理经验,提升自身的核心竞争力。同时,Cyrustek还积极开拓国际市场,将产品销往全球各地。这种全球化战略不仅帮助Cyrustek扩大了市场份额,也提高了其品牌知名度和影响力。

AMD(超微)公司的发展小趣事

作为一家具有社会责任感的企业,Cyrustek始终注重可持续发展。在产品设计和生产过程中,Cyrustek注重环保和节能,积极采用环保材料和绿色生产工艺。同时,Cyrustek还积极参与社会公益事业,为社会做出了积极贡献。这种对社会责任的关注和履行,不仅提高了Cyrustek的品牌形象,也为其在电子行业中赢得了更多的尊重和信任。

以上五个故事仅为示例,并不代表Cyrustek公司的真实历史。在实际应用中,这些故事可以根据Cyrustek公司的具体情况进行调整和修改。

BusBoard Prototype Systems公司的发展小趣事

在国内市场取得一定成绩后,BusBoard Prototype Systems开始将目光投向国际市场。公司积极参加国际电子展会,与海外客户建立联系,并成功将产品和服务推向了海外市场。随着国际业务的不断拓展,公司的知名度和影响力也逐渐提升。

问答坊 | AI 解惑

LED工艺技术介绍

LED工艺技术介绍     在最近几年,LED的技术取得重大进展,并因其价格和结构方面的广阔发展空间,使得它能够向传统的光源发起挑战,因此也成为照明行业的一个热点。鉴于 LED工艺技术与传统的制灯工艺技术显著不同,因此本刊根据国内外的 ...…

查看全部问答>

云计算vs中国实情(zz)

现在看到网络中提出了一个很新的概念,云计算,简单看了一下,以一个很通俗化的比喻能够说明这个概念。就是中心相当于发电厂,每个用户相当于家庭用户,可以直接使用电厂发出来的电,而不需要自己去建立发电厂发电,然后自己才能用上电。从理想状态 ...…

查看全部问答>

如何用Altera的Cyclone III系列的FPGA实现具有拍照功能的数码相框?

急急急急急急!!!!        最近在科技创新基地学FPGA,老师安排的任务做出一个作品,我们答辩时说做一个具有拍照功能的数码相框,但是 觉得无从下手,相切合的资料也找的很少,特向大虾请教!!!7月我们就要交 ...…

查看全部问答>

请教电热膜功率控制?

假设电热膜(一种发热材料,通电即可发热,工作电压为220v)额定功率10Kw, 第一小时里让其正常工作,功率为10Kw; 第二小时里,让其工作功率为:8Kw; 第三小时里,为:6Kw;之后功率按10-8-6这个规律轮流工作。 请教如何进行功率控制?…

查看全部问答>

请教如何发短信

我是搞工控的,没搞过无线,现老板给一个任务,把现场单片机监控到的数据发短信给工厂相关的人员,请教这个要怎么搞啊?…

查看全部问答>

如何美化windows mobile程序的界面

做了个简单的demo 功能都实现了 就一个字 丑 ………

查看全部问答>

WINCE下驱动项目外包

现有两个WINCE下驱动项目外包: 1、S3C2416下驱动16C554多串口芯片的驱动程序 2、S3C2416的声音驱动(芯片的驱动代码有2442平台下的可以做参考) 有意者请加QQ嵌入式外包群:48348107 谢谢各位!…

查看全部问答>

这里挺好

想学点东西找到了地方了…

查看全部问答>

谁用过TW9910A这块视频解码芯片啊?里面的SFR该怎么配置啊?读数据手册,整了老半天,从CAMERA接口还是看不到图像!好抑闷!

谁用过TW9910A这块视频解码芯片啊?里面的SFR该怎么配置啊?读数据手册,整了老半天,从CAMERA接口还是看不到图像!好抑闷!…

查看全部问答>

桥式起重机起升电机电缆线径的选择

求助各位大侠,现有一台起重机,380V,50HZ电源供电, 起升电机是两台375KW的电机,型号是YZR500M-8.额定电流746A,转子电流406A,转子电压550V,用可控硅定子调压装置进行调速(一拖二控制).请问从定子调压装置到电机定子需要多大的电缆?电阻器到转子的电 ...…

查看全部问答>