当前课程知识点:智能车制作:嵌入式系统 > 第二章 绪论 > 2.6 ARM历史与MKL25Z128 MCU > Video
各位同学大家好
我是清华大学工程物理系的曾鸣老师
欢迎大家回到我们ARM微控制器
与嵌入式系统的MOOC课堂
我们课程进入了第二章的最后一个小节
在这个小节里我们将进入32位嵌入式的世界
最后定焦到我们这门课
所要学习的ARM的体系结构
所以在这个单元里我给大家讲一讲
我们为什么学ARM
以及它的历史和渊源
进入32位的嵌入式世界
其实你会发现仍然非常的精彩
就像上一个单元所讲
我们其实有不止一个选择
世界上非常知名的32位的嵌入式平台有很多种
比如我们所学习的Freescale
或者NXP这样厂商所能生产的32位的CPU
就分为了三种不同的体系架构
是可以供我们选择的
比如说我们进入它的主页
就会直接看到Power PC、Cold Fire
和ARM这三种产品线可以选择
这三种产品线每一种底下都有几十上百种
子系列和子型号来进行嵌入式的选择
而作为这三种产品线的核心区别
就是它的CPU有各种各样的差异
PowerPC是为了设计苹果电脑由IBM
和摩托罗拉还有Apple所联合设计的一款CPU
那么在嵌入的行业它代表着高性能
特别高网络性能和吞吐量
那么在今天用在了网络设备
和高性能汽车的主控设备当中
使用了非常多基于PowerPC的微控制器
而Clod fire也就是我们刚才所提到的
非常非常有名的68k内核的后代
到今天仍然跟68k保持了非常高的兼容
所以在国外的军工、科学仪器
和工业仪表中其实有大量的用户
那么ARM呢作为一个非常经典的32位核
我们今天其实听到的非常非常多
有一个不完全统计 全世界
现在每年卖出的32位的嵌入式CPU上亿片
其中95%以上都是ARM
那么我们为什么选它
ARM究竟是什么呢
如果提到ARM就不得不提它的历史渊源
这来自于一家英国公司叫Acorn Computer Group
这家公司很多同学可能觉得不熟悉
但是他有一个别的名字叫做英国的苹果电脑
这是他的产品
大家看上去确实跟Apple2非常非常的像
那么这个公司有名不仅仅是因为这个
而且更重要的是他参与了上个世纪80年代
由英国剑桥为首
和美国MIT为首的一系列的研究工作
在那个时候提出了RISC核的概念
也就所谓精简指令集处理器
用更少的指令换得更高的性能和更低的功耗
那么他们发展出了世界上
第一个商用的RISC芯片也就是ARM1
芯片的发明人是Roger Wilson
和Steve Furber也就说这两位
那么这个芯片发明以后在很长的时间
其实并没有像大家想象中立刻就发扬光大
或者取得巨大的商业和社会影响
那么直到1990年
Acorn Computer Group逐渐的因为经营不善
而举步维艰的时候
把其中的芯片设计这一部分
抽离出来成立一个独立的公司
这个公司的全名就是
Advanced RISC Machines
也就是先进RISC机器或者是计算机系统
那么ARM的缩写组成了ARM公司
也就是我们今天所说的ARM
那么ARM究竟什么时候引起了大家的注意
达到今天这么成功的角度呢
应该说最早在1991年的时候
ARM推出了一个跨时代的产品
也就非常著名的ARM6
那么ARM6在那个时间点
仍然没有取得非常巨大的成功
但是它产生了一个日后被很多人所知晓的产品
对也就是苹果的Newton
我们称为牛顿PDA
这款产品知名是因为乔布斯同志对它深恶痛绝
乔布斯重返苹果以后
砍掉的第一批产品当中就有它
认为它过时、笨重
不符合工业设计的美观
所以如果大家去搜它
你很有可能搜到的网页上
是人类历史上最失败的五个电子产品之一
但实际上它并没有日后宣传的那么不堪
因为它首先了基于了一个ARM6的核
采用了嵌入式系个人随身电脑的概念
产生了人类随身PDA这种数字助理的这种概念
甚至产生了手写笔、触摸屏
大家注意是在1991年前后
那么这款产品其实我个人的观点认为
它是过于的超前了时代
导致他没有达到市场广大的认可
而ARM的爆发性增长
则是进入了1996年乃至1997年之后
伴随着ARM7的发布
以及业界大佬微软开始重视这个嵌入式的市场
推出了Windows CE操作系统
windowsCE操作系统具有彩色的屏幕
图形的界面以及跟计算机上Windows
在代码级的兼容的开发环境
使大量的程序雨后春笋般的
出现在了手持设备里头
那么这样的相辅相成带来了消费电子
也就是高性能的ARM芯片的爆发性增长
那么这张图里头
很好的表现了这张ARM沉寂多年
出现指数上升的这样一种趋势
那么之后的故事我们能耳熟能详
如果用这几张图上的产品
每一个大家都非常的熟悉
都是里程碑式的产品
从苹果的牛顿
到第一个掌上电脑PDA康柏的3630
一直到著名的多普达的这个818乃至iPhone
乃至后来Android产生以后的HTC
比如说经典产品Desire
那么我们必须说的是这样每一款产品的背后
它所使用的CPU都是ARM
所以大家就知道ARM究竟是如何爆发性的增长
占有独特的地位
那么包括我前面在给大家讲
我所设计过的系统当中也举过这个例子
这个设备跑这个Win CE系统
它背后是三星公司
刚刚开始设计ARM芯片的时候的第一批产品
三星的2440这样一款ARM7的芯片
最终也可以用来做工业设备
那么ARM究竟是什么呢
那么我们为了描述的ARM的生态
会给大家一个非常直观的
非常有名的这张图
这张图的最中间是ARM公司的logo
然后海量的世界一流公司分布在这张图
所有白色区域中间里头的这些logo的公司
都是使用ARM知识产权授权设计芯片的企业
他包括我们耳熟能详的很多很多企业
包括Freescale、德州仪器
意法半导体、NXP等等
那么所有在蓝色外框里的公司
都是基于ARM的生态圈
为ARM的产品提供了生态产品
比如说软件开发工具、调试工具、IPcore等等
各种各样的在ARM生态圈里的企业
所以说大家可以发现这是一个巨大的同盟
那这个同盟为什么能存在呢
就是因为我们学习ARM就应该知道
ARM公司在历史的某个节点
经过了慎重的考虑去做了一个
跟因特尔完全不同战略选择
他决定不再自己直接生产和制作芯片
而是只做CPU的设计
推动CPU构架的一代又一代的不断发展
推动嵌入式芯片的技术不断革新
他采用出售所谓的IPcore
也就是知识产权的方式
来由别的厂商设计和生产自己的最终芯片产品
换言之刚才提到的Freescale、NXP
包括德州仪器、意法半导体这些公司
他们各自销售自己的芯片
都从ARM购买了中间那一块CPU的设计IP core
那么不管谁家生产的芯片
即使这一家公司的产品也都是ARM
所以我们这门课程会学习NXP
或者Freescale
我们在后面继续会讲
他们会有非常好的互通性
而从历史发展趋势来讲
ARM的内核其实分为了ARMv4、ARMv4T
ARMv5、v6、v7这样不断的发展
而在这个过程当中
我们在过去嵌入式行业有所接待的同学
可能会知道
我们经常口头语或者在网上查资料
会看到的ARM7、ARM9、ARM11
其实他们之间是因为历史沿革的关系
有一个复杂的对应
这样一种对应确实很多时候
让很多初学者非常的困惑
那么在这里不展开讲
只是直接给大家一张像小学数学题一样的映射图
如果你听说ARM7他一般是v4T的核
T代表它有三版指令集
如果你用的是ARM9它有可能是ARMv4T的核
有可能是v5的核
那么如果是ARM9或者ARM10呢
也有可能是不同的内核
ARM11很多时候是v6的核
这样一种混乱的局面
到了ARM进入v7核的时候
ARM公司决定痛定思痛
进行一次彻底的规整
所以他们对ARM进行了重新的命名
也就说我们在这门课的范畴里所学的构架
我们称为ARM Cortex的构架
那么到了ARM Cortex构架
也就v7核的时候
彻底将我们传统意义上的ARM
分成了根据应用决定的三个档次
不再是原来统一的一个ARM7或者一个ARM9
来笼统的称呼
他们分为A系列、R系列和M系列
那么A系列称为application
这个词可能我们用中文不太好理解
那么我们更详细解释它针对的是高性能
多媒体的移动应用
比如说我们所使用的iPhone Android的手机
它里头都有一颗ARM Cortex A的内核
然后R系列更多的是real-time的缩写
强调的是针对更多的要求安全级的实时性
控制的嵌入式应用
比如说无人机、飞机等等
这样一些专业应用的领域
而M系列就是我们这门课
刚才讲了很半天所学习的
microcontroller的缩写
针对的是原来8位、16位的单片机微控制器
所应对的市场
所以这当中暴露了ARM的雄心壮志
当消费电子取得了压倒性成功之后
ARM将逐渐把自己定位成嵌入式行业的因特尔
要从高端的移动多媒体一直到低端的微控制器
产生不同的产品线加以对应
那么这种划分的结果下
是一种高度的向下兼容
为什么我们学习ARM 大家会发现
一方面它具有压倒性的行业标准
或者嵌入式业界一统天下的趋势
另外一方面如果我们用这张指令集的图来看
会感觉更清楚
中间绿色的小块里
所有的深绿和浅绿的指令
是ARMM0和ARMM1的内核
它所拥有的指令集
而外面蓝色的这些区域的指令构成的这个集
包括以M0的内核的指令为子集
构成的是ARM M3
cortex M3的内核的所有指令
再加上外围这些紫色的指令集
构成了ARM cortex M4的指令集
如果M4的高端版本带有浮点运算
再加上下面这些浅粉色的浮点运算指令
所以你会发现CPU构架从M0到M4F
它是以一个向下包容的
或者叫兼容的子集关系
换言之大家学习ARM的时候
不再像原来觉得
刚才上一个单元我所讲系列那么多
CPU那么多型号那么多我怎么学
虽然我说学一可以通百的
但是在ARM的学习里头
你可以真正的做到了知识的复用
通过学习一个最简单
最能入门的内核
掌握ARM的基本开发工具 结构和方法
从而掌握我们今天在嵌入式行业
占有压倒性优势的ARM CPU的体系结构
那么最最小的M0仅仅只有50多条指令
作为一个初学者
如果你有兴趣
你可以精细的知道每一条指令的功能
甚至记住它 而它的低功耗
它的高性能是我们今天所使用
就如我手上这个腕表这样的
嵌入式穿戴设备的标准选用
那么如果横比这些芯片之间的性能
你会发现跟传统的ARM7比
新一代的Cortex构架的M0v6的核
乃至M3、M4v7的核
它的性能毫无损失
它的功耗变得更低
它的指令响应的实时性
这些性能都有一些结构性的改变
那么随着学习的深入
很多同学可能会理解的越来越深
那么ARM是一个IP授权厂商
我们学习ARM的时候大家一定理清一个概念
就是你可以选择任何一个厂商的产品
来实际学习ARM
因为你买不到一家由ARM自己生产的芯片
都是由不同厂商生产的
那么基于全国大学生智能车竞赛
这么多年的传统
我们会选择用现在的NXP
也就是以前的Freescale的芯片
来学习ARM的嵌入式
待会我会讲一讲他的产品线
那Freescale这家公司
或者现在合并为NXP以后
它的历史渊源是什么呢
就跟我所讲的八卦计算机史可以挂上线
嵌入式行业除了因特尔的巨大作用以外
另外一家历史厂商就是摩托罗拉
摩托罗拉随着历史的发展
今天已经分成了若干个不同的公司
比如仍然销售这个移动网络设备的摩托罗拉公司
以及已经并入联想的摩托罗拉的手机公司
模拟器件独立成的安森美公司
以及变成了销售数字嵌入式芯片的Freescale
并且现在合并到了NXP的Freescale公司 NXP公司
那么我们学习的
所有的这个摩托罗拉的产品
既是ARM的IPcore的结晶
也是一脉相承摩托罗拉从197几年
这个八卦计算机史下来的设计的理念的结晶
那么站在任何一个公司的角度
你会发现它使用ARM会有不同的产品线
比如NXP你会发现它从M0、M3
这样面向微控制器领域的应用
一直到刚才我们提到的R
乃至A系列的高性能多媒体的ARM
都是具有的我们从最低端
最简单的结构学习入门
而逐步去探索ARM的世界
是一个非常好的切入点
那么放在ARM cortexM的产品线里头
在我们要所要学习的Freescale
或者NXP公司的实际做出来的芯片里头
给它起了一个非常好听的名字叫Kinetis
它带有活动活跃动能等等各种各样词根的意思
那么Cortex这样一个基于ARMcortexM系列
CPU设计的产品线
又分为了若干个功能的产品
比如我们现在学习的L系列
主要采用ARM cortexM0+的内核
做到了整个业界最低的功耗
和同等功耗下最高的性能
最适合初学者入门去掌握一个嵌入式CPU
而与之呼应的还有K系列
代表了中等的性能和相对完善的各种外扩功能
并且他们对应型号之间
还有引脚兼容
如果你希望性能更高
还有X系列
能跑到120M左右的时钟
实现嵌入式平台的高性能计算
而如果你要做工业的高可靠性的设计
还有E系列
他能够有5V耐受和汽车级的温度范围
所以在我们选择的时候
选择了ARM CortexM核加以学习
选择了Freescale
或者NXP这样一个厂商的芯片加以学习之后
我们其实还有若干个系列和型号可以加以学习
这些东西我在这里不再展开
而我们关注我们所学习的对象究竟是什么
是Kineties的L系列
它最大的优点是它是世界上第一款
商用的采用的ARM CortexM0+核的微控制器产品
那么M0是里头最低端的一代核
所以它的特点就是特别的简单
特别的低成本
然后每片的售价在批量的时候
能够少于50个美分
更重要的是他能够做到业界最低的功耗
静态功耗可以小于一个微安
而它的性能秉承了ARM的传统
在这么低功耗、低成本的芯片上
能达到以前的8位、16位单片机
微控制器远远达不到的48M的性能
所以这就是L系列
那么L系列分为的MKL2X、3X、4X、5X等等
不同的系列
那么大家会发现这些系列有什么区别呢
Freescale或者NXP这个厂商
会给我们一张这样的图表
任何一个半导体厂商都会给
他非常形象的告诉你每个子系列的之间的差异
比如说你只希望低功耗
这个波浪代表模拟的混合信号处理能力
比如测量温度
测量各种模拟量
那么你可以选择最低端的
那么KL2、KL3
如果随着往上当你需要USB的功能
你可以选择KL4、KL5等等这些系列
你需要段式液晶这些功能的排列组合
可以决定你要选择哪个子系列
而到了子系列跟我们刚才所讲的具体型号的时候
就是现在这张表
这张表你会发现在KL2开头系列的里头
如我们刚才所说有不同的外设
不同的存储器大小和不同的芯片封装
对于初学者来讲你会很晕
但是大家只要记住两件事
第一他就跟买电脑一样
我要选择一个足够大的存储
和足够多的外设符合我需求的型号就可以
第二呢作为这门课 我们记住
我们作为范本讲解和学习的是哪个型号就可以了
那么我们学习的型号
他的详细的完整的型号名称是MKL25Z128VLK4
那么这么长一个字符串大家很难记住
那么我们查一查芯片厂商所提供的数据手册
就会知道这个字符串每一个字母都有其含义
比如KL25就是我们刚才所说的
Cortex里头L这样一个低端系列里头
2系列的第五个型号
那么Z代表这个芯片
使用的是ARM Cortex M0 plus 0+
这样的CPU
128代表片内的存储器大小是128K
而V代表我们这个芯片所工作的温度范围
也就是它的器件级别
LK代表我们这个器件
选择的是同这样一个型号里头
80腿LQFP表贴封装的形式
然后4是代表这个芯片的最高工作频率
是48MHz
那么所有这些字符的含义在日后的学习当中
我们会理解的越来越深
但是这个型号代表着在茫茫的芯片大海当中
我们选择了这样一种内核
这样一种ARM
和这样一个厂商的生产型号来加以学习
而我们通过他的学习
来管中窥豹见识ARM的嵌入式世界
那么LQFP80的封装
只是这个芯片所能有的众多封装当中一种
如果我们以后看会发现LQFP
这样一种封装都是一个黑黑的小方块
周围有一些伸出来的银色的金属腿
80条就意味着每个边各有20条腿
那么这样几毫米乘几毫米的芯片
就是我们真正在市场上能够买得到的芯片
所以我们从理想的计算机一步一步
讲完这个概论就会理解我们真正要学习的对象
一个在市场上能够买到的芯片是什么样子的
他的型号他的系列
他的温度级别他的封装
这都是我们日后要学习讨论的东西
那么有同学到此为止
说老师我已经建立了一个完整的概念
我们什么时候才能进行真正深入的学习呢
从下一个章节开始
那么老师我知道了我们要学习这个型号
可是我自己怎么知道
日后我用哪个型号好呢
我不能永远用这个型号啊
那么比你还担心不知道你用哪个型号的人
就是这些芯片的生产厂商
所以你放心在任何一个厂商比如NXP
比如Freescale都会有
类似这样的芯片选择工具
有朝一日你要完成设计的时候
你只需把你的需求填入
你就可以在这些工具的帮助下
定义到最合适你的芯片
这是日后大家可以掌握的东西
那么最后要给大家说的内容
就是大家一定学习一个知识的时候
不管是跟着Mooc还是跟着教材
不要仅仅局限于这几分钟课堂的学习
嵌入式的学习、电子行业的学习
最大的乐趣在于它的趣味和无限可能
所以大家一定要学会在网上查找各种资料
尤其是芯片的官方厂商
你可以找到它的芯片手册
找到它的FAQ
找到它的机械封装
找到它的应用文档
这一切的一切
都会成为大家最最权威的学习资料
那么从我们这门课程的角度来讲
我会日后在我们的学堂在线上
给大家上传一系列的文档
这都来自于芯片设计厂商和ARM官方的文档
包括了这个芯片的整个系列的
一个总的指标和电器特性的简介的文档
包括这个芯片KL25子系列的
一些通用模块文档
包括这样一个具体型号的电气
和时间特性的技术文档
以及ARM公司对于M0 plus
这样一个CPU的一些若干编程模型
和指令集的文档
这些文档是用英文所撰写的
但它是真正的权威
很多时候有可能你听一个老师
或者一个人所讲解的东西并不那么详细
如果你具备了阅读原始文档的能力
你就在成为一个高级工程师的道路上
走出了第一步
相信大家能够越玩越愉快
那么我们第二章的知识
经过这么多个知识点的贯通
已经就告一个段落了
我们理解了嵌入式
或者计算机学习的一些基本的概念
逐渐将焦点从计算机focus(聚焦)到嵌入式
focus(聚焦)到我们所学习的这样一种微控制器
乃至ARM是什么
我们学习的ARM哪一家厂商
哪一个型号的这件事上
然后我们再日后通过基础的学习
再倒过来管中窥豹
真正见识ARM微控制器与嵌入式系统的世界
-1.1 课程概览
--Video
-1.2 进入嵌入式系统的世界
--Video
-1.3 如何学好嵌入式系统
--Video
-2.1 计算机的基本概念、发展历史
--Video
-2.2 从晶体管到CPU
--Video
-2.3 概念CPU、微控制器MCU和嵌入式系统
--Video
-2.4 八卦计算机史
--Video
-2.5 不同领域、不同系列的嵌入式系统
--Video
-2.6 ARM历史与MKL25Z128 MCU
--Video
-3.1 CPU的基本结构和运行机制
--Video
-3.2.1 堆栈的概念
--Video
-3.2.2 堆栈的概念-头脑体操
--Video
-3.3.1 ARM的体系结构
--Video
-3.3.2 ARM的体系结构-头脑体操
--Video
-3.4 中断的概念和机制
--Video
-3.5 中断子程的概念和编程
--Video
-3.6 复位、时钟、存储器和总线
--Video
-3.7 小结:MCU的总体结构和程序运行机制
--Video
-4.1 第一种外设:IO
--Video
-4.2 IO外设的编程实操-点亮LED
--Video
-4.3 IO外设的进阶知识
--Video
-4.4 嵌入式开发的基本概念与工具链
--Video
-4.5 嵌入式开发的进阶知识
--Video
-4.6 嵌入式开发中的C语言(上)
--Video
-4.7 嵌入式开发中的C语言(下)
--Video
-E0.1 实验零 开发板的初步认识与工具链的安装
--Video
-E0.2 实验零 体验一个例程的编译与下载
--Video
-E0.3 实验零 编写第一个程序:点亮核心板LED
--Video
-E1 实验一 点灯秘籍
--Video
-5 智能车视角的嵌入式设计
--Video