痞子衡嵌入式:ARM Cortex-M内核那些事(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处理器开始,至今(2018)为止Cortex-M处理器家族已经发展到了Cortex-M33,下面是具体各处理器的发布时间及特点:
- Cortex-M3:2004年10月发布,基于ARMv7M架构,面向标准嵌入式市场的高性能低成本的ARM处理器
- Cortex-M1:2007年03月发布,基于ARMv6M架构,专门面向FPGA中设计实现的ARM处理器
- Cortex-M0:2009年02月发布,基于ARMv6M架构,面积最小以及能耗极低的ARM处理器
- Cortex-M4:2010年02月发布,基于ARMv7M架构,在M3基础上增加浮点、DSP功能以满足数字信号控制市场的ARM处理器
- Cortex-M0+:2012年03月发布,基于ARMv6M架构,在M0基础上进一步降低功耗的ARM处理器
- Cortex-M7:2014年09月发布,基于ARMv7M架构,在M4基础上进一步提升计算性能和DSP处理能力的ARM处理器,主要面向高端嵌入式市场
- Cortex-M23:2016年11月发布,基于ARMv8M baseline架构,在M0/M0+基础上加入TrustZone安全特性支持的ARM处理器,满足IoT物联网安全要求。
- Cortex-M33:2016年11月发布,基于ARMv8M mainline架构,在M3/M4基础上加入TrustZone安全特性支持的ARM处理器,满足IoT物联网安全要求。
关于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 Cortex-M内核那些事(2)- 第一款微控制器的更多相关文章
- 痞子衡嵌入式:ARM Cortex-M内核MCU开发那些事 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是ARM Cortex-M内核微控制器相关知识. ARM公司从2004年开始推出Cortex-M系列内核,迄今Cortex-M家族已经包 ...
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU开发那些事 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是恩智浦i.MX RTxxx系列微控制器相关知识. 恩智浦半导体于2018年10月发布的i.MX RTxxx系列开启了ML/AI MCU ...
- 痞子衡嵌入式:恩智浦半导体全系无线(BLE, Zigbee, Thread, 2.4G, Sub-1G)微控制器芯片一览
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦半导体全系列无线微控制器芯片. IoT物联网是未来的趋势,半导体厂商作为IoT产业的上游,主要提供核心的无线芯片,作为半导体知名厂 ...
- 痞子衡嵌入式:ARM Cortex-M内核那些事(6)- 系统堆栈机制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M堆栈机制. 今天给大家分享的这篇依旧是2016年之前痞子衡写的技术文档,花了点时间重新编排了一下格式.前面痞子衡 ...
- 痞子衡嵌入式:ARM Cortex-M内核那些事(9.1)- 存储保护(MPU - PMSAv6/7)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M存储保护模块(MPU). <ARM Cortex-M内核MCU开发那些事>的内核篇连载最早是 201 ...
- 痞子衡嵌入式:ARM Cortex-M调试那些事(1)- 4线协议标准(JTAG)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式调试里的接口标准JTAG. 在结束<ARM Cortex-M文件那些事>系列文章之后,痞子衡休整了一小段时间,但是讲课的 ...
- 痞子衡嵌入式:ARM Cortex-M文件那些事(1)- 源文件(.c/.h/.s)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的source文件. 众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编.所以本文要讲的source文件主要指的就是 ...
- 痞子衡嵌入式:ARM Cortex-M文件那些事(3)- 工程文件(.ewp)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的project文件. 前面两节课里,痞子衡分别给大家介绍了嵌入式开发中的两种典型input文件:源文件(.c/.h/.s). ...
- 痞子衡嵌入式:Ethos-U55,ARM首款面向Cortex-M的microNPU
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Ethos-U55. ARM 前几天刚发布了 Cortex-M 家族最新一款内核 - Cortex-M55 以及首款面向 Cor ...
随机推荐
- 无法在Application Designer中打开PeopleTools对象
PeopleSoft开发人员经常使用PeopleSoft Application Designer来查看/修改PeopleTools对象,例如字段,记录,页面,组件等.开发人员对Application ...
- ionic3+angular4开发混合app 之自定义组件
这里主要是记录ionic3+angular4开发混合app时自定义组件,我想自定义组件的方法和angular4应该类似,具体在纯angular4中自定义组件,暂时没有实践,个人觉得差别不大,之后实践了 ...
- protobuf是什么?
ProtoBuf (Google Protocol Buffer)是由google公司用于数据交换的序列结构化数据格式,具有跨平台.跨语言.可扩展特性,类型于常用的XML及JSON,但具有更小的传 ...
- MySql操作(一)
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- changXY
changXY <!DOCTYPE html> <html> <head> <link rel="shortcut icon" href= ...
- unittest各个组件之间的关系
各个组件的含义: TestCase:测试用例,测试用例里面会有很多测试方法,是单元测试中最小维度的测试行为. TestSuite:测试套件,是测试用例的集合. TestFixure:测试固件,测试准备 ...
- Redis的7个应用场景
一:缓存——热数据 热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相比于memcached还提供了 ...
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
在多节点的项目中,经常要涉及到某些方法加锁的控制.而这个时候,简单易用的synchronized已经不能满足多节点的部署结构. 之前在项目中,用的比较多的是数据库的更新锁:for udpate.但是这 ...
- [Swift]LeetCode982. 按位与为零的三元组 | Triples with Bitwise AND Equal To Zero
Given an array of integers A, find the number of triples of indices (i, j, k) such that: 0 <= i & ...
- linux入门--类UNIX系统详解
有人说,这个世界上只有两种操作系统: UNIX 和类 UNIX 操作系统: 其它操作系统. 类 UNIX 系统(英文 Unix-like)既包括各种传统的 UNIX 系统,比如 FreeBSD.Ope ...