当前课程知识点:智能车制作:嵌入式系统 > 第一章 概览 > 1.2 进入嵌入式系统的世界 > Video
大家好
我是清华大学
工程物理系的曾鸣老师
欢迎大家来到我们
ARM微控制器与嵌入式系统的MOOC课堂
开设这么一门课呢
是我们在清华已经开设了
八年的一门嵌入式课程的延续
在这门课程里
我希望带着大家
进行一个ARM微控制器与嵌入式系统之旅
当然 我的另外一个身份呢
是全国大学生智能车竞赛秘书处的成员
所以以往每年到了差不多春季这个时候
我就会到各地
去给高校的老师和参赛同学
做一些嵌入式的培训
今年我们使用了
MOOC平台这样一种方式
来教入门的参赛选手
如何把一个ARM微控制器玩起来
然后能够去参与到智能车的比赛当中
所以无论你是一个爱好者
还是一个想参加
智能车比赛的同学
都可以跟着我们这门课程
希望能在一个学期的时间里愉快的玩耍
掌握这样一种嵌入式的知识技能
那么既然是一门
ARM的微控制器与嵌入式课程
所以我们就要知道
我们这门课
在这个学期要学些什么
能有什么用
当然我们要学习
ARM嵌入式系统的
基本概念
软件的编程
它的芯片
它的硬件怎么用
另外呢
我们要放在一个
嵌入式系统设计的框架
考虑如何做一个这样的
嵌入式系统的设计
如何把我们的功能
与芯片关联起来
以及它的一些接口如何扩展
那么抛开所有的这些知识不理
我刚才说过
我们有的同学可能是为了
参加大学生智能车竞赛
但是在清华开设这样一门课程
特别是开在大二这样的低年级
我抛弃了很多先修课的要求
尽量把它讲的浅显易懂易上手
也是希望让低年级的同学
能够比较早地
具备能力上手
把课外你感兴趣的
你觉得很酷
但一直不知道
该怎么下手的科技活动
能够玩起来
对 大家注意到我提的是玩起来
所以呢
我们希望通过
计算机的,电路的一些基础知识的积累
再加上我的讲解
能够让大家非常愉快的
进入嵌入式的领域
来进行愉快的玩耍
有同学说
老师你说玩耍
我怎么不知道
怎么才能玩起来呢
那我们先看看什么是嵌入式系统
虽然我们还有一个词是微控制器
但它放在计算机体系结构
我们有了一定的学习之后
再详细的去定义
那么嵌入式系统
是比较容易界定清楚的
我们如果看看IEEE
或者维基百科上的定义
或者是国内包括像
北航的何立明老师
这样一些前辈们
对嵌入式系统的定义
它基本上描述了这么一个概念
就是一个计算机系统
一个dedicated计算机专用系统
它在一个大型的机械
或者电子设备当中
发挥一个控制和计算的功能
同时呢
很多时候带有实时的特性
这样一种计算机系统
我们称为嵌入式系统
那么抛开这个字面上的解释
用我个人的语言
做一个更通俗的解释是什么呢
就是一个体现在
机械的电子的别的设备里
不以独立计算机面貌出现
发挥特定功能的计算机系统
我们称为嵌入到了
这样一种专用设备当中的计算机
就称为嵌入式系统
那么关于“嵌入式系统”
有的同学会说 哇 老师你很狡猾
你教嵌入式系统
你把它定义说的这么宽泛
可它事实上就是这么宽泛
我们会发现嵌入式系统的定义
即使你从维基百科上看
它会从大型的工业设备
一直到路边的一个交通灯
从我们日常的媒体播放器
一直到我们的手机
从医院的这个核磁治疗仪
PET CT 核磁共振
一直到混合动力车和汽车
即使在一个汽车里
我们一个奔驰车
可能有200多个微控制器
构成嵌入式系统
小到一个车门的电控系统
大到一个发动机
或者是变速的这种智能控制
以及我们仪表牌上的智能显示
无数的智能的嵌入式系统
支撑了我们现在方便好用的汽车
乃至我们方便舒适的生活
那么这样一种
广泛的嵌入式系统大家会发现
它的复杂程度和运算能力
有很大的差别
从维基百科的解释来看
或者从我们实际从事
嵌入式开发的概念来看
最最简单的嵌入式系统
就是我们本门课程
所要学习的微控制器
构成的嵌入式系统
麻雀虽小 五脏俱全
一个芯片构成的计算机系统
那么复杂嵌入式系统可能有DSP
可能有高性能的微处理器
比如我们现在所使用的安卓手机
它的内部实际上是一个MPU
Micro Processor Unit
通过外扩存储器
实际上不逊于
个人电脑的运算能力
所以它又好看 又好玩 对吧
那么从广义上来讲
这些不同复杂程度
不同性能的
都是嵌入式系统的范畴
那么学习嵌入式系统
它的范围这么广
前景这么好
大家觉得
老师你得给我描绘一个蓝图
但是这不是我要说的重点
我想要给大家讲的重点是
嵌入式系统非常的好玩
因为它的门槛很低
你从微控制器也就本门课程
我们所学习的内容开始
你会很容易在很低的知识年级
以及较低的本科生年级的程度下
就可以把嵌入式系统玩起来
一旦你掌握了嵌入式的知识
结合你所感兴趣的领域
不管你是
机械 仪器 机器人 智能车
或者像我的专业是物理
你就可以发现一些
以前要仰视的东西
你能够逐步上手
是这样吗
我给大家看一看
我自己学习嵌入式系统的一些经历
也同时让大家看看
学了嵌入式系统
能够做些什么
比如这样一块系统
那么这样一块系统
用现在大家的眼光来看
觉得Low Low的
对不对 大家不要给我面子
觉得它好像看上去不咋地
因为有很多直插的元件
有很多粗粗的
黑黑大大的芯片
有那种在我们现在买到的手机里面
看不到的直插的电阻
但是这是我人生当中
画的第一块或者第二块电路板
好吧 实际上是第二块
但是因为第一块比它更难看
我一般不给大家看
那么这样一套电路系统
它是基于一个普通的
8位的MCU微控制器来设计的
摩托罗拉的HC08系列的8位微控制器
它实现了一个非常简单的
我这个专业的
物理的核能谱测量多道系统
能够通过片内内置的
ADC采集物理信号的幅度
通过片内的串行通讯
或者我自己外扩的USB通讯
把它传送给计算机
那么这套系统
大约画于十五六年以前
也就说我自己还是一个
在校本科生的阶段
那么通过学习上手
能够把一个自己觉得好像很酷
或者在那个年代
要花很多钱才能买到的仪器
能够尝试自己做出来
这个系统花了两个月来画
花了两个月来进行加工和焊接
然后过年的时候外面放着鞭炮
我闷在家里写程序
直到今天回想起来
仍然是一个非常愉快的
非常有成就感的经历
那么这是大约十三四年以前
我自己年纪更长一点
设计的一个16位的嵌入式系统
它采用了S12这样一个16位的MCU
这样系统是为了参加一个
当时的科技比赛所设计的作品
那么有同学会说
这个东西是什么呢
聪明的同学会说
它有一个USB接口
它很像一个U盘
对它像一个U盘
它也就是个U盘
那么在我们那个年代
十四五年以前U盘才刚刚出现
所以你今天会觉得
老师你做个U盘好Low
那个年代我觉得U盘很酷
我想自己做一个
所以我就做了
然后那个年代
最大的U盘128兆
这个U盘就是128兆
那么光做个U盘
有的同学会说
即使15年前那也不够酷啊
对啊 所以你们注意
它上面有很多按键
有播放有暂停
有同学会说它是一个MP3
但是我要告诉大家
非常不幸在那个年代
MP3也已经出现了
所以如果我做一个MP3
我仍然认为不够酷
所以这一个作品
当时的构想是一个脑洞
用了一个叫做Text To Speech(文本转语音)的芯片
今天大家在很多手机上
可能有这个软件
那个年代是没有的
用这样一个芯片
与U盘的idea结合在一起
那么于是在这个U盘里
我可以将一些文本文件
就是txt格式的
字符文件拷贝进去
它的体积非常小
比如我拷一部《射雕英雄传》
我点一下播放
语音合成芯片
就可以将这个
文本文件读出来
通过后面插着的耳机
挂着耳机朗读给我听
那走在车上
走在路上
我就可以听
我自己拷进去的小说
这在一个没有智能手机的时代
是一个多么酷的作品啊
所以我自己花了一个月构思
花了两个月制作
最终把它完成
那么它的系统设计
现在大家看这张图会觉得很迷茫
那么我给大家看这张图的结果
只是给大家两个印象
第一一个简单的16位的MCU
加上它内部若干个
外设的使用和适当的外扩
就能实现这么一个设计
第二呢
就是我要提前做一个广告
当本门课程学习完的时候
最后一节课的系统集成
我会带着大家
再回过头来看这样一些
我曾经做过的嵌入式系统设计
那个时候你不再觉得好像很难
而是会觉得琢磨琢磨我也能做
为什么呢
因为它所有的模块
所有的内容
十八般武艺都会在
这门课程里我交给大家
然后如果我们
有志于脱离微控制器的范畴
去做更加复杂的系统
我这里举一个例子
比如像这样一个系统
它就是一个三星最早的S2440
一个ARM核的微处理器
Micro Processor Unit(MPU)
它比我们这门课程
要学习的微控制器要高阶一点
存储器需要外扩
能够跑比较复杂的
具有内层管理单元的
这样的操作系统
那么在这样一种
微处理器的复杂结构上面
今天比较火的是Android系统
那么大家
在开发和移植的原理上是相似的
在那个年代
最好的图形界面的系统
就是Windows CE
也就是屏幕上看到的
那么这样一个系统
从系统的设计
多层板的设计
一直到硬件 软件的调试
驱动的开发
操作系统的移植
应用程序的一些
最终它是用到了
一个科学仪器产品当中
能够进行我们环境当中的伽马 中子
这样的放射性的测量和报警
是一个手持设备
那么对于我自己
对它进一步的玩
作为一个电子爱好者
你肯定不会选择
做了一个复杂系统
就这么放着就完了
那我怎么玩呢
我会选择通过文献的调研
通过一些技术资料的查找
很多同学
会用谷歌会用百度来搜索
我去找一个GPS的模块
自己画一个外扩电路
把它背在我们这个系统的背后
于是我将这块板
进一步扩充功能
做成了一个小的GPS导航仪
所以有很长一段时间
我的车上使用了
这样一个GPS导航仪
就是让一个裸露电路板
看着Low Low的
但实际上内心感觉很酷的
自己做的系统
然后大家可以想象
作为一个电子爱好者
如果有朋友很惊讶的说
你这个导航仪
好像有点不一样
然后一般你可以深藏功与名
天高云淡跟他讲说
只是自己做的而已
所以
电子爱好者
或者嵌入式爱好者的一种
强大的好玩
和我刚才所说的乐趣
就在于通过逐渐的学习
你所喜欢的东西
你都能够具备自己做的能力
有很多同学说
老师你讲的都是你自己所做的这些作品
那还有没有别的例子呢
那是有的
我刚才讲过
我们这门课程是直接衔接服务于
全国大学生智能车竞赛的
有很多参赛的同学对智能车比赛很熟
那么没有接受过
智能车比赛的同学
我可以给大家看一看参赛同学们的作品
比如说这一眼放过去
好几十辆各不相同的车辆
全是同学们自己的作品
如果我们拉近了看
就会发现每一辆车都是不一样的
它的结构
它的电路设计
包括你肉眼看不到
它里头程序的编写
都是各具各的特点
每一辆车看上去很美
但是又流露出浓浓的山寨味
它的走线,它点的热熔胶
它整理不齐的电路引脚
那么这些车
都是我们爱好者同学
在半年一年的时间里
为了参加智能车比赛
自己完成的制作
那么一个车的制作
会涉及到很多知识
从机械到控制
从传感器到编程
那么其中一个很核心的关键
就是微控制器的开发
以及电路的设计调试
那么掌握嵌入式的知识
我们就会非常容易的上手
把一个低年级本科生的同学
看上去不可能完成的任务
给自己动手做出来
真正智能车比赛的场景
就是像这样曲曲折折的赛道
我们有很多同学开玩笑说
这个赛道再发展两年
都快要变成中国联动的标志了
但是我们智能车非常智能
在无人直守下
能够自动地识别这个赛道
四个轮子跑
甚至两个轮子直立着
去沿着赛道高速地较量
激烈的比赛最后的成绩差距
可能会在0.1秒
甚至更小的范围内
那么如果我们看一看
智能车比赛
会发现智能车比赛
从2006年 2007年 2008年
一直到现在2017年
过去的十二届比赛
今年是第十二届
过去的十一届比赛当中
它所使用的嵌入式系统
也在循序渐进地变化
从2006年最早开始的S08的8位的MCU
一直到2007年2008年16位的MCU
乃至到2009年0.18微米工艺
也就180纳米工艺的XS128的16位MCU
乃至到2011年之后
引入了32位的ARM的Cortex M4
Cortex M0和PowerPC这样32位MCU
这些嵌入式系统的不断引进
我们同学在不断学习掌握
更加强大的嵌入式处理器
比如我们本门课程所讲的就是
ARM Cortex这个架构里
最最适合
入门和低端的ARM Cortex M0的MCU
那么随着嵌入式平台的不断革新和引进
我们的运算能力越来越强
我们智能车越来越智能
越来越smart
能够使用一些
原来不敢用的
更复杂的算法
甚至有朝一日
我们可以期许
我们能够真正的
去跟真正的智能交通
真正的大型的智能车
发生关联
联系产业
所以呢 说到产业
有很多同学说
我们学嵌入式系统
真的学了只能玩玩吗
不是的
如果我们
深入的学习了嵌入式系统
我们可以尝试跳出玩一玩
跳出智能车的范畴
去尝试做一些更酷的
创新的 创业的
创造新的产品的尝试
比如上我们研究生课程的清华的同学
就有人说
我能不能做一个血氧浓度的腕表
那么经过我们课程的指导
和他自己的一些选型设计
最终他成功的拿到了融资
拿到了比赛的奖励
成功的做出了一个公司
那么这个产品是一个
小型的测量血氧浓度的智能腕表
那么这个产品的优劣我不评价
仅仅从idea
从概念来讲
我们本门课程所学习的
ARM Cortex M0这样一种微处理器
很适合用在
包括我自己都戴着
这样的智能穿戴设备上
因为它是所有的嵌入式系统当中
功耗最低的一个平台
那么同时
嵌入式的本质
针对你所要结合的那个问题
你可以去探讨它的物理原理和测量方法
比如血氧浓度
最后会提炼为对于皮肤上
反射的特定波长光的强度测量
那么这样一些知识的结合
最后使你具备真正把你的Idea
做出来的能力
就像这位同学一样
那么在更加高大上的产业界
嵌入式系统也是无处不在的
我举两个相对高大一点的例子
比如大家都知道是我们中国
现在名片之一的高速列车
大约在10年以前与我们清华合作的时候
我的师兄包括我的老师与他们合作
在高速列车里完成了
像这样的安全计算机的
主控系统的设计
那么这样的系统为了安全
需要在一个单个板卡上
有两个PowerPC构架的
高性能计算机进行冗余计算
什么叫冗余计算
用一句话说清楚
就是考一位同学一个数学题
352乘以467
你可能一口答不上来
那我问你们两个人
你们两个人都会算
算完你们俩告诉我结果
说实话我也不知道结果是多少
但如果你们俩告诉我的结果一样
那你们俩可能很大的概率算对了
如果你们俩结果不一样没有关系
肯定至少有一个人算错了
或者两个人都错了
所以在安全控制的领域
我们往往会使用
两个这样计算机高性能
同时同步去处理所有的信号
来校验计算是否正确
而这样的两个CPU的系统
又有两套来热备份 构成2×2取2
然后当一套出现了
运算上的差异
明显有错误的时候
有另外一套热线接管这个系统
那么这样一种东西
在10年以前我们国家
还不具备独立设计和生产的能力
但在今天我们的高铁列车
已能够成功的出口
这背后需要大量的学习
嵌入式知识的同学
投身到我们的产业当中
去设计真正世界一流的嵌入式系统
在我自己所在的领域
以物理为背景
我们有一个
世界排名第一的高技术产品
也是长期出口
那就是海关的集装箱安检设备
那么我们
需要通过高能的射线
穿透很厚的这些物质
精确的在纳秒的时间尺度
在几千几万个
电子的弱信号尺度上
去测量这些信号
然后用嵌入式的技术
加以电子信号的处理
最后成功的得到图像
乃至得到
全世界第一的这种技术的物质的识别
那么这样一些
技术的整合
会构建这样一种
高技术成果的产品出口
乃至占据世界最大的市场份额
而它背后对嵌入式技术的要求
既包括刚才那些
极端的信号处理的要求
也包括从数字领域
我们要有千兆
乃至万兆的数据传输的能力
和实时的数据处理能力
这都需要顶尖的嵌入式技术
然后 有的同学会说
老师我学习嵌入式
可能爱好不在产业
有没有更高大上的东西呢
也有的
我给大家举另外两个例子
比方说
很多爱好物理的同学都会很关注
在2008年的时候
人类最大的加速器
大型强子对撞机
在欧洲核子中心(CERN)开始运行
这是一个位于瑞士和法国交界线
也就是我这张地图当中
虚线所在的这个国境线
地下60米到100多米深的一个加速器坑道
这个加速器坑道非常的大
里头有低温超导驱动的加速器
在几十公里的范畴下
构成了一个环路
坑道里的尺寸
可以走一辆小车
那么在这样一个
大型的加速器里头
质子被加速到了
七个TeV对撞
这是人类所能达到最高能量
那么像这样尺度上的基础物理实验
需不需要嵌入式系统呢
也是需要的
我们首先看看这个实验的构架
左下角小小的这是一个人
在这样(CERN)的实验里一个最小的实验
是我们清华代表中国所参加的LHCb实验
就是在5米×5米×10米
这样的尺度上构成探测器
那么这些探测器
对于两个粒子对撞
产生的所有碎片
要在非常短的时间内
测量它的飞过的径迹、能量
所有这些物理信息
再带到物理模型里进行事件的筛选
寻找人类所没有发现的新物理
可以想象这样的物理实验
它对于信号的处理
每一个信号到微米的尺度
又有10米的大小
是非常的苛刻的
这样的物理实验
有14个国家
47个大学和研究所
600多位科学家合作了10年
方才启动和加以运行
那么以清华和瑞士联邦理工等大学
合作的嵌入式的
这样一个电子学系统
就在这样高能物理实验当中
得到广泛的应用
比如我图中这样一块电路板
它上面有五个FPGA实时地处理数据
有一个微型PC进行这个慢控制的处理
那么这样一个复杂的嵌入式平台
具备非常强大的运算能力
它每秒可以接收
1.5G乘以24通道多达36G的数据
如果有兴趣的同学可以想一想
我们现在非常热的各种电视剧
无论是之前的《甄嬛传》
还是现在的《三生三世》
一集电视剧如果你从网上看
可能就是百兆量级
在这里一秒钟就是几十G
而对于物理信号的处理
你需要对这样大量的物理事件
进行数据的处理和筛选
要在短短800纳秒里头
将大量的数据压缩到
只有4个G的流量送出去
那么有同学觉得一套这样的
嵌入系统已经非常的强大
超过我们刚才所说的所有系统了
不是的
在这样的高能物理实验里
这样的系统不是一块
而是350块
同时并行处理所有实验的数据
那么与之类似我不展开讲的
像非常有名
我们中国人主导的大亚湾中微子实验
由北京的中科院高能所主导
在大亚湾这样一个
有若干个核反应堆 核电站的地方
测量中微子之间的关系
也是人类历史上一个
最新的最近的中微子振荡
验证中微子有没有能量这样一个基础实验
在小小一个人旁边
有这么大的沉水池在地下
屏蔽掉了所有来自
周围环境的放射性去测量
几乎不与物质发生作用的中微子
而实验点之间距离在公里范围
我们需要把这些时间同步到
至少是纳秒尺度
这就需要非常精准的嵌入式系统的设计
所以 有很多同学说
老师你讲下来
我们会觉得嵌入式系统
好像从我们觉得很好玩的东西
智能车 小制作
一直到工业产品高大上的高铁
一直到改变人类未来的
基础物理实验都能做
好像特别特别的酷
那它是不是很难学呢
其实我想说嵌入式的入门
在本门课程里
引一个ARM Cortex M0机构的微处理器
来学习是非常适宜一点都不难
非常适合低年级的本科生
完全把它掌握
我们能够知道它的一切
通过后面课程的学习
知道它的指令
知道它的生命周期
知道它的运行
知道它的时序
那么对于本门课程的学习
我们只要求大家三方面的基础知识
一个是要勇敢的具备
一定英语阅读的能力
科技英语总是很简单的
所以会领导大家
去试着学习阅读原始的芯片手册
其次呢
大家应该有一定的C语言的基本功底
我会给大家补
但是大家一定要通过额外的学习
至少具备良好的C语言基础知识
最后呢大家如果条件具备
有一次数字电路和计算机的基础知识
我认为对于学习和理解本门课程会更好
但没有
通过本门课程的学习
我相信大家也都能上手玩起来
所以
言而总之 总而言之
嵌入式系统的世界非常的广阔
本门课程我希望成为大家的一个敲门砖
让大家能够
进入这个嵌入式的世界
通过短短的学习
参加智能车比赛的同学
能够把智能车跑起来
但是有志于学习
嵌入式的同学从身边做起
也许是你一个觉得很酷的小制作
也许是你一个心仪已久的创意创客发明
也许是你想做一个
与众不同 独一无二的
给女朋友或者男朋友的礼物
我身边见过很多同学
这些事情他们都做过
但是最重要的
是在学习嵌入式的过程当中
他们都收获了乐趣
觉得好玩
那么下一节课
我会给大家简单讲讲
如何学好嵌入式
这节课就到这儿结束
-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