基于ARM 32位高速嵌入式微控制器(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-23 08:53:41

点击下载

作者:谭大为,张有光,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

基于ARM 32位高速嵌入式微控制器

基于ARM 32位高速嵌入式微控制器试读:

前言

嵌入式技术在20世纪90年代末期随着国内IT行业的迅猛发展而声名鹊起,其实它与通用计算机技术都源于20世纪70年代,与微型机一脉所出,只不过各自走上了不同的道路。

ARM技术诞生于1987年,在经历若干年的沉寂后,通过只进行半导体知识产权授权而不实际生产芯片这种在当时有异于传统的商业模式,不但摆脱发展困境,更是迅速崛起至今不衰,是个张力十足的“ARM哥”。

以时间为坐标,嵌入式技术源起至今已四十余年,在可预期的将来却依然是IT江湖的不老传说。ARM技术仅用二十余载,已在岁月磨砺中撑起自己的一片天空,堪称年轻有为,擎起嵌入式技术的大旗。

为了扭转我们日益焦躁的内心,将摩尔定律用做标尺——嵌入式技术也好,ARM技术也好,以每18个月为一个世代——都已经是第N代,累世而功成。然而焦虑稍释,另一个念头又萦绕心头——在信息技术的瞬息万变中,我们当何去何从?

嵌入式技术日新月异、一日千里的发展速度让我们有些不知所措,颇有无从下手的慨叹。但是,正如《荀子·儒效》所示“千举万变,其道一也”,只要选择嵌入式技术的具体“一点”切入,通过掌握基本的知识点,培养自己不断学习的能力,就能够触类旁通、举一反三,具有快速应变能力,不论潮流如何发展,终能把握时代的脉搏。

在基础篇中用简要的语言勾勒出嵌入式技术涉及各方面的一个大致轮廓,让读者可以选择“一点”更多;在实践篇中,本书着重学习能力和学习方法的养成,力求“授人以鱼”的同时“授人以渔”。此外,本书描述的嵌入式技术主要着眼于基于ARM微控制器——ARM技术不一定千秋万载,却有一统江湖的霸气——在移动互联的时代,强大而丰富的外设功能、具有一定的运算能力、极低的功耗及苛刻条件下恶劣环境适应能力使嵌入式微控制器获得了新的生命力。

今天,嵌入式微控制器活跃在信息家电、移动终端、通信领域、汽车电子、工业控制、商业和金融、办公自动化、交通运输、土木建筑、医疗卫生、国防、航空航天等各个领域。我们享受着嵌入式微控制器给生活带来的便利,却无缘识得其真面目——有位资深的工程师一个玩笑道出了这样的情景:“每个人不可能都有一套房子,但每个人平均有5个嵌入式微控制器。如果你正在使用吉列的Fusion ProGlide手动剃须刀,那注意了,其中有一颗4位的嵌入式微处理器;如果你正在居所惬意地喝下午茶,很荣幸,微波炉、洗衣机、空调、电冰箱等都在嵌入式微控制器的调度下工作;如果你正在使用手机,那其中有两颗以上的嵌入式微处理器,其中一颗在手机电池里;如果你正在汽车里,那你被数十颗嵌入式微控制器所包围——车窗、仪表显示、车载导航、动力控制、座位调节甚至车灯都有嵌入式微控制器,更有趣的是,你的汽车的行为也要为嵌入式微控制器所控制——因为,交通红绿灯中也有嵌入式微控制器……”

在初学者还在纠结学习何种技术时,基于ARM的嵌入式微控制器提供了一个“性价比”最高的选择——既有符合潮流的ARM,又有MCU的简单易学,还有由于广泛应用而衍生的丰富学习资源。“由浅入深、由简及难”是一个认知过程,基于ARM的嵌入式微控制器结构简单、系统集成度高,既“浅”又“简”,同时“麻雀虽小,五脏俱全”——将CPU、RAM、ROM、定时/计数器和多种I/O接口集成在一起,形成芯片级计算机。通过基于ARM的嵌入式微控制器对于计算机系统的一些基本概念能够很好地切入、学习、掌握。随着学习的深入,终能“化繁为简,游刃有余”。

本书付诸印刷前,专门送阅三个特定类型的人,这些人并不代表全部,然而其意见是真实、中肯的,原文摘录供读者参考:

第一个人是我的学弟,在职场打拼多年,新晋团队主管,是资深技术人员——“这本书真没什么好看的,讲的东西是我们招聘要求掌握的最基本的东西,就是几幅图还不错。如果你有时间,我更愿意让你帮忙写一本新员工培训的教材。”

第二个人是网上认识的一名技术发烧友,有一定的基础——“挺好的,自己充实了一些新东西——虽然不多,如果多些故事我会更喜欢。”

第三个人是一名刚入学的文科学生,我们在时政话题上聊得不错——“大部分内容都能看懂,但都不深入,有些地方点到了又不展开。基础篇当科普读了收获不少,但实践篇有些内容知道怎么做但要将几章的内容串起来才知道为什么。”

这三名“预”读者的感受体现了本书在编写时的考量:(1)立足于基础,行文尽量简练。深入浅出是一种境界,需要修为,不敢妄自僭越,因此,本书力图浅入,以平实的语言尽可能简单地表达问题,同时对设计思想与方法进行详细阐述。(2)基础篇着重嵌入式技术整体情况的把握,扩宽知识面,凝练知识点,梳理体系脉络,让读者可以将其作为学习实践的“指南针”,在遇到问题时,可以此为线索,知道如何去学习或者查阅何种资料,而非取代这些专业书籍——事实上,嵌入式技术涉及的内容是如此博大,基础篇中的任一章节涉及的内容都可以找到对应的工具书——不是一本,而是很多本。(3)实践篇针对具体实例结合初学者可能遇到的问题进行了精心编排和讲解,其中有许多地方融入了作者的工程经验和亲身体会。在实例中,有意识地引导读者进行思考,注重思维模式的养成,同时又在一些关键问题上给读者留有自己思考的空间。

需要说明的是,实践篇中以一个具体的嵌入式微控制器评估板为基础进行了展开——嵌入式技术是工程性很强的实践活动,完全抽象的通用知识是“柏拉图”式的,是不具实践意义的。正如文中所述,通过对主流产品里选取的具体型号进行分析、实践,就能举一反三、触类旁通,从而根据实际需要很快地迁移到工程实践中新的目标平台。

本书是一本嵌入式微控制器实验与实践的入门书籍。如果读者刚拿起这本书,在决定购买之前请仔细阅读本前言,并对全书进行概览,以决适合——并非所有人都能接受本书的风格,视读者的个性和禀赋而异。

本书成书过程最早可以追溯到多年前的嵌入式微控制器实验讲义,这份讲义同时也作为北京航空航天大学电子信息工程学院本科生课外科技实践活动的快速入门教材,在多年的电子竞赛中为学生优异成绩的取得奠定了基础,作者因此两度获得北京市教委颁发的北京市电子竞赛优秀指导教师。2010年作为富士通半导体(上海)有限公司大学计划的一部分对讲义进行了重新修订和版本更新。2011年通过选修课的形式对讲义内容进行了教学实践,并收集反馈信息对讲义内容进行了增删和修改。2012年结合卓越工程师培养计划对内容进行删减和结构调整后集结成书。

本书的另一位作者张有光教授,长期致力于本科教学,在教学方法、创业素质和创新能力培养、创业管理方面进行了大量卓有成效的探索与实践,并将相关成果应用到本书中。

本书的第三位作者刘晚春完成了本书的代码编写、调试和例程整理工作。

本书出版得到了家人、友人及企业界与平面媒体诸多专业人士的帮助,感激之情发诸笔端,铭记于心。

同时,衷心希望能够欣赏该书、鄙视该书、唾弃该书的读者可以通过邮件联系作者,以使作者可以在期待与反馈中学习进步。

有关本书内容方面的问题可以联系tdw@buaa.edu.cn

有关教学方法方面的问题可以联系zhangyouguang@vip.sina.com

有关本书代码、例程方面的问题可以联系lwc@buaa.edu.cn

同时,本书中代码例程可以登录电子工业出版社华信教育资源网站http://www.hxedu.com.cn免费注册下载。

谭大为

2012年8月

对于初学者来说,书应当是越薄越好——太厚,容易望而却步。

中国人有武侠情结,武功秘籍只有寥寥几页,内功心法全靠个人领悟。

古人用“学富五车”形容读书多而丰富,主张博闻强识、格物致知。今天的人们处在知识爆炸的时代,小小U盘可以藏书百万卷,手中(电脑中)更常备工具、字典以补大脑存储不足。

本书努力在薄、厚之间寻求取舍与平衡

——既有凝练的工程实践精华,又有知识点、典型案例供查阅参详,同时增加些许人文气息。

人无完人,书无全书。疏漏之处,望大方之家指正批评,不吝贻笑。《礼记·大学》中八目为:

格物、致知、诚意、正心、修身、齐家、治国、平天下

愿此书为君纵横IT天下贡献微薄之力。基础篇第1章 ARM微控制器的那些事儿

本章内容提要

本章主要介绍基于ARM的微控制器相关内容,初学者可以将其作为科普内容阅读,其中有些耳熟能详的知识点,亦尽量以简要的语言进行阐述,以构成完整的知识体系。

在本章中,主要涉及如下内容:

嵌入式微控制器简介

嵌入式微控制器的基本组成

嵌入式初学者杂谈

ARM公司概况及商业模式

ARM的体系结构

ARM Cortex-M3架构及其特点

本章力图以简要的方式让读者可以从“高空”俯瞰ARM世界,读者可以以轻松的心情阅读本章,一些知识点,尤其是涉及的一些名词与概念,做一般性了解即可。

当然,一些天生行动派的读者也可以越过此章,直接进入第5章的从零开始——LED点灯程序。亲爱的读者,让我们一起飞翔在IT的天空,准备一睹万众瞩目的ARM之风采。1.1 嵌入式微控制器简介

名不正则言不顺,言不顺则事不成。

本节将就嵌入式系统的概念、嵌入式微控制器的基本组成、嵌入式微控制器的发展趋势等方面进行阐述。本节中的一些基本概念、名词及英文缩写请尽量记忆,这有助于理解本书后续内容,也有助于阅读其他相关资料。1.1.1 什么是嵌入式

美国著名计算机科学和心理学教授赫伯特·A·西蒙在《关于人为事物的科学》中指出:“我们每天生活着的世界,与其说是自然的世界,还不如说是人造的或人为的世界。在我们周围,几乎每样东西都有人工技能的痕迹”。

人工技能最突出的表现就是嵌入式,或者说是嵌入式系统。嵌入式系统已经深入到我们生活的各个领域,如图1-1所示。图1-1 身边的嵌入式应用(举例)

从智能冰箱、洗衣机、空调、消毒柜、机顶盒,到汽车上的多媒体影音播放系统、自动控制系统;从道路上的红绿灯控制、电子警察、自动贩卖机,到银行的ATM机、排队系统;从军事上使用的导弹制导、自动侦测,到航天飞机、宇宙飞船……这些应用中,尽管由于空间、内容、形态上的需求而不同,但是,在工业领域有一个共同的名字——嵌入式系统。

过去、现在乃至可预期的将来,嵌入式系统的应用远远超过各种通用计算机。一台通用计算机的外部设备中包含了5~10个甚至更多的嵌入式微处理器——键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡、打印机、扫描仪、数字相机、USB集线器等都有嵌入式微处理器(控制器)的身影。

此外,在制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等均是嵌入式计算机的应用领域。1.1.2 嵌入式系统的定义

英国电机工程师学会(IEE)对嵌入式系统的定义为:“嵌入式系统为控制、监视或辅助设备、机器或甚至工厂操作的装置”

IEEE(国际电气和电子工程师协会)对嵌入式系统的定义为:“用于控制、监视或者辅助操作机器和设备的装置”(Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)

在国内,一般较为流行的说法是:

以应用为中心、以计算机技术为基础、软件/硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

本书中并非将嵌入式系统作为科学来严谨研究,而是着眼于工程实践。因此,这里采用嵌入式系统的广义定义:嵌入式系统是一个非计算机的计算系统。

计算机系统是通用计算系统,而嵌入式系统是专用计算(包含控制)系统。1.1.3 嵌入式系统的分类

根据嵌入式系统的广义定义,任何一个非计算机的计算系统都可以被称为嵌入式系统。嵌入式系统包罗万象,在这里仅给出几种典型的分类方法,这些分类方法是从不同的角度进行的粗分类,以帮助读者增加对嵌入式系统的一般认识。事实上,在这些分类方法中,随着技术的发展,不同的种类不断交叉渗透,其分类界限也就变得日益模糊。

1.根据核心部件分类

嵌入式系统根据系统中的核心部件分类,如表1-1所示。表1-1 按核心部件分类的嵌入式系统

上述四种核心部件,各有其特点,并由此应用于不同领域。随着半导体技术的发展和实际应用需求,尤其是在成本、体积、功耗等方面要求日益提高的情况下,一些厂家在同一硅片(芯片)上集成上述其中一个种类中的多个实例,形成所谓的多核芯片,或者在同一硅片(芯片)上集成上述两种或两种以上的核心部件,同时增加其他外设,形成所谓的SoC(System on Chip,片上系统)或者SoPC(System-on-a-Programmable-Chip,片上可编程系统)。

SoC和SoPC的出现,是集成电路发展到一个新阶段的标志,本章后续内容将对其进行进一步的描述和讨论。

2.根据处理器的数据总线宽度分类

数据总线负责计算机系统中数据在各组成部分之间的传送。数据总线宽度是指在芯片内部数据传送的宽度,它决定了CPU内存(包括缓存)以及输入/输出设备之间一次数据传输的信息量。按数据总线宽度分类的嵌入式系统如表1-2所示。表1-2 按数据总线宽度分类的嵌入式系统

在32位,甚至是64位微处理器大行其道的时候,一些4位MCU依然活跃在日常生活中我们经常接触但并不一定熟悉的领域。比如吉列的Fusion ProGlide剃须刀——一款集成了4位处理器的产品。此外,在计算器、车用仪表、车用防盗装置、呼叫器、无线电话、儿童玩具、磅秤、充电器、胎压计、温/湿度计、遥控器及傻瓜相机等领域,4位处理器依然有着广泛的应用。

一些厂家,包括东芝、三星、华邦等,依然保留着4位处理器的产品线。4位处理器的存在是市场作用的结果(海量的低端产品对于产品所使用的器件价格是敏感的),同时也是社会对于科技影响的一种体现。

设想一下,如果一款产品(如剃须刀等日用品)年销量过千万,则0.1元对其造成的成本影响相应就是1 000 000元以上。

此外,FPGA是一类特殊的处理器。它不存在数据总线宽度的概念,只要内部资源或者引脚数量允许,FPGA可以达到非常宽的总线宽度,可以是8位、12位、32位、64位,可以是65位、66位……1000位,甚至更多。这也是FPGA并行处理优势的一种体现。

3.根据应用场合分类

正如前文所述,嵌入式系统的应用远远超过各种通用计算机,在制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。

表1-3所示给出了嵌入式系统按照应用领域的大致分类。需要指出的是,由于嵌入式系统应用涉及的领域非常多,不可能详细列举,表1-3所示的分类较为粗略。例如,汽车电子中用到的嵌入式系统如图1-2所示。表1-3 按应用领域分类的嵌入式系统图1-2 汽车电子中的嵌入式系统(举例)[1]

4.根据软件(操作系统)分类

根据软件(操作系统)可以将嵌入式系统分为有操作系统和无操作系统,如图1-3所示。图1-3 根据软件(操作系统)分类的嵌入式系统

其中有操作系统又可以根据对事件的响应情况分为分时操作系统和实时操作系统两类。实时操作系统又可以分为硬实时系统和软实时系统。

需要说明的是,分时操作系统和实时操作系统是由操作系统本身调度策略决定的,而非硬件决定的。

嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统的重要组成部分。嵌入式操作系统具有通用操作系统的基本特点,能够有效管理复杂的系统资源,并且把硬件虚拟化。

一般来说,有些应用场合仅需要简单的计算或者控制处理,无需操作系统。但对于有多个复杂任务进行调度,或者有界面需求,或者有复杂协议栈需要实现的应用场合,往往需要操作系统。至于何时需要操作系统,以及需要怎样的操作系统需要结合具体应用需求而定。

目前,嵌入式操作系统有:Linux、uClinux、VxWorks、QNX、OSE、uCOS-II、FreeRTOS、WinCE(Windows Embedded Compact 7)、iOS、Android、Symbian、Windows Phone、PalmOS、eCos、pSOS、Nucleus、ThreadX、Rtems、INTEGRITY、C Executive……此外,还有许多独立开发用于专用嵌入式硬件系统的嵌入式操作系统。几种常见的嵌入式操作系统如图1-4所示。图1-4 几种常见的嵌入式操作系统[2]

当然,有操作系统除了分成分时操作系统和实时操作系统外,也可以按照其他特点进行分类,如通用型嵌入式操作系统和专用型嵌入式操作系统、手机操作系统和非手机操作系统等,限于篇幅,这里就不一一列举了。1.1.4 嵌入式微控制器的基本组成

无论是通用计算机系统还是嵌入式系统,都由五大基本部分组成:控制器、运算器、存储器、输入设备和输出设备,如图1-5所示。图1-5 计算机系统的五大基本组成部分

关于计算机系统的这五大基本组成部分,有关教科书和许多其他资料上都有详细介绍,这里结合本书内容就其作用进行简要描述。(1)控制器

控制器是整个计算机系统的中枢,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,包括调度程序、数据、地址,协调计算机各部分工作及内存与外部设备的访问等。(2)运算器

顾名思义,运算器就是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。(3)存储器

存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。存储器有多种实现方式。此外,存储器是除控制器以外,与运算器交互最为频繁的组成部分。(4)输入设备

输入设备是计算机系统的重要组成部分,输入设备与输出设备合称为外部设备,简称为外设。输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机系统。常见的输入设备有键盘、鼠标、触摸屏、光电输入机、磁带机、磁盘机、光盘机等。(5)输出设备

输出设备把计算机的中间结果或最后结果、系统内的各种数据符号及文字或各种控制信号等信息输出出来。常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

以iPhone为例,上述五大部分的结构图解如图1-6所示。图1-6 iPhone的计算机结构图解[3]

上述五大基本组成部分是逻辑抽象的宏结构,实际上,可以笼统地认为在物理实现时运算器和控制器一般集成在一起形成CPU。而根据CPU与存储器的耦合方式不同,可以分为两种结构:冯·诺依曼结构与哈佛结构。下面就这两种结构进行简要说明。

1.冯·诺依曼结构

冯·诺依曼(Von Neumann)结构,也称为普林斯顿结构(Princeton architecture),是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。

20世纪初,物理学和电子学科学家们被十进制这个人类习惯的计数方法所困扰,力图研制以十进制为基础的模拟计算机。20世纪30年代中期,美国科学家冯·诺依曼提出:抛弃十进制,采用二进制作为数字计算机的数制基础。同时,他还提出通过预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作的设想[4]。

冯·诺依曼理论的要点如下:

● 数字计算机的数制采用二进制;

● 计算机应该按照程序顺序执行。

人们把冯·诺依曼的这个理论称为冯·诺依曼结构,如图1-7所示。

人 物 志

约翰·冯·诺依曼(John Von Neumann,1903—1957),美籍匈牙利人,20世纪最伟大的科学家之一,1903年12月28日生于匈牙利的布达佩斯。冯·诺依曼从小聪颖过人,兴趣广泛,读书过目不忘,据说他6岁时就能用古希腊语同父亲闲谈,一生掌握了七种语言,最擅长德语,可在他用德语思考种种设想时,又能以阅读的速度译成英语。坊间最有趣的传说,莫过于其将二进制作为数字计算机的数制基础的灵感来自于中国的八卦和阴阳学说。图1-7 冯·诺依曼结构

以对存储器进行读/写操作的指令为例,对于冯·诺依曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。在高速数据传输时,产生所谓的冯·诺伊曼瓶颈(Von Neumann bottleneck)。

目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了英特尔公司的8086,英特尔公司的其他中央处理器、ARM的ARM7、MIPS公司的MIPS处理器也采用了冯·诺依曼结构。

2.哈佛结构

哈佛结构(Harvard architecture)是一种将程序指令存储和数据存储分开的存储器结构,如图1-8所示。图1-8 哈佛结构

哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令是分开组织和存储的,执行时可以预先读取下一条指令。

同时,由于程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。

目前使用哈佛结构的中央处理器和微控制器有很多,除了PIC系列芯片,还有摩托罗拉公司(现在的飞思卡尔)的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。

3.两种体系结构的区别与联系

根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至计算机中;必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;能够按照要求将处理结果输出给用户。

从这个角度来说,将冯·诺依曼体系结构和哈佛结构并列起来是不恰当的,因为哈佛结构仅就存储结构上做出改变,而不是从根本上提出新的有异于冯·诺依曼体系结构的全新架构。

哈佛结构由于指令和数据分开存储,因此可以同时读取指令和数据。在高速数据处理场合采用哈佛结构,可以大大提高数据吞吐率。

但哈佛结构的缺点是结构复杂。通用计算机指令和数据是混合存储的,结构上简单,成本低。设想一下,如果一台台式机采用哈佛结构,那么必须面临的一个情况就是:必须在计算机上安装两块硬盘,一块装程序,一块装数据;内存装两根,一根储存指令,一根存储数据……

现在的处理器虽然从外部总线上看是冯·诺依曼结构的,但是由于采用内部Cache,因此从内部来看是改进型哈佛结构的。同时,哈佛结构较为复杂,对外围设备的连接与处理要求高,不适合外围存储器的扩展。所以,早期通用CPU难以采用这种结构。现在的处理器,尤其是嵌入式微控制器,由于内部集成了所需的存储器,依托Cache的存在,可以将二者统一起来[5]。

冯·诺依曼首先提出了“存储程序”的概念和二进制原理。所谓“存储程序”,可以简单概括为以下三点:

① 计算机包括运算器、控制器、存储器、输入/输出设备;

② 计算机内部应采用二进制来表示指令和数据;

③ 将编好的程序和数据送至内存储器,然后计算机自动地逐条取出指令和数据进行分析、处理和执行。

从世界上第一台计算机ENIAC(Elec,tronic Namerical Integrator And Calculator)到当前最先进的计算机都采用的是冯·诺依曼体系结构。冯·诺依曼是当之无愧的数字计算机之父。

4.嵌入式微控制器产品组成

嵌入式微控制器自问世以来,性能不断提高和完善,其资源为了满足不同应用场合也日益丰富。从20世纪80年代以来,由当时的4位、8位微控制器,发展到现在的32位高速微控制器。近6年来嵌入式微控制器的市场规模及未来的发展预期如图1-9所示。图1-9 近6年来嵌入式微控制器的市场规模及未来的发展预期

嵌入式微控制器不论如何发展变化,其基本结构都属于冯· 诺依曼体系结构和哈佛结构的范畴。下面针对主流微控制器生产商的部分型号,简要说明微控制器的产品组成。

通过FUJITSU公司MB9B500系列32位微控制器(见图1-10)和ATMEL公司SAM3X系列32位微控制器(见图1-11)的结构图,可以很清晰地将微控制器产品中的主要组成部分呈现出来:图1-10 FUJITSU公司MB9B500系列32位微控制器图1-11 ATMEL公司SAM3X系列32位微控制器[6]

● 处于中间的是控制器和计算机——Cortex-M3;

● 都有存储器——SRAM;

● 都有与外界进行交互的输入/输出设备——各种接口(如USB、CAN等)和外部设备(ADC、DAC、外部总线接口控制器等)。

随着低碳环保的呼声日益高涨,以低功耗著称的ARM处理器,以其优良性能在各个领域得到了广泛的应用,越来越多的嵌入式微处理器和嵌入式微控制器都采用了ARM处理器。

需要说明的是,ARM既是公司名,也是商标名。而在图1-10中可以清晰无误地看到“ARM Cortex-M3-CPU”的文字。MB9B500系列32位微控制器既然是FUJITSU公司的产品,和ARM又存在怎样的关联呢?同样,在图1-11所示微控制器中也在显著位置标有“Cortex-M3”的文字,Cortex-M3和ARM又有怎样的渊源呢?

关于这两个问题,读者可以在后续的1.3节和1.4节中找到答案,并可以从中找到关于ARM公司的发展轨迹和商业模式的详细叙述。

为了更好地理解嵌入式微控制器的产品结构,使描述的问题更具一般性,下面再看两款16位和8位非ARM内核的嵌入式微控制器,如图1-12和图1-13所示。图1-12 MICROCHIP公司PIC16F182X系列16位微控制器[7]图1-13 STMicroelectronics公司STM8S系列8位微控制器[8]

和前文介绍的32位微控制器的情况基本相同,PIC16F182X系列16位微控制器同样具备计算机系统的五个基本组成部分:控制器、运算器、存储器、输入设备和输出设备。其中,控制器和运算器集成在CPU模块中,拥有1KB的数据存储器和14KB的指令存储器,256B的EEPROM可以作为数据输入设备和输出设备,此外,具有单向/双向的通信接口也可以连接其他外部输入/输出设备。同时,PIC16F182X系列16位微控制器还有诸如ADC、DAC等其他外设。

同样,由图1-13可以看到STMicroelectronics公司的STM8S系列8位微控制器也具有相同的基本结构。在其官方给出的体系结构中,将微控制器分成了6个部分:CPU、Memory、System、Control、Connectivity和Analog。我们能够直观地将其中的各个部分和计算机系统的五个基本组成部分进行对应。

通过对上述几种不同型号、规格的嵌入式微控制器进行对比,不难发现实际使用的嵌入式微控制器具有以下共同点:

① 都具有计算机系统的五个基本组成部分。厂商将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机;

② 各个厂商增加了不同的外设,包括一些具有技术优势的外设,为不同的应用场合做不同组合控制以提供更大灵活性;

③ 都强调了通信功能,使嵌入式微控制器可以使用多种接口与外界进行交互,具备良好的扩展性。

在第2章将根据具体应用场景,通过应用中需要关注的性能及参数进行解释,并对不同厂家的嵌入式微控制器进行对比,选择合适的产品型号。从而在过程中加深读者对于嵌入式微控制器的感性认识和理解。1.1.5 嵌入式微控制器与嵌入式处理器的区别

在1.1.3节对嵌入式微处理器(Micro Processor Unit,MPU)进行过相关表述,指出其是由通用计算机中的CPU(微处理器)演变而来的。嵌入式微处理器与标准微处理器相比,只保留与嵌入式应用紧密相关的功能硬件,以最低的功耗和资源实现嵌入式应用的特殊要求。同时,在工作温度、抗电磁干扰、可靠性等方面进行了增强。

嵌入式微处理器的基础是通用计算机中的CPU,是嵌入式系统的核心。但仅仅是核心而已,如果需要形成具有一定功能的系统,在电路板上必须包括ROM、RAM、总线接口、各种外设等器件。而嵌入式微控制器将CPU、RAM、ROM、定时计数器和多种I/O接口集成在一个芯片上,形成完整的计算机系统,只需很少外围电路或者不需要外围电路,直接供电即可工作。

嵌入式微处理器系统与嵌入式微控制器系统的比较如图1-14所示。

此外,嵌入式微处理器和嵌入式微控制器在工作频率、功耗、应用领域等方面都有所不同,简要分析如表1-4所示。图1-14 嵌入式微处理器系统与嵌入式微控制器系统的比较表1-4 嵌入式微处理器和嵌入式微控制器对比

随着新的市场需求及各大半导体厂商的产品战略调整,一些嵌入式微处理器中将集成越来越多的外设。而随着技术的发展,嵌入式微控制器的速度也越来越快,计算能力越来越强。

在这两方面因素作用下,两者之间的交集越来越多,某些界限日趋模糊。但就目前整体形式而言,可以笼统地认为嵌入式微处理器应用于高端应用,而嵌入式微控制器应用于中、低端市场,这也是由价值规律所决定的。

另外,辩证地看待两者之间的联系,可以认为嵌入式微处理器是强化计算能力的增强型嵌入式微控制器,而嵌入式微控制器也可以看作是嵌入式微处理器弱化速度集成存储器的结果。

此外,关于高端、中端、低端都是相对的,在选择上一定要根据实际情况,切不可一味攀“高”。要根据实际需要、货源情况、预算成本及其他约束条件具体考虑,在“2.3.2节控制器选型”中会就这个问题进一步讨论。

9 DMIPS:Dhrystone Million Instructions executed Per Second:主要用于测整数计算能力。其中D是Dhrystone的缩写,Dhrystone是一种整数运算测试程序;MIPS:Million Instructions executed Per Second,每秒百万条指令,用来计算一秒内系统的处理能力,即每秒执行了多少百万条指令。DMIPS表示在Dhrystone这样一种测试方法下的MIPS。1.1.6 嵌入式微控制器的发展趋势

随着技术的发展,嵌入式微控制器不但价格低廉,而且功能越来越强大,广泛应用于各种小型电器。据市场研究机构IHS iSuppli的报告显示,2011年全球嵌入式微控制器的市场规模近160亿美元,预计2015年将达到180亿美元。在国内,市场预期在2015年达到47亿美元的营收规模,保持60%的年增长率。

以每颗嵌入式微控制器价格1美元(8位嵌入式微控制器基本都在1美元以下,相当部分的32位嵌入式微控制器也进入了“美分”时代[9])保守测算,2011年嵌入式微控制器的出货量高达160亿颗,而这仅仅是保守估计。

在嵌入式微控制器保持稳定增长的过程中,呈现以下发展趋势:(1)32位微控制器逐渐走强

嵌入式微控制器是伴随着微处理器一起发展的。在微处理器通过不断地采用先进的制造工艺、更加合理的体系结构发展到如今的纳米尺寸、多核心处理器,并且在数据宽度方面从早期的8位处理器、16位处理器,发展到32位处理器,如今64位处理器已经成为现在乃至可预期将来的主流处理器;而微控制器也表现出了从8位到16位再到32位的发展趋势,同时,多核心架构很有可能是微控制器下一步的发展方向。

此外,由于家用电器、手持式消费电子产品、手持式通信装置和车用电子等领域的市场推动,微控制器的使用量越来越大,而且表现出了更新换代的趋势。通过图1-15可以清晰看到32位嵌入式微控制器稳定的增长趋势。图1-15 2007—2011年不同位宽嵌入式微控制器销售额对比(2)应用领域逐步由家电向其他领域迁移辐射

通过对多家 MCU 厂商公布的数据进行综合分析,可以看到嵌入式微控制器在工业和消费电子市场占据最大份额,而来自汽车电子领域的需求增长最快,同时,新能源和智能化应用也在加快32位MCU的应用普及。

嵌入式微控制器的应用涉及生活的方方面面,生活中的各种家电几乎都必须使用到微控制器,如家用音响、家用电话、洗衣机、冷气机等。在汽车电子领域,由于更多电子功能的需求,如安全气囊、智能安全带、胎压监测、车载娱乐系统、引擎控制、刹车防锁死系统、车载网络系统、车内(外)监控装置与车用导航系统等,一辆车所需要使用到的微控制器数目多达数十个,未来市场依然极具潜力。(3)高度整合外部设备,功能不断增强

随着32位嵌入式微控制器的使用日趋广泛,更强大的周边处理功能与多样化的应用接口需求不断得到强化,因此32位嵌入式微控制器的整合度较以往8位(4位)、16位微控制器的整合度更高。

目前,32位嵌入式微控制器基本都配备有模拟/数字转换器、数字/模拟转换器、内部集成NAND型快闪存储器(≥512KB)、内部集成ROM(≥32KB)、DRAM存储器控制接口,以及丰富的通信接口2(CAN、SPI、IC、UART等),甚至是USB和以太网接口,以达到和USB或以太网络等周边装置沟通的能力。此外,更多以往放在微控制器外部的混合信号元件也逐步被加入到微控制器中,如比较器、放大器、滤波器和内部振荡器等。

尤其随着触摸屏这一新的交互方式被人们所接受和推崇,部分嵌入式微控制器已经拥有面板触控功能(见图1-16),未来更有成为标准配备的趋势。图1-16 触控应用(举例)[10]1.2 嵌入式初学者杂谈

万事开头难,尤其面对一个诺大的嵌入式世界,是否有“敢问路在何方?”的疑惑和慨叹?

本节针对初学者可能遇到的一些问题,提供一些前人的经验,希望即将踏上征程的勇士能够获取些许帮助——敢于直面一个随时代脉搏而跃动的行业,绝对可以称之为勇士!1.2.1 学习FPGA,DSP,还是ARM?

在知悉嵌入式只言片语之后,许多初学者面对嵌入式这个充满诱惑与挑战的世界最容易产生迷茫与无助的问题(见图1-17)。在开始讨论这个问题前,先澄清一个误会。图1-17 初学者对于选择FPGA、ARM、DSP的疑惑

通过本书前文内容所述,FPGA、DSP、MPU和MCU是四种不同TM种类的处理器。ARM发展到Cortex 系列时,既有属于MPU的Cortex-A系列,又有属于MCU的Cortex-M系列(具体参考1.4.2节)。同时,MPU中除了ARM结构的微处理器外,还有许多非ARM的微处理器,如Am186/88、386EX、SC-400、Power PC、68000、MIPS等;同样,MCU中的4位、8位、16位MCU都不是ARM结构的(这些MCU占的市场比重相当大)。

因此,虽然ARM大有天下一统的气势,但仅仅以ARM指代所有MPU和MCU也是不妥当的。

说明这个误会后,下面步入正题,并针对1.1.3节的表1-1补充一些说明文字。

1.FPGA

FPGA完全是硬件的,意味着进行FPGA编程设计其实是进行硬件结构设计。换句话说,通过硬件描述语言(Verilog HDL、VHDL)写程序,其实是在用数字电路的基本元件设计逻辑器件的电路版图。虽然,在这个过程中通过Verilog HDL或者VHDL的帮助,并不需要每次都去关注最底层的物理实现,但其本质依然是进行硬件结构设计。

在 FPGA 中,模块[11]间的所有信号都是并行执行的,只有模块内信号流方向的功能单元(门电路或者触发器)级联是串行的。

FPGA 的并行很好理解。如同赛跑,发令枪一响,所有运动员都开始冲出起跑线狂奔;在 FPGA 中,一旦输入信号进来,与之相关的组合逻辑和(或)[12]时序逻辑都会同时反应。

FPGA的串行一般发生在模块内部,一个信号经过一个门电路或者触发器后要传递给下一个门电路或者触发器,信号经过的两者之间构成了串行。此外,通过状态机的方式也可以在模块内部构建一种抽象意义的串行。

由于FPGA并行特点(见图1-18),在并行应用中处理速度快,效率高,其设计的结果面向硬件化,有利于实现专用芯片。但FPGA的功耗大,FPGA的代码不易修改,其代码颇有牵一发而动全身的敏感。图1-18 FPGA的特点(硬件属性、并行、高功耗)[13]

此外,FPGA对数字电路的要求相对较高,针对具体问题时需要关注底层硬件实现,设计过程中要时时绷紧硬件电路这根弦。如果学习过数字电路但没有学习过C语言,对于学习FPGA是有利的——这也不是绝对的,每个人的特点和禀赋不尽相同。

FPGA设计使用的硬件描述语言(Hard Description Language,HDL)主要有Verilog HDL和VHDL。

2.DSP

DSP(Digital Signal Processor)是一种独特的微处理器。作为微处理器,如果需要形成具有一定功能的系统,在电路板上必须包括ROM、RAM、总线接口、各种外设等器件。DSP系统的基本结构如图1-19所示。图1-19 DSP系统的基本结构

DSP主要用于数据处理。DSP集成了基本运算类型(乘法和累加)的硬件结构,而对于卷积、相关、滤波和FFT等数字信号处理过程而言,基本上都是这一类运算。因此,DSP对这些信号的处理比使用通用计算机来完成具有更高的实时处理能力和成本优势。

与FPGA相比,在选定DSP型号后,其硬件是固定的,开发者只需关注软件算法的实现即可。

DSP一般都有浮点运算器,对于处理实数数据有优势,而FPGA中需要用额外的逻辑和资源配合输入的数据格式对浮点问题加以解决,在处理过程中精度损失相对DSP要大。

在代码维护、升级方面,由于DSP一般采用C语言开发,与FPGA相比软件更新方便。此外,DSP在系统成本、体积、功耗等方面都具有一定的优势。

DSP的程序设计可以采用C语言,当然,如果选用的DSP其开发环境支持其他语言,如Java[14]、C++、Python[15]等也是可以的。如果能够很好地掌握汇编语言,对于DSP的高级开发是有好处的,一般情况下,在运算量大时人写的汇编语言往往比高级语言编译之后的代码效率更高。

3.ARM

ARM既是公司名,也是商标名,同时还是一类低功耗处理器的通称,代表一种技术。

1991 年ARM公司成立于英国剑桥,在20世纪90年代由于资金短缺,ARM公司开始尝试与封闭设计17的Intel公司不同的商业策略——自己不制造芯片,只将芯片的设计方案授权给其他公司,由其他公司来生产。

正是这个模式,使得ARM芯片得到普遍接受和应用,并迅速占领了市场。在MPU(微处理器)、MCU(微控制器)乃至FPGA中都有ARM的身影。

关于ARM的情况,在1.3节和1.4节将详细进行介绍,本节主要针对基于ARM的嵌入式微控制器的学习情况进行简要描述。

对于基于ARM的MPU,需要外部集成RAM、ROM等,一般体积较大,相对于MCU功耗较高,主要用于需要界面显示、复杂协议、数据计算等方面的应用。

对于FPGA中含有ARM处理器,目前应用较少。FPGA中的ARM处理器同样需要通过FPGA的内部资源或者FPGA外扩的资源构成复杂系统。由于技术的复杂性,其成本较高。

至于MCU,在嵌入式微控制器进入32位的阶段时,各大厂商纷纷放弃其原有微控制器CPU结构,转而投向ARM的阵营。

目前,有大量基于ARM的嵌入式微控制器,这些嵌入式微控制器一般具有的特点是功耗低、性能强、外设丰富。尤其是ARM Cortex-M3系列,由于其“高性能+高代码密度+小硅片面积”,在消费类电子产品、汽车电子、数据通信、工业控制方面有着广泛的应用。

对于初学者来说,尽量遵循“由浅入深、由简及难”的一个认知过程,修炼到一定程度便可以“化繁为简,游刃有余”了。

因此,选择要求基础不太高的嵌入式微控制器入手(一般具备C语言基础和基本的数字电路基础即可),在学习工具、资料方面都有便利性,开发工具等也容易取得,同时,由于RAM和ROM等设备都集成在一个芯片上,不确定性小,面对的问题相对简单。

此外,嵌入式微控制器是典型的“麻雀虽小,五脏俱全”,计算机系统的各个方面都有,通过嵌入式微控制器的学习对于计算机系统的一些基本概念能够很好地切入、学习和掌握。

在嵌入式微控制器以后,可以学习FPGA和DSP,如果需要有操作系统的支持,可以学习基于ARM的微处理器。

俗语说:“技多不压身”。现在的复杂嵌入式系统都是复合架构,可以是“FPGA+DSP”、“FPGA+ARM”、“DSP+ARM”,甚至是“FPGA+DSP+ARM”的结构。在这些结构中,大数据量处理和特定算法实现用FPGA,数据处理算法用DSP处理,而显示、控制、通信等则使用ARM。

17注:有趣的是,ARM公司为一向以封闭著称的苹果公司持有,ARM的其他公司股东有Acorn、VLSI、Technology等公司。1.2.2 SoC,SoPC——最后的终结者?

SoC是System on Chip(片上系统)的英文缩写,也称为系统级芯片。SoC包括两重含义:

从狭义角度讲,SoC是具有一定功能的电子系统核心芯片集成,是将系统关键部件集成在一块芯片上。

从广义角度讲,SoC是一个微小型系统,是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品[16]。

SoPC是System-on-a-Programmable-Chip(可编程片上系统)的英文缩写。可编程片上系统(SoPC)是一种特殊的嵌入式系统。

首先,SoPC是片上系统(SoC),即由单个芯片完成整个系统的主要逻辑功能。

其次,SoPC是可编程系统,具有灵活的设计方式,可裁剪、可扩充、可升级,并具备软/硬件在系统可编程的功能。

SoC技术的出现和发展是半导体行业发展到一个新的阶段的标志,但在SoC的设计过程中,漫长的特殊应用集成电路[17]开发流程,不但风险性高,而且不能快速响应市场需求。随后,SoC与极具设计弹性的PLD技术结合起来,产生了具有高度整合性与设计弹性的SoPC。

但是否有了 SoC 和 SoPC 就可以解决所有问题?不尽然,早在 2005 年就有人声称SoPC技术将在短时间内取代大多数嵌入式的中高端产品,近10年过去了,原有的半导体格局并没有发生革命性变化。

究其原因,并非SoPC技术不好,而是任何技术问题都不可能脱离社会背景。正如1.1.3节提到的那样,在半导体行业高速发展的今天,产生于半导体发迹之初的4位嵌入式微控制器依然在生产。嵌入式产品市场有足够的包容性,让各种技术在其中角力,但在商业行为中,成本是非常值得关注的部分,成本决定了技术的新陈代谢,而不仅仅是技术本身的先进性。1.2.3 PSoC——创新?另类?

PSoC是Programmable System-On-Chip(片上可编程系统)的英文缩写,是赛普拉斯(Cypress)公司推出的嵌入式微控制系列。

PSoC系列是在一个专有的MCU内核周围集成了可配置的模拟和数字外围器件阵列PSoC块,利用芯片内部的可编程互联阵列,有效地配置芯片上的模拟和数字块资源,达到可编程片上系统的目的。PSoC的概念图如图1-20所示。

采用一个微控制器,一个PSoC器件最多可集成100种外设功能,从而节约设计时间和板上面积,降低了功耗,系统成本也可相应降低。

早期的PSoC集成了一些模拟器件,如多个运算放大器、轨至轨输入、可编程增益放大器以及ADC,这些模拟器件的连接关系也是可编程的。这在当时曾一度引起业界的广泛关注。但这些模拟器件的数量较少,连接的灵活性也不高,此外,PSoC的开发环境也稍有些复杂。

虽然PSoC在市场的反应平平,但赛普拉斯坚持不懈地推动着PSoC。PSoC在模拟与数字混合编程的执著值得期待。图1-20 PSoC的概念图1.2.4 嵌入式微控制器=MCU=单片机?

MCU是Micro Control Unit(微控制单元)的英文缩写,又称做单片微型计算机(Single Chip Microcomputer)或者单片机。可以说,MCU和单片机是等同的,即“MCU=单片机”。

将MCU应用到各种智能化产品中,便成为嵌入式微控制器(Embedded Microcontroller)。也就是说嵌入式微控制器是MCU在应用场合的名称,是与具体产品密切关联的。

本书无意于咬文嚼字,而为了突出嵌入式系统的整体思路,在名称上坚持使用嵌入式微控制器。1.2.5 高速?低速?

对于嵌入式微控制器,高速、低速是相对而言的。

无线电可以分成低频、中频、高频、甚高频等,但是我们很难将嵌入式微控制器的运行速度以这种方式将其绝对地划分成低速、中速、高速等。

在嵌入式微控制器刚刚出现的年代,1MHz相对于机械过程的千赫兹而言属于高速;当嵌入式微控制器的频率突破10MHz时,曾经的“高速”1MHz也就自动降了级,“高速”的称号理所当然地戴在了10MHz的头上。现在的嵌入式微控制器发展到几十兆赫兹,甚至300MHz,其速度到了一个新的阶段,“高速”当之无愧地加冕到这些新宠身上。

可以预见,将来有速度更快的嵌入式微控制器,这个过程依然会发生,到那时,本书的名字可以不变,但内容可能要彻底地变一变了。1.3 ARM公司和ARM概况1.3.1 不卖芯片的半导体公司——ARM

ARM公司(ARM Holdings)是全球领先的半导体知识产权(IP)提供商,并因此在数字电子产品的开发中处于核心地位。ARM公司的总部位于英国剑桥,拥有 1700 多名员工,在全球设立了多个办事处(见图1-21),其中包括比利时、法国、印度、瑞典和美国的设计中心。

ARM公司成立于 1990 年,前身为 Acorn计算机公司。截至2011年,全世界已销售了超过 150 亿枚基于 ARM 的芯片,ARM公司已向 200 多家公司出售了600个处理器许可证。

ARM公司的商业模式主要是 IP 的设计和许可,而不是生产和销售实际的半导体芯片。这是与其他传统半导体产业公司不同的。

ARM公司向其合作伙伴网络(包括世界领先的半导体公司和系统公司)授予 IP 许可证。这些合作伙伴可利用 ARM 的 IP 设计创造和生产片上系统设计,但需要向 ARM公司支付原始 IP 的许可费用并为每块生产的芯片或晶片交纳版税。

除了处理器 IP 外,ARM公司还提供了一系列工具、物理和系统 IP 来优化片上系统设计。图1-21 ARM 公司全球办事处概图[18]

虽然商业模式与传统半导体产业不同,ARM公司的收益增速却比整个半导体行业快。

目前,ARM公司的合作伙伴已经涵盖了软件、培训、半导体、设计支持等多个领域,全球拥有分支机构31个,其合作伙伴总数超过200家,如图1-22所示。图1-22 ARM公司部分合作者概图1.3.2 ARM——Advance RISC Machine

ARM是Advance RISC Machine的缩写。随着在全球的风行,ARM已经不单纯是“高级RISC机器”的简单含义,它既是公司名,也是商标名,同时还是一类低功耗处理器的通称,代表一种技术。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载