1.4.1 嵌入式系统的特点
认识嵌入式系统的特点有助于学习嵌入式系统。嵌入式系统最主要特点是软件与硬件的结合,只有充分认识这个特点,才能学好嵌入式系统。
1.嵌入式系统资源受限
嵌入式系统通常专用于某一特定应用领域,其硬件资源不会像普通计算机一样丰富,MCU的处理能力也比不上通用CPU。以RAM区和Flash空间为例,8位MCU的RAM区域一般不到1K,Flash空间也只有几十K;16位和32位MCU的RAM能够达到几十K,Flash空间也可以达到几百K。但对于通用计算机系统而言,这样大小的存储空间是根本不能相提并论的,甚至是无法想象的。
2.嵌入式系统开发需要专用工具和特殊方法
嵌入式系统不像通用计算机那样有了计算机就可以进行应用开发。其芯片本身不具备开发功能,必须要有一套与该MCU相配套的开发工具和开发软件。这些工具和环境一般基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。
3.嵌入式系统要求较高可靠性和稳定性
嵌入式系统与具体应用有机地结合在一起,与产品关系密切,升级换代也是和具体产品同步进行的。而应用于一些关键性产品的嵌入式系统要求具有很高的可靠性和稳定性。总的来说,嵌入式系统对故障的容忍要比通用计算机差得多。例如:航天飞船的嵌入式控制系统一旦发生故障,可能会发生灾难性的后果。这决不像通用计算机那样,通过重启就可以解决问题。因此,设计者会通过一些机制,例如看门狗,来使失去控制后的系统重新开始正常运行。
4.嵌入式系统有实时约束
嵌入式系统有比较严格的实时性要求,对于外部事件的发生要能够及时的响应。实时性要求一般分为两类:时间敏感性约束和时间关键性约束。如果当前操作是受时间关键性约束的,它必须在某个时间范围内完成,否则由其控制的功能就会失效。控制车辆稳定行使的控制系统就是个很好的实例。如果反馈速度不够快,其控制算法就会失效,车辆可能会失控。而时间敏感性操作则以平和得多的方式处理超时引起的后果。例如,一台打印机平均处理周期从4.5ms延长到6.4ms,后果不过是打印速度从每分钟3页下降到每分钟2页。
5.嵌入式系统通常极其关注成本
成本对于大多数嵌入式应用产品而言,是个非常重要却又令人头疼的问题。读者可以试想一下,如果每套发动机控制系统能节约1元钱的话,汽车产业可以增加多少利润?
在大多数情况下,需要注意的成本是系统成本。处理器成本固然是一个因素,但是如果使用高集成度的微控制器,而不是微处理器与分立外设的组合,就能节省许多印刷电路板面积,并能使用功率更小的电源,从而节约相当多的成本。
6.嵌入式系统大多要求低功耗
许多嵌入式系统往往工作时间比较长,但是又无法像通用计算机那样有充足的电源供应,低功耗方式就成为嵌入式系统解决这对矛盾的有效途径。低功耗方式使嵌入式系统在大部分时间内处于“睡眠模式”,只有在定时器或者其它硬件发出脉冲时,它才会“醒来”。
功耗约束影响了系统设计决策的方方面面。MCU的选择、外围电路的设计甚至编程语言的选择都有可能由功耗的约束决定。
7.嵌入式系统专用性很强
嵌入式系统通常是用在特定应用领域,如嵌入在手机、电冰箱、空调、各种机械设备、智能仪器仪表中起核心作用,功能是专用的。
8.嵌入式系统技术含量高
嵌入式系统是将先进的计算机技术、半导体技术及电子技术与各个行业的具体应用相结合的产物,是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。它既有硬件又有软件,不仅包括系统软件也包括用户的应用软件。它有数字电路又有模拟电路。其产品技术含量高,涉及多种学科,不容易开发,因此也不容易形成技术垄断。
9.嵌入式系统具有很长生命周期
嵌入式系统比通用计算机系统生命周期长,升级换代比通用计算机慢。
1.4.2 嵌入式系统的学习建议
首先,要明确为什么要学习以MCU为核心的嵌入式应用技术。针对读者不同的学习目的,学习嵌入式系统的方法和侧重点略有不同。
除了上面介绍的MCU具有广泛的应用范围外,对于计算机、电子类、机电类等专业的工科学生来说,即使暂时没有从事MCU的应用的开发,学习MCU也有很重要的意义。因为,MCU作为微型计算机的一个种类,麻雀虽小,五脏俱全,学习MCU可以更加理解微机原理,更加清楚计算机的脉络。同时,目前嵌入式应用系统的软件开发方法与一般的软件开发方法已经融合,开发平台也极为相似。对于在校学生,学习嵌入式应用技术,主要以书本知识为主,理解嵌入式系统的原理和基本编程方式,为将来的学习和发展打好基础。
对于将要投身嵌入式行业的技术人员而言,学习嵌入式系统的方法和侧重点不同于在校的学生。不但学习过程中所需要的背景知识(包括数字电路、汇编语言基础、软件工程,甚至机械自动化)不可或缺,而且更要养成良好的做事规范和方法。学习的侧重点主要放在较复杂的嵌入式应用系统上,对于嵌入式实时操作系统(包括µC/OS-Ⅱ、SmallRTOS、µCLinux等)在应用的基础上,有一定深度的理解。但是,对于只分析实时操作系统或进行短期培训性的驱动程序开发,不扎实进行嵌入式系统基础知识的学习与软件及硬件实践,是不可能学好嵌入式系统的。
其次,学习以MCU为核心的嵌入式应用技术,要选择入门的机型。MCU种类繁多,应用于各行各业,在应用中需要设计者对各种MCU都有所了解,以便确定最佳的性能价格比。但是不可能也没有必要同时学习各种型号MCU的软硬件知识,通常的方法是学习一种典型的MCU系列,达到实用程度,在应用中首先选择使用该系列。如果确实要用其它系列MCU时,只需将两种系列的不同点进行分析、对比,即可在较短时间内达到可以应用的程度。对于初学者,选择入门的MCU系列,一定要选择在国际上比较流行,系列比较齐全,在若干年内不会被淘汰,且抗干扰性强、性能价格比较高的产品。本书选择Freescale公司HC08/S08系列的MCU具有这些特点。
第三,MCU指令系统不大,特别是关键字不多,学习时,在了解基本性能的前提下,可先把关键字及其含义记住,这样,在以后的学习中可起到事半功倍的效果。这一点需强调一下,花上几个单元时间记住主要关键字,对于入门学习很重要,没有必要的记忆,任何知识也无法学习。本书采用汇编语言与C语言并行学习的方法,可以通过实例对比学习。所提供的例子均通过测试,可以作为对比学习用例,也可以应用到实际开发系统中。
第四,学习以MCU为核心的嵌入式应用技术,一定要勤于实践。必须通过实践,理解MCU原理,掌握基本的编程规范与方法,才能学会设计应用系统。因此,一定要创造条件进行实践,这是学好MCU极为关键的一环。特别是注意软件与硬件相结合的实践。MCU程序要固化,进入硬件才能执行,而且通过MCU的输入输出以及执行机构反映出来,这就涉及到硬件系统的构成,因此学习MCU与单纯开发计算机软件不同,必须了解MCU系统的构成。同时,通过软件“打通”硬件,观察硬件响应现象,体会软件功能。一般8位机的硬件评估系统只有几百元,特别是好的硬件评估系统都提供自我实践硬件接口,购买硬件评估系统进行学习与实践是一种好方法。
第五,学习以MCU为核心的嵌入式应用技术,必须与输入输出接口的学习连在一起。MCU系统离不开各种输入输出接口,学习MCU,就必须学习各种接口的原理,通过接口的输入输出体现MCU程序的功能。
第六,MCU的发展已经逐步走向成熟期,各种新技术的使用,进一步提高了MCU的性能价格比。技术进步不可避免的带动了学习方法的更新。学习以MCU为核心的嵌入式应用技术,也要与时俱进,不断改造自己的学习方式,保持与嵌入式应用技术发展的同步。例如:以前的嵌入式系统代码量小,对于硬件的依赖性大,可移植性也就相对较差,规范的重要性基本无从体现。但随着电子技术的发展,MCU的集成度越来越高。前几年还处于实验阶段的Flash存储器技术,目前已广泛使用。MCU性能的提高使得开发人员不得不更重视规范的价值和作用。如今的嵌入式系统开发,不按照规范进行,简直寸步难行。
第七,由于嵌入式系统市场巨大,潜力无限,全球的生产商都非常看好这一领域,纷纷投入了大量的人力物力;而围绕嵌入式系统的研究、设计和开发正成为计算机技术发展最活跃的方向之一。近年来,国内外关于嵌入式系统的书籍如雨后春笋般涌现。选择好的书籍已成为大多数初学者的当务之急。首先,读者不要盲目跟风,要选择适合自己真正需要的书籍。其次,读者可以通过阅读一些书中内容判断该书是否值得购买。因为好的书籍对于问题的阐述一定是清楚明了的;对问题的解决一定是细致透彻的。对于当前非常火热的各种嵌入式培训形式,读者不要盲目跟风,要充分和慎重的考虑自己学习嵌入式的目标和计划。只有从底层抓起,一点一滴打好基础,才能学好嵌入式技术。
以上几点主要是对学习阶段的建议,开发应用阶段则必须重视理论与实践的结合,积累实际经验,探索应用规律和特点。特别要认识到,嵌入式应用技术是以MCU的软硬件技术为核心的综合技术,必须学会知识的分割与综合,才能融会贯通。
练习题
【基础题】
1.嵌入式系统基本含义是什么?为什么说单片机是典型的嵌入式系统?
2.简述MCU的基本组成及应用领域,简述嵌入式系统的特点。
3.比较MCU与CPU的区别与联系。
4.写出十个你见到的生活用品是以MCU为核心的嵌入式产品。
【综合题】
5.若一个实际的嵌入式应用系统基本部件如下:测量3路温度、2路压力、2路开关,并有1个小键盘,1个小液晶显示器,3个指示灯,1个蜂鸣器,还要求能与计算机进行串行通信。请画出该系统硬件框图。


