1、1.1 1.1 什么是嵌入式系统什么是嵌入式系统对于没有接触过的人来说,嵌入式系统这个词可能显对于没有接触过的人来说,嵌入式系统这个词可能显得比较深奥,甚至充满一些神秘色彩。其实嵌入式系统和普得比较深奥,甚至充满一些神秘色彩。其实嵌入式系统和普通人的生活非常紧密,如日常生活中使用的手机、微波炉、通人的生活非常紧密,如日常生活中使用的手机、微波炉、有线电视机顶盒等,都属于嵌入式系统。与通常使用的有线电视机顶盒等,都属于嵌入式系统。与通常使用的PC机相比,嵌入式系统的形式变化多样、体积小,可以灵活地机相比,嵌入式系统的形式变化多样、体积小,可以灵活地适应各种设备的需求。因此,可以把嵌入式系统理解为
2、一种适应各种设备的需求。因此,可以把嵌入式系统理解为一种为特定设备服务的,软件硬件可裁剪的计算机系统。嵌入式为特定设备服务的,软件硬件可裁剪的计算机系统。嵌入式系统的英文名称是系统的英文名称是Embedded System。从嵌入式系统的定义可以看出,一个嵌入式系统具备从嵌入式系统的定义可以看出,一个嵌入式系统具备了体积小、功能专一、软硬件可裁剪的特点。这些特点也能了体积小、功能专一、软硬件可裁剪的特点。这些特点也能反映出嵌入式系统与传统的反映出嵌入式系统与传统的PC机有着不同之处。本书使用机有着不同之处。本书使用常见的常见的ARM嵌入式系统为例讲解嵌入式嵌入式系统为例讲解嵌入式Linux系统
3、移植和开系统移植和开发技术。发技术。1.2 1.2 嵌入式系统应用领域嵌入式系统应用领域从嵌入式系统的特点可以看出它的应用领域是很广泛从嵌入式系统的特点可以看出它的应用领域是很广泛的。不仅在家电上,在其他的领域也有很大的需求。本节介的。不仅在家电上,在其他的领域也有很大的需求。本节介绍一些嵌入式应用的领域。绍一些嵌入式应用的领域。1.2.1 1.2.1 家用电器家用电器家用电器里最常见的可能就算是手机了。手机是一个家用电器里最常见的可能就算是手机了。手机是一个典型的嵌入式系统。典型的嵌入式系统。1.2.2 1.2.2 交通工具交通工具大家最常使用的交通工具就是汽车了,不管是公交车大家最常使用的
4、交通工具就是汽车了,不管是公交车、私家车还是其他的各种专用车辆,都有嵌入式系统的身影、私家车还是其他的各种专用车辆,都有嵌入式系统的身影。1.2.3 1.2.3 公共电子设施公共电子设施银行的银行的ATM自动取款机是一种常见的公共电子设备。自动取款机是一种常见的公共电子设备。1.3 1.3 嵌入式系统发展嵌入式系统发展从从1946年第一台现代电子计算机诞生以来,计算机始年第一台现代电子计算机诞生以来,计算机始终朝着两个方向发展:一个方向是体积大型化、处理能力超终朝着两个方向发展:一个方向是体积大型化、处理能力超强的大型计算机;另一个方向是超体积小型话、功能多样化强的大型计算机;另一个方向是超体
5、积小型话、功能多样化发展。这两个发展方向没有高低之分,都是由于实际需求带发展。这两个发展方向没有高低之分,都是由于实际需求带动发展。计算机大型化发展出现了很多的超级计算机,各国动发展。计算机大型化发展出现了很多的超级计算机,各国都在研制自己的大型计算机。在计算机小型化的发展道路上都在研制自己的大型计算机。在计算机小型化的发展道路上,可谓是种类繁多。不仅有个人电脑(,可谓是种类繁多。不仅有个人电脑(PC),还有各种个),还有各种个人数字助理(人数字助理(PDA)。嵌入式系统是计算机系统小型化发展)。嵌入式系统是计算机系统小型化发展的一个热门的分支。的一个热门的分支。1.3.1 1.3.1 嵌入式
6、微控制器嵌入式微控制器嵌入式微控制器也就是传统意义上的单片机,它可以嵌入式微控制器也就是传统意义上的单片机,它可以说是目前嵌入式系统的前身。单片机就是把一个计算机的主说是目前嵌入式系统的前身。单片机就是把一个计算机的主要功能集成到了一个芯片上,简单说就是一个芯片就是一个要功能集成到了一个芯片上,简单说就是一个芯片就是一个计算机。它的特点是体积小、结构简单、便于开发以及价格计算机。它的特点是体积小、结构简单、便于开发以及价格经济。经济。扁平封装的8051系列芯片直列封装的ATMega8芯片1.3.2 1.3.2 嵌入式微处理器嵌入式微处理器单片机的发展时间较早,处理能力很低,只能用在一单片机的发
7、展时间较早,处理能力很低,只能用在一些相对简单的控制领域。嵌入式微处理器是近几年随着大规些相对简单的控制领域。嵌入式微处理器是近几年随着大规模集成电路发展同步发展起来的。与单片机相比,嵌入式微模集成电路发展同步发展起来的。与单片机相比,嵌入式微处理器的处理能力更强。目前主流的嵌入式微处理器都是处理器的处理能力更强。目前主流的嵌入式微处理器都是32位的,而单片机多是位的,而单片机多是8位和位和16位的。位的。嵌入式处理器在一个芯片上集成了复杂的功能,同时嵌入式处理器在一个芯片上集成了复杂的功能,同时一些微处理器还把常见的外部设备控制器也集成到芯片内部一些微处理器还把常见的外部设备控制器也集成到芯
8、片内部。以。以ARM芯片为例,芯片为例,ARM体系在内部规定了一个体系在内部规定了一个32位的总位的总线,厂商可以在总线扩展外部设备控制器。三星的线,厂商可以在总线扩展外部设备控制器。三星的ARM9芯芯片片S3C2440A把常见的串行控制器、把常见的串行控制器、RTC控制器、看门狗、控制器、看门狗、I2C总线控制器甚至总线控制器甚至LCD控制器等都集成在了一个芯片内,控制器等都集成在了一个芯片内,可以提供强大的处理能力。可以提供强大的处理能力。1.3.2 1.3.2 嵌入式微处理器嵌入式微处理器ARM9TDMIDataCacheDataMMUInstructionCacheLCDControl
9、lerBufferAMBABusInterfaceI2CControllerWatchDogUSBInstructionMMU1.3.3 1.3.3 未来嵌入式系统发展的方向未来嵌入式系统发展的方向随着微电子技术的不断发展以及电子制造工艺的进步随着微电子技术的不断发展以及电子制造工艺的进步(目前已经可以制造出(目前已经可以制造出65纳米的芯片),嵌入式系统硬件的纳米的芯片),嵌入式系统硬件的体积会不断缩小,系统稳定性也在不断增强,可以把更多的体积会不断缩小,系统稳定性也在不断增强,可以把更多的功能集成在一个芯片上。另外在功耗方面也不断降低,这样功能集成在一个芯片上。另外在功耗方面也不断降低,这
10、样使嵌入式设备在自带电源的情况(如使用电池)会使用更长使嵌入式设备在自带电源的情况(如使用电池)会使用更长的时间,而且设备的功能也更强大。的时间,而且设备的功能也更强大。此外随着网络的普及和此外随着网络的普及和IPv6技术的应用,越来越多的技术的应用,越来越多的嵌入式设备也会加入到网络中。将来家中的微波炉或者洗衣嵌入式设备也会加入到网络中。将来家中的微波炉或者洗衣机都可以通过无线接入网络,被其他设备控制。机都可以通过无线接入网络,被其他设备控制。1.4 1.4 典型的嵌入式系统组成典型的嵌入式系统组成嵌入式系统与传统的嵌入式系统与传统的PC机一样,也是一种计算机系统机一样,也是一种计算机系统,
11、是由硬件和软件组成的。硬件包括了嵌入式微控制器和微,是由硬件和软件组成的。硬件包括了嵌入式微控制器和微处理器,以及一些外围元器件和外部设备;软件包括嵌入式处理器,以及一些外围元器件和外部设备;软件包括嵌入式操作系统和应用软件。操作系统和应用软件。与传统的计算机不同的是,嵌入式系统种类繁多。许与传统的计算机不同的是,嵌入式系统种类繁多。许多的芯片厂商、软件厂商加入其中,导致有许多的硬件和软多的芯片厂商、软件厂商加入其中,导致有许多的硬件和软件,甚至解决方案。一般来说,不同的嵌入式系统软硬件是件,甚至解决方案。一般来说,不同的嵌入式系统软硬件是很难兼容的,软件必须修改而硬件必须重新设计才能使用。很
12、难兼容的,软件必须修改而硬件必须重新设计才能使用。虽然软硬件种类多,但是不同的嵌入式系统还有很多相同之虽然软硬件种类多,但是不同的嵌入式系统还有很多相同之处的。处的。1.4 1.4 典型的嵌入式系统组成典型的嵌入式系统组成1.5 1.5 小结小结本章是全书的第一章,为读者介绍了嵌入式系统的基本章是全书的第一章,为读者介绍了嵌入式系统的基本常识、组成结构,通过实例给读者对嵌入式系统一个初步本常识、组成结构,通过实例给读者对嵌入式系统一个初步的认识。本章的知识相对比较笼统,偏重一些概念方面的介的认识。本章的知识相对比较笼统,偏重一些概念方面的介绍,读者可以结合实际生活理解,加深对嵌入式系统的认识绍
13、,读者可以结合实际生活理解,加深对嵌入式系统的认识。第。第2章讲解嵌入式软件和硬件系统基本知识。章讲解嵌入式软件和硬件系统基本知识。第第2 2章章 嵌入式软硬件系统嵌入式软硬件系统在学习嵌入式开发之前,需要了解一下嵌入式系统基在学习嵌入式开发之前,需要了解一下嵌入式系统基本知识。嵌入式系统是由软件和硬件组成的,与传统的本知识。嵌入式系统是由软件和硬件组成的,与传统的PC不同,在设计嵌入式系统的时候通常是软件和硬件都需要设不同,在设计嵌入式系统的时候通常是软件和硬件都需要设计。对于一个嵌入式系统开发来说,无论是硬件开发人员还计。对于一个嵌入式系统开发来说,无论是硬件开发人员还是软件开发人员,都需
14、要掌握基本的软件和硬件知识。本章是软件开发人员,都需要掌握基本的软件和硬件知识。本章的主要目的是通过讲解基本的软硬件知识,帮助读者建立嵌的主要目的是通过讲解基本的软硬件知识,帮助读者建立嵌入式系统概念,主要内容包括:入式系统概念,主要内容包括:模拟电路和数字电路模拟电路和数字电路基本的数制转换基本的数制转换计算机的工作原理计算机的工作原理软件的基础知识软件的基础知识操作系统概要操作系统概要2.1 2.1 电路基本知识电路基本知识初中物理知识讲过,电流就是电流通过的路径。一个初中物理知识讲过,电流就是电流通过的路径。一个最简单的电路是由电源、负载和导线构成的。复杂的电路还最简单的电路是由电源、负
15、载和导线构成的。复杂的电路还有电阻、电容、晶体管、集成电路等元件。这些元件的功能有电阻、电容、晶体管、集成电路等元件。这些元件的功能不同,通过不同的组织方式构成了不同功能的电路。无论什不同,通过不同的组织方式构成了不同功能的电路。无论什么样的电路,最终的功能都是处理电子信号的。按照电子信么样的电路,最终的功能都是处理电子信号的。按照电子信号的工作方式可以把电路分成模拟电路和数字缏贰号的工作方式可以把电路分成模拟电路和数字缏贰2.1.1 2.1.1 什么是模拟电路什么是模拟电路处理模拟信号的电路称作模拟电路。模拟信号的特点处理模拟信号的电路称作模拟电路。模拟信号的特点是信号是线性变化的,意思是信
16、号变化是连续的。如经常使是信号是线性变化的,意思是信号变化是连续的。如经常使用的收音机、电视机和电话都是使用的模拟信号。常见的模用的收音机、电视机和电话都是使用的模拟信号。常见的模拟电路有变压电路、放大电路。评估一个模拟电路常见的参拟电路有变压电路、放大电路。评估一个模拟电路常见的参数有放大率、信噪比和工作频率等。模拟电路是数字电路的数有放大率、信噪比和工作频率等。模拟电路是数字电路的基础,数字电路可以看做是模拟电路的一种特殊形式。基础,数字电路可以看做是模拟电路的一种特殊形式。2.1.2 2.1.2 什么是数字电路什么是数字电路数字电路顾名思义是处理数字信号的电路,通常数字数字电路顾名思义是
17、处理数字信号的电路,通常数字电路具有逻辑运算和逻辑处理的功能。与模拟信号不同,数电路具有逻辑运算和逻辑处理的功能。与模拟信号不同,数字信号使用电压的高低或者电流的有无表示逻辑上的字信号使用电压的高低或者电流的有无表示逻辑上的1或或0,因此数字电路可以方便地表示出二进制数。数字电路可以分因此数字电路可以方便地表示出二进制数。数字电路可以分成脉冲电路和逻辑电路两部分,脉冲电路负责对信号变换和成脉冲电路和逻辑电路两部分,脉冲电路负责对信号变换和测量;逻辑电路负责处理数字逻辑。测量;逻辑电路负责处理数字逻辑。与模拟电路不同,数字电路关心的是信号状态的变化与模拟电路不同,数字电路关心的是信号状态的变化。
18、通过数字逻辑可以处理复杂的二进制信息,因此数字电路。通过数字逻辑可以处理复杂的二进制信息,因此数字电路是计算机的基础。由于数字电路的工作特点,它具有电路结是计算机的基础。由于数字电路的工作特点,它具有电路结构简单、容易加工制造等优点,可以大批量的生产制造,成构简单、容易加工制造等优点,可以大批量的生产制造,成本也变得低廉。数字电路广泛应用在测量、科学计算、自动本也变得低廉。数字电路广泛应用在测量、科学计算、自动控制等领域。控制等领域。2.1.3 2.1.3 数制转换数制转换计算机是由数字电路构成的,其内部数据的传输和处计算机是由数字电路构成的,其内部数据的传输和处理都使用二进制方式。日常生活中
19、普遍使用十进制方式表示理都使用二进制方式。日常生活中普遍使用十进制方式表示数字,所以在使用计算机的时候需要用到数制转换。常见的数字,所以在使用计算机的时候需要用到数制转换。常见的有二进制到十进制的转换,从事嵌入式开发经常会用到十六有二进制到十进制的转换,从事嵌入式开发经常会用到十六进制,有的时候还会用到八进制。进制,有的时候还会用到八进制。二进制的特点是二进制的特点是“逢逢2进进1”。如十进制的。如十进制的0对应二进制对应二进制的的0,十进制的,十进制的1对应二进制的对应二进制的1,十进制的,十进制的2对应二进制的对应二进制的10,以此类推。从这个推演规律中可以看出,二进制数从右往,以此类推。
20、从这个推演规律中可以看出,二进制数从右往左每个位数都是左每个位数都是2的位数次幂。举个例子,二进制数的位数次幂。举个例子,二进制数1010转转换为十进制数:换为十进制数:(1010)2=(23x1)+(22x0)+(21x1)+(20 x0)=8+0+2+0=(10)102.1.3 2.1.3 数制转换数制转换十六进制二进制00000100012001030011401005010160110701118100091001A1010B1011C1100D1101E1110F11112.2 2.2 计算机组成原理计算机组成原理现代计算机的构造越来越复杂,功能也日新月异。但现代计算机的构造越来越复
21、杂,功能也日新月异。但是计算机的组成结构从本质来说仍然是相同的。一个计算机是计算机的组成结构从本质来说仍然是相同的。一个计算机系统硬件是由中央处理器、存储系统、总线系统和输入输出系统硬件是由中央处理器、存储系统、总线系统和输入输出系统几个基本部分组成的。本节从计算机系统结构发展的角系统几个基本部分组成的。本节从计算机系统结构发展的角度介绍计算机组成和工作原理。度介绍计算机组成和工作原理。2.2.1 2.2.1 计算机体系的发展计算机体系的发展计算机是由硬件系统和软件系统两大部分组成的。按计算机是由硬件系统和软件系统两大部分组成的。按照功能又可以划分为指令系统、存储系统、输入输出系统等照功能又可
22、以划分为指令系统、存储系统、输入输出系统等。计算机体系结构简单的说就是研究计算机各系统和组成部。计算机体系结构简单的说就是研究计算机各系统和组成部分结构的一门学问。计算机的诞生到现在时间仅有半个世纪分结构的一门学问。计算机的诞生到现在时间仅有半个世纪,但是计算机体系结构却有很大的发展,出现了许多的体系,但是计算机体系结构却有很大的发展,出现了许多的体系结构设计思想和设计方法。从存储结构来说可以把计算机体结构设计思想和设计方法。从存储结构来说可以把计算机体系分成冯诺依曼结构和哈佛结构。系分成冯诺依曼结构和哈佛结构。2.2.2 2.2.2 中央处理器中央处理器中央处理器英文全称是(中央处理器英文全
23、称是(Central Process Unit),简称),简称CPU,是一个计算机系统的核心。,是一个计算机系统的核心。CPU是由运算器、控制器是由运算器、控制器、寄存器和内部总线组成的。在、寄存器和内部总线组成的。在CPU之外再加入总线,存储之外再加入总线,存储设备输入输出设备就可以构成一个完整的计算机系统。设备输入输出设备就可以构成一个完整的计算机系统。CPU有几个重要的参数,包括工作频率、字长、指令有几个重要的参数,包括工作频率、字长、指令集和缓存。工作频率通常是用户最多听到的参数,一个集和缓存。工作频率通常是用户最多听到的参数,一个CPU的工作频率包括了主频和外频以及外部总线频率。主频
24、是的工作频率包括了主频和外频以及外部总线频率。主频是CPU的实际工作频率,外频是的实际工作频率,外频是CPU工作的基准频率,还有一工作的基准频率,还有一个是总线的工作频率。一般来说,工作频率越高的个是总线的工作频率。一般来说,工作频率越高的CPU执行执行指令的速度就越快,但是也不完全如此。指令的速度就越快,但是也不完全如此。2.2.3 2.2.3 存储系统存储系统计算机在工作中需要从内部存储器中读取指令和数据,计算机在工作中需要从内部存储器中读取指令和数据,并且把计算的结果存入外部存储器。由于材料和价格因素的并且把计算的结果存入外部存储器。由于材料和价格因素的限制,计算机的存储器件在容量、速度
25、等方面需要匹配。存限制,计算机的存储器件在容量、速度等方面需要匹配。存储系统的作用就是设计一个让各种存储器相互配置达到最优储系统的作用就是设计一个让各种存储器相互配置达到最优性价比的方案。性价比的方案。CPU高速缓存:Cache内部存储:RAM外部存储:硬盘、Flash速度容量价格快慢小大高低2.2.4 2.2.4 总线系统总线系统总线是总线是CPU连接外部设备的通道。通常包括数据总线连接外部设备的通道。通常包括数据总线(DataBus)、地址总线()、地址总线(AddressBus)和控制总线()和控制总线(ControlBus)。地址总线负责向外部设备发送地址信息;数)。地址总线负责向外部
26、设备发送地址信息;数据总线负责从外部设备读取或者写入信息;控制总线负责发据总线负责从外部设备读取或者写入信息;控制总线负责发送信号控制外部设备。送信号控制外部设备。计算机的总线系统是由总线和相应的控制器构成的。计算机的总线系统是由总线和相应的控制器构成的。如嵌入式系统中常见的如嵌入式系统中常见的I2C总线和总线和SPI总线,特点是控制简单总线,特点是控制简单,成本低廉,本书后面会做具体介绍。其他的还有,成本低廉,本书后面会做具体介绍。其他的还有PCI总线总线,支持复杂的功能和很高的系统吞吐量。,支持复杂的功能和很高的系统吞吐量。总线的出现规范了总线的出现规范了CPU和外设之间的通信标准,简化和
27、外设之间的通信标准,简化了外部器件的设计。使用一些通用的总线可以有效降低开发了外部器件的设计。使用一些通用的总线可以有效降低开发成本。成本。2.2.5 2.2.5 输入输出系统输入输出系统输入输出系统由外部设备和输入输出控制器组成,是输入输出系统由外部设备和输入输出控制器组成,是CPU与外部通信的系统。与外部通信的系统。CPU通过总线与输入输出系统相连通过总线与输入输出系统相连。由于外部设备的速度差异,。由于外部设备的速度差异,CPU可以使用不同的方式控制可以使用不同的方式控制外部设备的访问。常见的有轮询方式、中断控制方式和外部设备的访问。常见的有轮询方式、中断控制方式和DMA方式。方式。程序
28、中断方式最简单,程序中断方式最简单,CPU通过不断的查询某个外部通过不断的查询某个外部设备的状态,如果外部设备准备好,就可以向其发送数据或设备的状态,如果外部设备准备好,就可以向其发送数据或者读取数据。这种方式由于者读取数据。这种方式由于CPU不断查询总线,导致指令执不断查询总线,导致指令执行受到影响,效率非常低。行受到影响,效率非常低。2.3 2.3 软件基础知识软件基础知识嵌入式系统的基础是硬件,软件是嵌入式系统的灵魂嵌入式系统的基础是硬件,软件是嵌入式系统的灵魂。离开了软件,一个系统的功能就无法发挥。因此软件设计。离开了软件,一个系统的功能就无法发挥。因此软件设计开发是嵌入式系统开发的一
29、个重要环节。本节介绍软件的基开发是嵌入式系统开发的一个重要环节。本节介绍软件的基础知识,开发流程以及基本的技术。础知识,开发流程以及基本的技术。2.3.1 2.3.1 什么是软件什么是软件使用过计算机的读者都使用过各种各样的软件,例如使用过计算机的读者都使用过各种各样的软件,例如最常见的最常见的Word文字处理软件,还有上网使用的浏览器等。文字处理软件,还有上网使用的浏览器等。严格的说,软件是由程序和文档构成的,程序是一组按照特严格的说,软件是由程序和文档构成的,程序是一组按照特定结构组织的指令和数据集合。定结构组织的指令和数据集合。通常软件可以分成系统软件和应用软件,以及目前兴通常软件可以分
30、成系统软件和应用软件,以及目前兴起的介于二者之间的中间件软件。系统软件是使用计算机提起的介于二者之间的中间件软件。系统软件是使用计算机提供的基本功能,例如操作系统和数据库系统。它们都不是针供的基本功能,例如操作系统和数据库系统。它们都不是针对某种特殊需求,而是面向通用的领域。应用软件是针对某对某种特殊需求,而是面向通用的领域。应用软件是针对某种特殊需求设计的,一般来说具有专门的功能。比如种特殊需求设计的,一般来说具有专门的功能。比如MP3播播放软件就是针对播放音乐设计的。放软件就是针对播放音乐设计的。软件的另一个组成部分是文档。随着软件复杂程度的软件的另一个组成部分是文档。随着软件复杂程度的提
31、高,文档也越来越重要。常见的软件文档有开发文档和用提高,文档也越来越重要。常见的软件文档有开发文档和用户文档,前者面向开发人员,后者面向最终用户。软件开发户文档,前者面向开发人员,后者面向最终用户。软件开发人员应该树立起编写文档的好习惯。人员应该树立起编写文档的好习惯。2.3.2 2.3.2 软件开发流程软件开发流程软件开发流程是软件在开发过程中需要走的步骤,经软件开发流程是软件在开发过程中需要走的步骤,经过几十年的发展形成一套公认的开发流程。大致可以分成过几十年的发展形成一套公认的开发流程。大致可以分成4个部分:需求分析、设计、编码调试、测试和维护。个部分:需求分析、设计、编码调试、测试和维
32、护。需求分析概要设计&详细设计编码&调试测试&维护2.3.3 2.3.3 常见的软件开发模型常见的软件开发模型软件的发展过程中,经过前人的总结,设计出几种软软件的发展过程中,经过前人的总结,设计出几种软件开发模型。软件开发模型指定了软件开发流程中的规范和件开发模型。软件开发模型指定了软件开发流程中的规范和参考原则,指导开发人员按照特定的步骤工作。但是,由于参考原则,指导开发人员按照特定的步骤工作。但是,由于现实的差异性,很少有适用与所有软件的开发模型,有一些现实的差异性,很少有适用与所有软件的开发模型,有一些经过验证比较有效的模型供开发人员参考。常见的有瀑布开经过验证比较有效的模型供开发人员参
33、考。常见的有瀑布开汀汀隽靠隽靠鸵约跋衷诒冉先让诺耐骋蝗砑鸵约跋衷诒冉先让诺耐骋蝗砑停停UML)。)。2.3.4 2.3.4 计算机编程语言计算机编程语言计算机内部是通过执行指令完成各种操作的,无论是计算机内部是通过执行指令完成各种操作的,无论是指令还是数据在计算机内部都使用二进制表示,对于用户的指令还是数据在计算机内部都使用二进制表示,对于用户的识别和输入都很困难。计算机编程语言就是为解决这个问题识别和输入都很困难。计算机编程语言就是为解决这个问题设计的。计算机编程语言是一种有规范格式和语法供人类描设计的。计算机编程语言是一种有规范格式和语法供人类描述计算机指令的字符串集合。举个例子来说,计算
34、机内部使述计算机指令的字符串集合。举个例子来说,计算机内部使用二进制用二进制10100101表示一个求加法操作,计算机语言可以通表示一个求加法操作,计算机语言可以通过过add字符串表示这个加法操作,便于人类识别。字符串表示这个加法操作,便于人类识别。计算机语言可以分成机器语言、汇编语言和高级语言计算机语言可以分成机器语言、汇编语言和高级语言。其中机器语言是供计算机本身识别的,为二进制串。汇编。其中机器语言是供计算机本身识别的,为二进制串。汇编语言是对机器语言的抽象,其实质与机器语言是相同的。汇语言是对机器语言的抽象,其实质与机器语言是相同的。汇编语言的指令与机器语言是一一对应的。此外,汇编语言
35、还编语言的指令与机器语言是一一对应的。此外,汇编语言还设计了伪指令和宏指令,帮助编程人员提高开发效率。汇编设计了伪指令和宏指令,帮助编程人员提高开发效率。汇编语言是依赖体系结构的,在一种语言是依赖体系结构的,在一种CPU上能执行的汇编语言在上能执行的汇编语言在其他的其他的CPU很可能就无法执行了。很可能就无法执行了。2.3.5 2.3.5 数据结构数据结构数据的物理结构描述数据元素的存储结构,依赖于具数据的物理结构描述数据元素的存储结构,依赖于具体的计算机实现。例如,一个统计表格是数据元素之间的逻体的计算机实现。例如,一个统计表格是数据元素之间的逻辑结构,但是把表格存放到计算机中需要考虑存储结
36、构,可辑结构,但是把表格存放到计算机中需要考虑存储结构,可以按照行的顺序存储,也可以按照列的顺序存储,这就是数以按照行的顺序存储,也可以按照列的顺序存储,这就是数据的物理结构。据的物理结构。数据结构还定义了数据元素上的操作方法,通常也称数据结构还定义了数据元素上的操作方法,通常也称作算法。算法可以理解为一种思路。例如,对作算法。算法可以理解为一种思路。例如,对10个无序的数个无序的数字按照大小排序,可以有冒泡排序、二分排序、插入排序等字按照大小排序,可以有冒泡排序、二分排序、插入排序等多种方法。在计算机编程中,一个好的算法可以起到事半功多种方法。在计算机编程中,一个好的算法可以起到事半功倍的效
37、果。倍的效果。2.4 2.4 操作系统知识操作系统知识现代计算机的应用软件都是在操作系统下面工作的。现代计算机的应用软件都是在操作系统下面工作的。嵌入式系统早期应用程序是直接运行在嵌入式系统早期应用程序是直接运行在CPU上,比如单片机上,比如单片机。随着嵌入式系统硬件处理能力的提升,应用也越来越复杂。随着嵌入式系统硬件处理能力的提升,应用也越来越复杂,目前主流的嵌入式系统都配备了操作系统,应用软件使用,目前主流的嵌入式系统都配备了操作系统,应用软件使用操作系统提供的功能。本节介绍操作系统的知识。操作系统提供的功能。本节介绍操作系统的知识。2.4.1 2.4.1 什么是操作系统什么是操作系统操作
38、系统是一类特殊的系统软件。它管理整个系统的操作系统是一类特殊的系统软件。它管理整个系统的所有硬件和软件,通常是整个计算机系统中最接近硬件的系所有硬件和软件,通常是整个计算机系统中最接近硬件的系统软件。操作系统屏蔽了硬件的底层特性,向应用软件提供统软件。操作系统屏蔽了硬件的底层特性,向应用软件提供了一个统一的接口。对于应用软件来说,不需要知道硬件的了一个统一的接口。对于应用软件来说,不需要知道硬件的具体特性,使用操作系统提供的接口即可完成相应的功能。具体特性,使用操作系统提供的接口即可完成相应的功能。除此之外,操作系统通过特定的算法统筹安排整个计算机系除此之外,操作系统通过特定的算法统筹安排整个
39、计算机系统软硬件资源,使计算机的资源利用率更高,甚至获得比硬统软硬件资源,使计算机的资源利用率更高,甚至获得比硬件更多的功能。件更多的功能。操作系统是软件领域一个重要部分。常见的嵌入式操操作系统是软件领域一个重要部分。常见的嵌入式操作系统有作系统有cLinux、vxWorks等。本书第等。本书第4章将详细讲解嵌入章将详细讲解嵌入式式Linux操作系统以及与其他系统之间的对比。操作系统以及与其他系统之间的对比。2.4.2 2.4.2 操作系统发展历史操作系统发展历史最早的计算机没有操作系统。在同一时间,用户只能最早的计算机没有操作系统。在同一时间,用户只能通过打孔机等外部设备把程序输入,计算机按
40、照程序执行。通过打孔机等外部设备把程序输入,计算机按照程序执行。如果程序出现问题,整个机器就会停止工作。后来把常用的如果程序出现问题,整个机器就会停止工作。后来把常用的程序设计成库装入计算机,方便用户使用,这可以算是操作程序设计成库装入计算机,方便用户使用,这可以算是操作系统的雏形。系统的雏形。早期的操作系统多种多样,在大型机领域,几乎每个早期的操作系统多种多样,在大型机领域,几乎每个系列的计算机都有自己的操作系统。这种方式造成资源很大系列的计算机都有自己的操作系统。这种方式造成资源很大的浪费,同样功能的程序在不同的机器上由于操作系统的不的浪费,同样功能的程序在不同的机器上由于操作系统的不同无
41、法运行。后来,同无法运行。后来,AT&T公司在小型机上开发成功了公司在小型机上开发成功了UNIX操作系统(几乎同时操作系统(几乎同时C语言也诞生了),并且免费发语言也诞生了),并且免费发放,用户可以修改其代码。放,用户可以修改其代码。UNIX的这种授权方式得到广泛的这种授权方式得到广泛应用,被移植到了各种计算机上,是现代操作系统的开端。应用,被移植到了各种计算机上,是现代操作系统的开端。UNIX操作系统的设计思想也是现在许多操作系统参考的基操作系统的设计思想也是现在许多操作系统参考的基础。础。2.4.3 2.4.3 操作系统由什么组成操作系统由什么组成按照软件的结构划分,操作系统可以分成内核、
42、驱动按照软件的结构划分,操作系统可以分成内核、驱动程序和程序库。内核是操作系统的核心,也是整个系统软件程序和程序库。内核是操作系统的核心,也是整个系统软件的核心。一般来说,内核从抽象的层面提供最基本的功能,的核心。一般来说,内核从抽象的层面提供最基本的功能,通常代码短小精炼。驱动程序是计算机系统必不可少的一类通常代码短小精炼。驱动程序是计算机系统必不可少的一类系统软件,系统是和驱动程序打交道而不会直接访问硬件,系统软件,系统是和驱动程序打交道而不会直接访问硬件,硬件的具体细节有驱动程序完成,是软硬件的接口。程序库硬件的具体细节有驱动程序完成,是软硬件的接口。程序库是操作系统向用户提供的程序接口
43、。是操作系统向用户提供的程序接口。2.4.4 2.4.4 几种操作系统的设计思路几种操作系统的设计思路层次结构的设计思想是把内核需要提供的功能划分出层层次结构的设计思想是把内核需要提供的功能划分出层次,最底层仅提供抽象出来的最基本的功能,每一层利用下次,最底层仅提供抽象出来的最基本的功能,每一层利用下面的一层的功能,依此类推最上面的一层可以提供丰富的功面的一层的功能,依此类推最上面的一层可以提供丰富的功能。这种设计思路结构清晰是操作系统内核的一大进步。能。这种设计思路结构清晰是操作系统内核的一大进步。微内核结构是微内核结构是19世纪世纪80年代产生的内核结构。其设计思年代产生的内核结构。其设计
44、思想是内核提供最基本最核心的功能,注重把系统的服务功能想是内核提供最基本最核心的功能,注重把系统的服务功能和基本操作分开。例如,内核只提供中断处理、内存管理等和基本操作分开。例如,内核只提供中断处理、内存管理等基本功能,网络传输数据之类的功能可以设计成一个系统服基本功能,网络传输数据之类的功能可以设计成一个系统服务完成。这种设计思路使得内核的设计更加简单,内核可以务完成。这种设计思路使得内核的设计更加简单,内核可以根据需要启动或者关闭系统服务,极大的提高了整个系统的根据需要启动或者关闭系统服务,极大的提高了整个系统的工作效率。此外,微内核还会设计一个硬件抽象层,对内核工作效率。此外,微内核还会
45、设计一个硬件抽象层,对内核屏蔽硬件底层特性,让内核可以专注提供各种功能。使用微屏蔽硬件底层特性,让内核可以专注提供各种功能。使用微内核结构的系统越来越多,常见的内核结构的系统越来越多,常见的Linux和和WindowsNT都采都采用了微内核的设计思想。用了微内核的设计思想。2.4.5 2.4.5 操作系统分类操作系统分类按照系统对任务的处理相应时间可以把操作系统分成分按照系统对任务的处理相应时间可以把操作系统分成分时系统和实时系统。分时系统中,不同用户的进程按照一定时系统和实时系统。分时系统中,不同用户的进程按照一定的策略分别得到的策略分别得到CPU资源,未能得到资源的用户只能等待。资源,未能
46、得到资源的用户只能等待。实时系统则不然,任务是按照优先级和响应时间分配的,在实时系统则不然,任务是按照优先级和响应时间分配的,在一个设定的响应时间内,任务必须得到响应。例如导弹拦截一个设定的响应时间内,任务必须得到响应。例如导弹拦截系统,在收到导弹拦截请求后需要在特定的时间内得到响应系统,在收到导弹拦截请求后需要在特定的时间内得到响应。实时操作系统常用在军火、航天、电信等领域。分时操作。实时操作系统常用在军火、航天、电信等领域。分时操作系统应用很广泛,系统应用很广泛,Linux就是一个性能优越的分时操作系统。就是一个性能优越的分时操作系统。2.5 2.5 小结小结本章概括了嵌入式开发领域软硬件
47、的基础知识,包括本章概括了嵌入式开发领域软硬件的基础知识,包括电路、计算机组成原理、软件的基本知识以及操作系统。本电路、计算机组成原理、软件的基本知识以及操作系统。本章的知识点比较广泛,读者只需要了解即可,全书在涉及到章的知识点比较广泛,读者只需要了解即可,全书在涉及到的地方会详细讲解各知识点。第的地方会详细讲解各知识点。第3章讲解章讲解ARM处理器。处理器。第第3 3章章 ARMARM处理器处理器ARM既是一种嵌入式处理器体系结构的缩写,也是一既是一种嵌入式处理器体系结构的缩写,也是一家公司的名字。目前有数十家公司使用家公司的名字。目前有数十家公司使用ARM体系结构开发体系结构开发自己的芯片
48、,支持的外部设备和功能丰富多样。自己的芯片,支持的外部设备和功能丰富多样。ARM体系体系相比其他的体系具有结构简单、入门快等特点。使用相比其他的体系具有结构简单、入门快等特点。使用ARM核心的处理器虽然众多,但是核心都是相同的。因此,掌握核心的处理器虽然众多,但是核心都是相同的。因此,掌握了了ARM的体系结构,用不同的处理器只要是基于的体系结构,用不同的处理器只要是基于ARM核心核心都能很快上手。本章的主要内容包括:都能很快上手。本章的主要内容包括:微处理器和微控制器的关系微处理器和微控制器的关系ARM处理器介绍处理器介绍ARM体系结构体系结构ARM的功能选型的功能选型3.1 3.1 微处理器
49、和微控制器微处理器和微控制器微处理器可以根据应用领域大致分成通用微处理器、微处理器可以根据应用领域大致分成通用微处理器、嵌入式微处理器和微控制器。通用微处理器主要用于高性能嵌入式微处理器和微控制器。通用微处理器主要用于高性能计算,如常用的计算,如常用的PC机的机的CPU就是一个通用微处理器;嵌入就是一个通用微处理器;嵌入式微处理器是针对某种特定应用的高能力计算,如式微处理器是针对某种特定应用的高能力计算,如MP3的解的解码、移动电话的控制等;微控制器主要用于控制某种设备,码、移动电话的控制等;微控制器主要用于控制某种设备,通常集成了多种外部设备控制器,处理指令的能力一般不是通常集成了多种外部设
50、备控制器,处理指令的能力一般不是很强,但是价格低廉,多用在汽车、空调等设备上。很强,但是价格低廉,多用在汽车、空调等设备上。微控制器除了针对专门设备设计以外,还具备微处理微控制器除了针对专门设备设计以外,还具备微处理器不具备的特点。如很好的环境适应性,可以在特殊的高温器不具备的特点。如很好的环境适应性,可以在特殊的高温或者低温环境工作。这些特点一般的微处理器是不具备的。或者低温环境工作。这些特点一般的微处理器是不具备的。目前的嵌入式微处理器大多集成了外部设备控制器,功能不目前的嵌入式微处理器大多集成了外部设备控制器,功能不断增强,价格也在下降。使用嵌入式微处理器替代微控制器断增强,价格也在下降