豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器
1.天生荣耀:ARM Cortex-M处理器由来
ARM公司自2004年推出ARMv7内核架构时,摒弃了以往"ARM+数字"这种处理器命名方法(ARM11之前的处理器统称经典处理器系列),重新启用Cortex来命名,并将Cortex系列细分为三大类:
- Cortex-A系列:面向性能密集型系统的应用处理器内核
- Cortex-R系列:面向实时应用的高性能内核
- Cortex-M系列:面向各类嵌入式应用的微控制器内核
Cortex-M系列主要是用来取代经典处理器ARM7系列(比如基于ARMv4架构的ARM7TDMI),Cortex-M比ARM7的架构高了3代,性能也有较大提升,所以新的设计推荐使用Cortex-M,关于从ARM7到Cortex-M的移植详见ARM官网指导 ARM7处理器系列,想要对ARM内核版本演变有更多了解,可以看看我的另一篇博客 ARM内核体系架构编年史(精简版)。
2.羽翼渐丰:ARM Cortex-M处理器家族
从2004年ARM公司推出第一款基于ARMv7M架构的Cortex-M3处理器开始,至今(2016)为止Cortex-M处理器家族已经发展到了Cortex-M7,下面是具体各处理器的发布时间及特点:
- Cortex-M3:2004年10月发布,面向标准嵌入式市场的高性能低成本的ARM处理器
- Cortex-M1:2007年03月发布,专门面向FPGA中设计实现的ARM处理器
- Cortex-M0:2009年02月发布,面积最小以及能耗极低的ARM处理器
- Cortex-M4:2010年02月发布,在M3基础上增加浮点、DSP功能以满足数字信号控制市场的ARM处理器
- Cortex-M0+:2012年03月发布,在M0基础上进一步降低功耗的ARM处理器
- Cortex-M7:2014年09月发布,在M4基础上进一步提升计算性能和DSP处理能力的ARM处理器,主要面向高端嵌入式市场
关于ARM Cortex-M具体特点 详见官网介绍 ARM Cortex-M内核系列介绍
备注:每个Cortex-Mx处理器并非只有一个版本,以Cortex-M3为例,至今已有4个版本:r0p0、 r1p0、 r1p1、 r2p0,版本间有微小差异,详见 ARM Cortex-M系列内核文档
3.初露锋芒:第一款Cortex-Mx微控制器产品
ARM公司提供了强大的Cortex-M处理器,接下来就到了各大半导体OEM厂商施展身手的时候了,谁都知道,抢占市场先机很重要,接下来让我们看看到底是谁分别抢先发布了ARM Cortex-Mx第一款微控制器:
- 2006年03月,流明诺瑞Luminary Micro(09年被TI收购)率先推出了第一款基于ARM Cortex-M3处理器的Stellaris LM3S系列MMCU,但当时反响寥寥,直到2007年6月ST同样推出基于该内核的STM32 F1系列MCU才使之大放光芒。
- 2009年03月,恩智浦半导体NXP率先推出了第一款基于ARM Cortex-M0处理器的LPC1100系列MCU。
- 2010年08月,飞思卡尔半导体Freescale(15年被NXP并购)率先推出了第一款基于ARM Cortex-M4处理器的Kinetis K系列MCU。
- 2012年11月,恩智浦半导体NXP继续率先推出了第一款基于ARM Cortex-M0+处理器的LPC800系列MCU。
- 2014年09月,意法半导体ST率先推出了第一款基于ARM Cortex-M7处理器的STM32 F7系列MCU。
4.逐鹿中原:Cortex-Mx微控制器产品市场份额
有的时候,抢占了先机,但不一定能笑到最后,打江山容易守江山难。Cortex-M微控制器市场发展至今,天下大势,分分合合,各半导体厂商为了争夺市场份额,各显神通:
- 意法半导体:主打通用市场份额、产品价格优势第一,旗下产品线STM32囊括Cortex-M家族全系列,对于竞争对手的合并动作不以为意。
- 恩智浦半导体:主打汽车半导体市场、产品线广度第一,并购飞思卡尔后,旗下Kinetis产品线(Cortex-M0+/4/7)以及LPC产品线(Cortex-M0/0+/3/4)整合出最广产品线。
- 赛普拉斯半导体:主打存储器领域市场、产品总数量第一,收购飞索半导体Spansion以及博通IoT部门后,造就最多产品数。
此外一些知名半导体厂商在Cortex-M产品市场份额争夺战中渐渐掉了队,比如收购Luminary的德州仪器TI,因为其DSP产品超强计算能力以及MSP430产品超低功耗优势,导致其对于Cortex-M产品推广未尽全力;还有8/16位 MCU时代霸主爱特梅尔Atmel(16年被Microchip收购),其8051及AVR产品的优势导致其在Cortex-M之战中失了先机。
Cortex-M处理器还在继续发展,32bit微控制器市场风云变幻,谁都不知道到底下一秒鹿死谁手。
参考资料:
[1]. 你知道哪家半导体拥有最多种基于Cortex-M 内核的MCU?
[3]. 【揭秘】9年时间,ST如何把STM32出货从0做到16亿的?
[4]. 恩智浦+飞思卡尔后你需要知道的十件事
[5]. Cypress与Spansion都联姻了,你还在等什么?
[6]. 非ARM架构MCU四面楚歌,抢来的Atmel适合Microchip吗?
豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器的更多相关文章
- 豹哥嵌入式讲堂:ARM知识概要杂辑(1)- 内核架构编年史
众所周知,ARM公司是一家微处理器行业的知名企业,ARM公司本身并不靠自有的设计来制造或出售CPU,而是将处理器架构授权给有兴趣的厂家.这些厂家基本涵盖了全球领先的知名半导体企业.软件和OEM厂商:T ...
- 豹哥嵌入式讲堂:ARM知识概要杂辑(4)- Cortex-M处理器性能指标
1.处理器的性能指标 用于评价CPU的性能指标非常多,不同的性能侧重点下的测试标准可能得出的指标值不同,下面介绍嵌入式行业广泛使用的两个经典的测试标准. 1.1 Dhrystone标准 Dhrysto ...
- 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的source文件种类. 众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编.所以本文要讲的source文件主要指的就 ...
- 豹哥嵌入式讲堂:ARM开发之文件详解(2)- linker文件
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的linker文件. 在前一节课source文件详解里,豹哥给大家系统地介绍了source文件,source文件是嵌入式工程里典 ...
- 豹哥嵌入式讲堂:ARM开发之文件详解(3)- project文件
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的project文件. 前面两节课里,豹哥分别给大家介绍了嵌入式开发中的两种典型input文件:source文件.linker文 ...
- 豹哥嵌入式讲堂:ARM开发之文件详解(4)- relocatable文件(object, library)
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的relocatable文件(object, library). 前三节课里,豹哥都是在给大家介绍嵌入式开发中的input文件. ...
- 豹哥嵌入式讲堂:ARM Cortex-M开发之文件详解(8)- 镜像文件(.bin/.hex/.s19)
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的image文件(.bin, .hex, .s19). 今天这节课是豹哥<ARM Cortex-M开发之文件详解>主 ...
- 嵌入式Linux基础知识
一.构建嵌入式开发环境 1.编译bootloader并烧写到板子中---uboot, 可以自己定制bootloader and logo 2.编译file system 并烧写--内嵌APP 3.编译 ...
- 痞子衡嵌入式:ARM Cortex-M内核MCU开发那些事 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是ARM Cortex-M内核微控制器相关知识. ARM公司从2004年开始推出Cortex-M系列内核,迄今Cortex-M家族已经包 ...
随机推荐
- windows第四层负载均衡--基于NLB负载均衡
上面有一篇文章说windows第七层负载均衡,这次讲讲第四层负载均衡 TCP/IP协议族,第七层是应用层,第四层是传输层.第四层负载均衡主要通过IP进行转化. 一些优秀的第四层负载均衡软件,速度可以接 ...
- CSS 设置table下tbody滚动条
table tbody { display:block; height:195px; overflow-y:scroll; } table thead, tbody tr { display:tabl ...
- 一个vue项目的简单分享
回首用vue已经2个多月了,今年7月底根据vue社区提供的api写了一个小移动端的小dom 通过这个项目也让我更深入的了解了vue(组件之间的通讯,计算属性,数据绑定.数据驱动....),用数据驱动型 ...
- C陷阱:求数组长度
// 这是一篇导入进来的旧博客,可能有时效性问题. 程序中,当我们建立了一个int型数组:int a[]={1,2,3,4,5,6};随后我们可能需要知道它的长度,此时可以用这种方法:length = ...
- 【Java学习笔记之二十七】Java8中传多个参数时的方法
java中传参数时,在类型后面跟"..."的使用: public static void main(String[] args){ testStringA ...
- centos7下安装mysql5.7.17
约定:本文基于Centos7,Mysql5.7.17,经过博主多次测试成功 1.下载mysql.tar.gz 官网下载MySQL安装包,Linux-Generic 64位(根据系统选择64or32) ...
- 有用的linux命令笔记
date cal [month] [year] bc 计算器 mkdir -p /home/bird/ 连续建立文件夹 mkdir -m 711 test2 创建文件夹是的权限 mv -i 询问是非覆 ...
- Anaconda更新和第三方包更新
更新Anaconda和它所包含的包 1.打开cmd,切换到Anaconda的Scripts目录下:./Anaconda3/Scripts 2.更新Anaconda conda update conda ...
- wamp apache无法启动的解决方法
作者 grunmin 2014.03.12 14:44* 字数 535 阅读 22167评论 9喜欢 5 如题,近日在安装wamp的时候出现了apache无法启动的情况.wamp图标一直显示橙色.网上 ...
- javascript alert乱码的解决方法
http://www.jb51.net/article/42805.htm 提示时中文乱码,拼音什么的都没有问题呀,下面我在论坛找到一解决办法,下面与大家分享. 解决办法一: 复制代码 代码如下: e ...