嵌入式Linux从入门到精通(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-23 18:44:02

点击下载

作者:陆桂来,梁芳,等

出版社:电子工业出版社

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

嵌入式Linux从入门到精通

嵌入式Linux从入门到精通试读:

前言

行业背景

嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软/硬件,适用于对功能、可靠性、成本、体积、功耗等要求严格的专用计算机系统。随着ARM处理器的出现,嵌入式系统应用技术得到了长足的发展。

Linux是在UNIX基础上发展起来的一套可以免费使用和自由传播的操作系统,从1991年问世到现在走过了20多年的历程,已从一个简单架构的系统内核发展到了现在结构完整、功能丰富的多版本用户系统。Linux已经成为现今世界上最流行的操作系统之一;不仅能在PC和服务器上运行,而且随着嵌入式系统的发展,Linux操作系统已成为ARM处理器最好的搭配。

嵌入式Linux+ARM已经广泛应用于机顶盒、智能手机、平板电脑、MPC(多媒体个人计算机)、网络设备、工业控制等领域,并且具有良好的市场前景。

关于本书

本书的设计思路是基于S3C2440处理器及Ubuntu操作系统,让读者从了解基于ARM处理器的嵌入式系统的结构组成、硬件系统和软件操作系统入手,一步步地学习在嵌入式硬件系统中定制和移植Linux操作系统及在Linux操作系统下进行应用开发的过程。

本书共12章,分为4部分,分别是嵌入式系统基础、在ARM处理器系统上移植Linux操作系统、在Linux操作系统上进行软件开发及综合应用。

● 第一部分:包括第 1~3 章,分别介绍了嵌入式系统的组成,Linux 操作系统的基础结构和命令,包括 ARM 在内的嵌入式处理器和常用的外围硬件结构,还介绍了一个基于S3C2440处理器的硬件开发板。

● 第二部分:包括第4~6章,用“step by step”的方法介绍在嵌入式系统硬件上移植Linux 操作系统的过程,包括系统引导软件(Bootloader)、交叉编译环境的使用方法及文件系统的结构和移植方法等。

● 第三部分:包括第 7~11 章,介绍了在移植好 Linux 操作系统的嵌入式系统上使用C 语言进行开发的方法,包括 C 语言开发环境介绍、文件和流操作方法、进程和线程操作方法、网络编程方法。

● 第四部分:包括第12章,介绍了5个嵌入式系统下的应用实例,包括守护进程的设计、串口双机通信等。

本书特色

● 基础内容丰富,涉及了嵌入式系统从软件到硬件各个方面的知识。

● 循序渐进,由浅入深,一步步地介绍了在嵌入式硬件系统上移植 Linux 操作系统的方法,并基于移植好的 Linux 操作系统介绍了使用 C 语言进行 Linux 编程开发的方法。

● 实例丰富,对于所介绍的相应知识,都基于 S3C2440 处理器的硬件系统和 Linux 操作系统给出了相当数量的实例。

作者介绍

本书由陆桂来、梁芳、张波编著,同时参与本书编写的还有严雨、刘艳伟、韩敏、徐慧超、刘洋洋、王闯、严安国、何世兰、汤嘉立、姚宗旭、葛祥磊、张玉梅等人。在此,对以上人员致以诚挚的谢意。由于时间仓促,程序较多,受学识水平所限,错误之处在所难免,恳请广大读者批评指正。编 者第一部分嵌入式系统基础第1章 嵌入式系统概述第2章 嵌入式系统的硬件第3章 嵌入式系统的Linux操作系统第1章 嵌入式系统概述嵌入式系统概述

嵌入式系统(Embedded System)是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电气工程师协会(U.K.Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与大型机、台式机、笔记本通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。本章将对嵌入式系统进行一个基础介绍,涉及的内容如下:

● 嵌入式系统的发展;

● 嵌入式系统的构成;

● 嵌入式系统的处理器;

● 嵌入式系统的操作系统;

● 嵌入式系统的开发流程。1.1 嵌入式系统的发展

嵌入式系统从20世纪70年代发展到如今已经迈过了40多个年头,随着电子和计算机技术的飞速发展,嵌入式系统也逐步得到了极大的成熟,总体来说其可以分为单片机时代、专用处理器时代和ARM时代三大阶段。1.1.1 单片机时代(20世纪70~80年代)

单片机时代起始于1976年,Intel发布了世界上最早的单片机8048;随后,Motorola推出了68HC05,Zilog推出了Z80等一系列单片机。随着电子技术的发展,Intel发布了著名的MCS-51单片机内核,ATMEL、NXP(前飞利浦)等公司在该内核的基础上生产了几百款不同的单片机产品,如图1.1所示是Z80和51系列单片机实物。

这些早期单片机系统的出现,使得汽车、家电、工业机器、通信装置及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能,而且更容易使用、处理速度更快、价格更便宜。正是由于电子装置是“内嵌式的”,因此也就使得“嵌入式系统”这个初级概念深入人心。今天看来,当时这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8位的芯片,硬件技术相对落后,如只能执行一些单线程的程序,还谈不上“多核”的概念。但是它标志着“嵌入式系统”出现了硬件雏形。在开创嵌入式系统独立发展的道路上。图1.1 Z80和51系列单片机实物

从20世纪80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得可以获得更短的开发周期、更少的开发资金和更高的开发效率,“嵌入式系统”真正出现了。确切地说,这个时候的操作系统是一个实时核,这个实时核包含了许多传统操作系统的特征,包括任务管理、任务间通信、同步与相互排斥、中断支持、内存管理等功能。其中比较著名的有Integrated System Incorporation(ISI)的PSOS、Ready System 公司的VRTX、IMG的VxWorks和QNX公司的QNX 等。这些嵌入式操作系统都具有嵌入式的典型特征。

● 它们的系统内核很小,具有可裁剪、可扩充和可移植性,可以移植到各种各样的处理器芯片上。

● 它们均采用占先式的调度,响应时间很短,任务执行的时间可以确定。

● 较强的实时性和可靠性,适合嵌入式应用。

● 这些嵌入式实时多任务操作系统的出现,使得应用开发人员得以从小范围的开发中解放出来,同时也促使嵌入式有了更为广阔的应用空间。

但是从整体来说单片机时代的软件都具有“无操作系统”直接运行在处理器上,根据实际用途编写,相对简单,及硬件耦合性极大而不便于移植的特点。1.1.2 专用处理器时代(20世纪90年代~21世纪)

进入20世纪90年代以后,随着计算机技术、微电子技术、IC设计和EDA工具的发展,嵌入式处理器开始向片上系统(System-on-Chip,SoC)发展,出现了包括51单片机、AVR单片机、MSP430单片机、DSP、CPLD/FPGA在内的一系列处理器,如图1.2所示,而ARM处理器也在此时初露头角。

此时出现了众多嵌入式操作系统,它们大多具有跨平台的移植技术,并且在同一个系统之下也可以通过选择开发工具来使用Java、C或汇编语言等开发者熟悉的语言来开发,该阶段比较常用的有WinCE、Palm、WM、Linux、VxWorks、μC/OS-II,Symbian等。图1.2 专用处理器时代的嵌入式处理器1.1.3 ARM时代(21世纪至今)

进入21世纪之后,随着相关电子工业技术的发展,嵌入式处理器相关技术得到了突飞猛进的发展,出现了64位嵌入式处理器(如Cortex-A50系列),其处理器内核也已经实现了8核(目前正计划实现16核)。

到目前为止,嵌入式处理器可以分为三个大类:以MTK、高通、三星为代表支持的ARM架构处理器、以Intel为代表支持的x86架构处理器及其他以FPGA为代表的特殊/专用处理器,如图1.3所示。图1.3 进入21世纪之后的嵌入式处理器

随着嵌入式处理器的发展,嵌入式系统的硬件性能得到了极大的提升,此时嵌入式操作系统也开始出现一些新的面孔,Android和IOS则是其中的典型代表,它们从2007年出现开始(Android于2007年11月正式发布,IOS则在2007年1月正式发布)就风卷残云般地占领了绝大多数嵌入式消费电子产品(主要是平板电脑、手机和数字播放器)的市场;而微软公司(Microsoft Corporation)不甘落后,从2010年开始连续发布了WP(Windows Phone)和Windows RT(RunTime)操作系统,用于抢占消费电子产品市场。而在工业控制等领域上,嵌入式操作系统本着稳定可靠的原则,则依然是winCE、VxWorks和Linux当道。1.2 嵌入式系统的构成1.2.1 嵌入式系统的层次模型

嵌入式系统的层次模型如图1.4所示,由包括嵌入式处理器在内的硬件系统层、中间驱动层、操作系统层和应用软件层组成。

1.硬件系统层

硬件系统层主要包含了嵌入式系统中必要的硬件设备:嵌入式处理器和协处理器、存储器、其他外围I/O设备。

● 处理器:是嵌入式系统硬件层的核心,主要负责对信息的运算处理,相当于通用计算机的中央处理器;协处理器则是协助处理器完成相应工作的部件辅助处理器。图1.4 嵌入式系统的结构

● 存储器:其用来存储数据和代码,嵌入式系统的存储器一般包括嵌入式处理器内部和外部存储器,此外还有大容量存储器。

● 其他外围 I/O 设备:其用于提供嵌入式系统和其他系统的数据接口及一些特定的工作,如RS-232接口、CAN总线接口、A/D和D/A 模块、电动机和继电器驱动等执行机构等,此外包括输入设备、显示设备等在内的人机交互部件也包含在内。

2.中间驱动层

中间驱动层为硬件层与系统软件层之间的部分,有时也称为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP)。对于上层的操作系统,中间驱动层提供了操作和控制硬件的方法和规则。而对于底层硬件,中间驱动层主要负责相关硬件设备的驱动等。

中间驱动层将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无须关心底层硬件的具体情况,根据中间驱动层提供的接口即可进行开发。

中间驱动层主要包含以下几个功能。

● 底层硬件初始化操作按照自底而上、从硬件到软件的次序分为三个环节,依次是:片级初始化、板级初始化和系统级初始化。

● 硬件设备配置对相关系统的硬件参数进行合理的控制以正常工作。另一个主要功能是硬件相关的设备驱动。

● 硬件相关的设备驱动程序的初始化通常是一个从高到低的过程。尽管中间层中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由中间层使用,而是在系统初始化过程中由中间层将它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。

3.操作系统层

操作系统层由实时多任务操作系统(Real-time Operation System,RTOS)及其实现辅助功能的文件系统、图形用户界面接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成,其中实时多任务操作系统(RTOS)是整个嵌入式系统开发的软件基础和平台。

4.应用软件层

应用软件层是开发设计人员在系统软件层的基础之上,根据需要实现的功能,结合系统的硬件环境所开发的软件。1.2.2 嵌入式系统的处理器

嵌入式系统的核心就是各种类型的嵌入式处理器。目前几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司拥有自己的处理器设计部门。嵌入式微处理器的体系结构经历了从CISC到RISC和Compact RISC的转变;位数由4位、8位、16位、32位到64位;寻址空间一般为64KB~16MB,处理速度为0.1MIPS~2000MIPS;常用的封装为8~144个引脚。根据其现状,嵌入式处理器可以分为嵌入式微控制器(Embedded Microcontroller Unit,EMCU)、嵌入式微处理器(Embedded Microprocessor Unit,EMPU)、嵌入式数字信号处理器(Embedded Digital Signal Processor,EDSP)和嵌入式片上系统(Embedded System on Chip,ESOC)四类。

1.嵌入式微控制器(EMCU)

嵌入式微控制器以各种单片机为代表,也就是在一块芯片中集成了整个计算机系统。嵌入式微控制器一般以某种微处理器内核作为核2心,芯片内部集成ROM/EPROM、EPROM、Flash、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O口、脉宽调制输出、A/D和D/A等各种必要功能和外设。微控制器比微处理器体积小,功耗和成本低,可靠性高,因而是目前嵌入式工业的主流,品种和数量都很多。

2.嵌入式微处理器(EMPU)

嵌入式微处理器相对嵌入式微控制器而言因为其内置的外围接口较少所以控制能力稍弱,但是计算能力得到了极大提高,并且相当多型号还内置了内存管理单元(MMU)以方便运行操作系统。它一般装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能,但是电路板上必须包括ROM、RAM、总线接口、各种外设等器件,目前常见的嵌入式处理器有ARM、MIPS、Power PC、Intel ATOM等。

● ARM:ARM(Advanced RISC Machines)公司是全球领先的16/32位RISC(精简指令集计算机)微处理器知识产权设计供应商。ARM公司通过转让高性能、低成本、低功耗的 RISC 微处理器、外围和系统芯片设计技术给合作伙伴,使他们能用这些技术来生产各具特色的芯片。ARM已成为移动通信、手持设备和多媒体数字设备嵌入式解决方案的 RISC 标准。ARM 处理器有三大特点:体积小、低功耗、低成本和高性能,16/32位双指令集,全球的合作伙伴众多。

● MIPS:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种处理器内核标准,它是由MIPS技术公司开发的。MIPS技术公司是一家设计制造高性能、高档次的嵌入式 32 位和 64 位处理器的厂商,在 RISC 处理器方面占有重要地位。2000年,MIPS公司发布了针对MIPS 32 4Kc处理器的新版本及未来64位MIPS 64 20Kc处理器内核。MIPS技术公司既开发MIPS处理器结构,又自己生产基于MIPS的32位/64 位芯片。为了使用户更加方便地应用 MIPS 处理器,MIPS 公司推出了一套集成的开发工具,称为MIPS IDF(Integrated Development Framework),特别适用于嵌入式系统的开发。

● Power PC:Power PC架构的特点是可伸缩性好,方便灵活。Power PC处理器品种很多,既有通用的处理器,又有嵌入式控制器和内核,应用范围从高端的工作站、服务器到桌面计算机系统,从消费类电子产品到大型通信设备等各个方面,非常广泛。目前 Power PC 独立微处理器与嵌入式微处理器的主频从 25MHz~700MHz 不等,它们的能量消耗、大小、整合程度和价格差异悬殊,主要产品模块有主频350~700MHz的Power PC 750CX和750CXe及主频400MHz的Power PC 440GP等。嵌入式的Power PC 405(主频最高为266MHz)和Power PC 440(主频最高为550MHz)处理器内核可以用在各种集成的系统芯片(SoC)设备上,在电信、金融和其他许多行业具有广泛的应用。

● Intel ATOM:Intel 公司出品的 ATOM(凌动处理器)是英特尔历史上体积最小和功耗最小的处理器,其基于新的微处理架构,专门为小型和嵌入式系统所设计,和其他嵌入式处理器相比其最大的优势是采用了X86体系结构,可以运行Windows操作系统(也可以运行 Android 操作系统),能提供更好的通用性,所以在平板电脑等消费电子产品中得到了广泛的应用。

3.嵌入式数字信号处理器(EDSP)

数字信号处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也快。DSP应用正从在通用单片机中以普通指令实现DSP功能,发展到采用嵌入式数字信号处理器。嵌入式数字信号处理器的长处在于能够进行向量运算、指针线性寻址等运算量较大的数据处理。比较有代表性的产品是Motorola的DSP56000系列、Texas Instruments的TMS320系列,以及Philips公司基于可重置嵌入式DSP结构制造的低成本、低功耗的REAL DSP处理器。

4.嵌入式片上系统(ESOC)

片上系统SOC则是在一个硅片上实现一个更为复杂的系统。各种处理器内核将作为SOC设计公司的标准库,成为VLSI设计中的一种标准器件,用标准的VHDL语言描述,存储在器件库中。SOC可以分为通用SOC和专用SOC两类。通用系列包括Infineon(Siemens)的TriCore、Motorola的M-Core、某些ARM系列器件等。而专用的SOC专用于某个或某类系统中,不为一般用户所知。例如Philips的Smart XA,它将XA单片机内核和支持超过2048位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可以加载Java或C语言的专用的片上系统。1.2.3 嵌入式系统的操作系统

单片机时代的嵌入式系统都不用操作系统,它们只是为了实现某些特定功能,使用一个简单的循环控制对外界的控制请求进行处理,不具备现代操作系统的基本特征,这对一些简单的系统而言是足够的。但是当系统越来越复杂、利用的范围越来越大时,缺少操作系统就成为了最大的一个缺点,因为每添加一项新功能都可能需要重新开始设计,否则只能增加开发成本和系统复杂度。

从20世纪80年代开始,出现了各种各样的商业用嵌入式操作系统,如VxWorks、Linux和Android等。

1.VxWorks

VxWorks操作系统是美国风河(WindRiver)公司于1983年设计开发的一种实时操作系统,以其良好的可靠性和卓越的实时性被广泛应用在通信、军事、航空、航天等高精尖技术领域及实时性要求极高的领域中,如卫星通信、军事演习、导弹制导、飞机导航等,其最大的缺点是价格高昂,主要特点说明如下。

高性能实时:VxWorks的微内核Wind是一个具有较高性能的、标准的嵌入式实时操作系统内核,其支持抢占式的基于优先级的任务调度,支持任务间同步和通信,还支持中断处理、看门狗(WatchDog)定时器和内存管理。其任务切换时间短、中断延迟小、网络流量大的特点使得VxWorks的性能得到很大的提高,与其他嵌入式系统相比具有很大的优势。

POSIX兼容:POSIX(the Portable Operating System Interface)是工作在ISO/IEEE标准下的一系列有关操作系统的软件标准。制定这个标准的目的就是在源代码层次上支持应用程序的可移植性。这个标准产生了一系列适用于实时操作系统服务的标准集合1003.1b(过去是1003.4)。

可配置性好:VxWorks提供良好的可配置能力,可配置的组件超过80个,用户可以根据自己系统的功能需求通过交叉开发环境方便地进行配置。

友好的开发调试环境:VxWorks提供的开发调试环境便于进行操作和配置,开发系统Tornado更是受到了广大嵌入式系统开发人员的欢迎。

支持的处理器种类多,如x86、i960、Sun Sparc、Motorola MC68000、MIPS RX000、Power PC、StrongARM、XScale等。大多数VxWorks API是专用的,VxWorks提供的板级支持包(Board Support Package,BSP)支持多种硬件板,包括硬件初始化、中断设置、定时器和内存映射等例程。

2.Linux

嵌入式Linux现在已经有许多版本,包括强实时的嵌入式Linux(如新墨西哥工学院的RT-Linux和堪萨斯大学的KURT-Linux等)和一般的嵌入式Linux版本(如uCLinux和PocketLinux等)。其中,RT-Linux把通常的Linux任务优先级设为最低,而所有的实时任务的优先级都高于它,以达到既兼容通常的Linux任务又保证强实时性能的目的。另一种常用的嵌入式Linux是uCLinux,它是针对没有MMU(内存管理单元)的处理器而设计的。它不能使用处理器的虚拟内存管理技术,对内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。它专门为嵌入式系统做了许多小型化的工作。

3.μC/OS-II

μC/OS是“MicroController Operating System”的缩写,它是源码公开的实时嵌入式操作系统,其主要特点说明如下。

● 源代码公开,系统透明,很容易把操作系统移植到各个不同的硬件平台上。

● 可移植性强,μC/OS-II 绝大部分源码是用 ANSI C 写的,可移植性(Portable)较强。而与微处理器硬件相关的那部分是用汇编语言写的,已经压缩到最低限度,使μC/OS-II便于移植到其他微处理器上。

● 可固化,μC/OS-II 是为嵌入式应用而设计的,这就意味着,只要开发者有固化(ROMable)手段(C 编译、连接、下载和固化),μC/OS-II 即可嵌入到开发者的产品中成为产品的一部分。

● 可裁剪,通过条件编译可以只使用 μC/OS-II 中应用程序需要的那些系统服务程序,以减少产品中的μC/OS-II所需的存储器空间(RAM和ROM)。

● 占先式,μC/OS-II 完全是占先式(Preemptive)的实时内核,这意味着 μC/OS-II 总是运行就绪条件下优先级最高的任务。大多数商业内核也是占先式的,μC/OS-II 在性能上和它们类似。

● 实时多任务,μC/OS-II不支持时间片轮转调度法(Round-roblin Scheduling),该调度法适用于调度优先级平等的任务。

● 可确定性,全部μC/OS-II的函数调用与服务的执行时间具有可确定性。

由于μC/OS-II仅是一个实时内核,这就意味着它不像其他实时操作系统那样,它提供给用户的只是一些API函数接口,有很多工作往往需要用户自己去完成。把μC/OS-II移植到目标硬件平台上也只是系统设计工作的开始,后面还需要针对实际的应用需求对μC/OS-II进行功能扩展,包括底层的硬件驱动、文件系统和用户图形接口(GUI)等,从而建立一个实用的RTOS。

4.Android(安卓)和IOS

Android(安卓)是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。该操作系统于2007年11月正式发布,2008年10月第一部采用其技术的智能手机(G1)上市,截止到2013年年末,Android的版本号已经发展到了4.4,采用该操作系统的智能设备数量已经超过了10亿台。

Android可以在ARM和x86体系结构的处理器上运行,其采用了分层的架构,可以从高层到低层分为应用程序层、应用程序框架层、系统运行库层和Linux内核层。

Android具有开放性、不受束缚、硬件丰富、开发方便等优势,当然,其最大的优势还是Google公司和众多硬件服务商的支持,其缺点是采用了虚拟机制,导致效率略低,且碎片化严重。

iOS是苹果公司于2007年发布的系统,是以Darwin(一种类UNIX操作系统)为基础的操作系统,最开始命名为iPhone OS,后来更名为iOS,是iPod touch、iPad及Apple TV等产品的操作系统,其版本号目前已经更新到了iOS 7.0.4。

iOS拥有在嵌入式操作系统中最多的应用程序及最好的App(application)库,支持ARM体系架构的处理器,具有高安全、支持多语言、流畅、美观等特点,其缺点是封闭性较强。

5.WP和Windows RT

WP是Windows Phone的简称,是微软在2010年发布的一款智能手机操作系统,将微软旗下的Skype、必应、Xbox Live游戏、Xbox Music音乐与独特的视频体验整合至手机;到2013年年底其已经更新到了8.1版本,其支持ARM体系架构的处理器。

Windows RT(RunTime)则是微软为实时嵌入式系统发布的Windows版本,其此采用了Metro风格的用户界面,支持ARM体系架构处理器,但是其无法兼容普通x86处理器结构上Windows的软件。“RT”代表“Runtime”,也就是Windows Runtime Library。它是一项非常重要的技术,因为它允许开发人员写一个App,但是可以同时在利用英特尔处理器的Windows 8上运行,还可以在利用ARM处理器的Windows RT上运行。1.3 嵌入式系统和通用计算机系统的简单比较

通用计算机是类似个人台机、笔记本等具有普通计算机基本形态,通过安装不同的应用软件,以基本类同的“外形面貌”在社会的各行业、各种工作环境中都能使用的计算机,其和嵌入式系统的比较如表1.1~表1.3所示。表1.1 嵌入式系统和通用计算机系统的比较表1.2 嵌入式系统和通用计算机系统的硬件比较表1.3 嵌入式系统和通用计算机系统的软件比较

综上所述,嵌入式系统和通用计算机系统相比较的特点如下。

● 专用性强:嵌入式系统通常面向特定应用,将任务集成在嵌入式处理器内部完成,体积通常都较小。

● 技术融合性高:嵌入式系统通常将计算机、通信和电子、自动化控制等多个方面的技术融合到一起。

● 软/硬件耦合性高:嵌入式系统以硬件为基础,以软件为核心,通常都会去除冗余,量体裁衣,同时带来较高的耦合性。

● 资源较少:面向特定应用的嵌入式系统考虑到经济型等因素,通常会涉及较少的硬件资源,从而带来更低的成本和更简单的结构。

● 需要专门的开发工具和环境。

● 技术较为先进、性价比高,对系统配置要求低,实时性强。1.4 嵌入式系统的开发流程

嵌入式系统开发是一个系统性的工程,一个完整的开发过程总体来说包括了硬件系统设计、操作系统移植和应用软件设计三个部分。1.4.1 硬件系统设计

硬件设计包括了硬件体系架构、基于Protel或其他电路板设计软件的电路图设计、电路板厂商的电路板制作、焊接和测试、电路板调试等步骤,其根本是得到一个在电气连接上没有错误、满足设计需求的硬件电路板。1.4.2 操作系统移植

操作系统的移植是指当嵌入式硬件开发已经完成且保证没有硬件错误之后将一个目标操作系统移植到硬件系统上并且运行的过程,其目标是在硬件系统上运行一个操作系统。

以Linux为例来介绍操作系统的移植过程,大概可以分为以下4个步骤。(1)配置和编译Bootloader,然后将Bootloader下载到开发板,其可以初始化硬件设备,建立内存空间的映射表,对操作系统进行引导。(2)下载操作系统的源代码,建立交叉编译环境,配置和编译操作系统内核,并且根据硬件系统的特点对其进行相应裁剪和配置,然后将通过Bootloader将完成的操作系统下载到目标板上。(3)为NAND FLASH移植文件系统,通常来说是YAFFS2文件系统,这样才能形成完整的操作系统应用环境。(4)建立嵌入式系统和开发环境的数据交互通道,可以是FTP,也可以是根文件映射等。1.4.3 应用软件设计

应用软件设计是指在已经移植完成操作系统的嵌入式系统上根据系统的特定需求进行软件设计的过程,此时通常也需要交叉编译环境。

注意:本书主要介绍第二步操作系统移植和第三步应用软件设计。1.5 嵌入式系统的应用

随着电子技术的发展,嵌入式系统已经从最开始偏重工业控制应用逐步向包括消费电子产品在内的日常生活用品普及,可以说嵌入式系统的应用已经深入了社会生活的方方面面,如图1.5所示是嵌入式系统的常见应用。图1.5 嵌入式系统的常见应用

常见的嵌入式系统应用列举如下。

● 银行业经常使用的自动柜员机(ATM)。

● 用于工业自动化和监测的可编程逻辑控制器(PLCs)。

● 航空电子,如惯性导航系统、飞行控制硬件和软件及其他飞机和导弹中的集成系统。

● 计算机网络设备,包括路由器、时间服务器和防火墙。

● 办公设备,包括打印机、复印机、传真机、多功能打印机(MFPs)。

● 磁盘驱动器(软盘驱动器和硬盘驱动器)。

● 汽车发动机控制器和防锁死刹车系统。

● 家庭自动化产品,如恒温器、冷气机、洒水装置和安全监视系统。

● 家用电器,包括微波炉、洗衣机、电视机、DVD播放器和录制器。

● 医疗设备,如X光机、核磁共振成像仪。

● 测试设备,如数字存储示波器、逻辑分析仪、频谱分析仪。

● 智能手表和包括智能手环在内的各种可穿戴设备。

● 多媒体电器,互联网无线接收机、电视机顶盒、数字卫星接收器、网络播放器、智能电视等。

● 影像记录设备,如卡片相机、DV、单反。

● 平板电脑,如iPad、kindle fire。

● 智能手机,如HTC one、iphone。

● 固定游戏机和便携式游戏机,如XBOX。第2章 嵌入式系统的硬件

嵌入式系统的硬件架构是嵌入式系统硬件设计的基础,一个完整的嵌入式系统的硬件结构如图2.1所示,包括了嵌入式处理器、存储器和其他外围设备。本章将重点介绍广泛应用的处理器ARM及嵌入式系统中的存储器件,然后介绍本书基于的S3C2440嵌入式开发板GT2440的硬件特点和资源,涉及的内容如下:

● 嵌入式系统的硬件架构;

● ARM处理器和ARM公司的发展历程;

● ARM处理器的分类和特点;

● SDRAM、FLASH等嵌入式系统常用存储芯片介绍;图2.1 嵌入式系统的硬件结构

● GT2440嵌入式开发板的硬件特点和资源。2.1 嵌入式系统的ARM处理器

嵌入式系统中的处理器有多种类型,小到51单片机,大到i7处理器和某些基于可编程逻辑器件的专用芯片,都可以作为核心处理器,但是在实际应用尤其是消费数码产品和工业控制系统中,目前ARM一枝独秀,占据了半壁江山,其优点是功耗低,缺点是计算能力较为低下且不能支持普通的Windows系统(Window 7、8非RT系统)。ARM(Advanced RISC Machines)是ARM(安谋国际科技)公司设计的处理器核心,是目前广为使用的嵌入式系统处理器。2.1.1 ARM处理器的发展历程

ARM公司(安谋国际科技)是业界领先的微处理器技术提供商,其提供最广泛的微处理器内核,可满足几乎所有应用市场对性能、功耗及成本的要求。再加上一个富有活力的生态系统(拥有 1000多家可提供芯片、开发工具和软件的合作伙伴),ARM已售出超过300亿个处理器,每天的销量超过 1600 万,是真正意义上的“The Architecture for the Digital World”(面向数字世界的体系结构)。

安谋国际科技公司前身为艾康电脑,于1978年在英国剑桥(Cambridge)创立,在20世纪80年代晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心。1985年,艾康电脑研发出采用精简指令集的新处理器,名为ARM(Acorn RISC Machine),又称ARM 1。因为艾康电脑的财务出现状况,1990年11月27日,获得Apple与VLSI科技的资助,分割出安谋国际,成为独立子公司,其运作模式主要是涉及IP的设计和许可,并不进行生产和销售实际的半导体芯片,也就是说,其只提供一些对应的ARM核心架构,而由不同的半导体公司根据这些核心架构再加上其他外围部件来形成具体型号的芯片。ARM公司的特点如下:

● 全球领先的半导体IP公司;

● 成立于1990年;

● 目前为止已销售超过200亿个基于ARM 的芯片;

● 向250多家公司出售了800个处理器许可证;

● 获得了所有基于ARM的芯片的版税;

● 赢得了长期成长型市场的市场份额;

● ARM的收益增速通常要比整个半导体行业快。

除了处理器内核之外,ARM公司还提供了一系列用于优化片上系统设计的工具、物理和系统IP,如图2.2所示。图2.2 ARM公司提供的其他产品

安谋国际科技的发展里程碑如下,可以看到几乎每一年都有创新性产品推出。

● 1985 年:Acorn Computer Group 开发出全球第一款商业 RISC(Reduced Instruction Set Computer,精简指令集)处理器。

● 1987年:Acorn 的ARM处理器作为低成本PC的第一款RISC处理器亮相。

● 1990年:Advanced RISC Machines(ARM))无须Acorn和Apple Computer提供合作,即可独立制定新的微处理器标准章程,VLSI Technology成为投资商和第一个授权使用方。

● 1991年:ARM推出第一款RISC核心,即ARM6解决方案。

● 1993年:推出ARM7解决方案。

● 1995年:发布Thumb架构扩展,以在16位系统成本的基础上提供32位的RISC性能,并且提供业界领先的代码;StrongARM核心发布。

● 1996年:推出ARM810微处理器;Windows CE被扩展到ARM架构上。

● 1997年:发布ARM9TDMI系列处理器;JavaOS被扩展到ARM架构上。

● 1998年:发布ARM7TDMI核心。

● 1999年:发布提高了信号处理能力的ARM9E核心。

● 2000年:发布SecurCore智能卡系列核心。

● 2001年:发布ARMv6架构。

● 2002年:发布ARM11微架构;发布RealView开发工具系列。

● 2003年:发布针对多核心的CoreSight实时调试和跟踪解决方案;和Nokia、STM、TI 成立 MIPI 联盟,为移动应用处理器指定开放性标准;发布为 ARM 核心提供了安全平台的TrustZone技术。

● 2004 年:发布了基于 ARMv7 架构的 ARM Cortex 系列处理器,并且发布了首款产品 Cortex-M3;发布了第一款集成多处理器 MPCore;发布了具有开创性的嵌入式信号处理核心OptimeoDe。

● 2005年:收购了Keil Software公司;发布了Cortex-A8处理器。

● 2007 年:推出了针对智能卡应用的 SecurCore SC300 处理器;推出了实现可扩展性和低功耗设计的Cortex-A9处理器。

● 2008年:发布了全球第一个在1080 HDTV分辨率下符合Khronos Open GL ES 2.0标准的Mali-200 GPU;同年,ARM处理器销售量已经达到了100亿台。

● 2009 年:推出体积最小、功耗最低和能效最高的处理器 Cortex-M0;宣布实现具有2GHz频率的Coretx-A9双核处理器。

● 2010年:推出符合AMBA 4协议的系统IP Corelink 400系列;推出ARM Mali-T604图形处理单元,同时 ARM Mali 成为被最广泛授权的嵌入式 GPU 价格;推出Cortex-A15 MPCore处理器;微软公司(Microsoft)成为ARM架构授权使用方;推出Cortex-M4处理器。

● 2011年:和Cadence、TSMC合力推出第一款20nm Cortex-A15多核处理器;发布了嵌入式软件库 ESS;发布了 ARM Mali-T658 GPU;推出了 ARMv8 架构;发布了Cortex-A7处理器;微软公司提出了基于ARM的Windows产品Windows RT。

● 2012年:第一代Windows RT产品问世。2.1.2 ARM处理器的架构、类型和型号及一些专用术语

ARM处理器的分类是一个比较复杂的过程,需要区分不同的架构、类型(系列)和具体的芯片型号,其中架构和类型(系列)是ARM公司提供的,而芯片型号则是由生产厂商所提供的。

ARM公司提供了ARMv1、ARMv2、ARMv3、ARMv4、ARMv5、ARMv6、ARMv7和ARMv8共八种不同的架构,其中ARMv1和ARMv2都没有太大的实际使用价值,从ARMv3开始才逐步开始正式商用。

从ARMv3架构开始,ARM推出了对应的ARM6、7处理器类型(系列),目前常见的ARM处理器类型(系列)有ARM7、ARM9、ARM10、ARM11和Cortex。而每个系列处理器中又有许多不同的类型,如ARM9系列就有ARM9E-S、ARM966E-S等类型。

表2.1给出了ARM体系架构和具体的产品类型(系列)对应关系列表,其中后缀-E表明支持增强型DSP指令集、-J表明支持新的Java。表2.1 ARM体系架构和对应的类型(系列)

具体的产品型号则是得到授权的生产厂商根据ARM公司提供的具体处理器类型生产的芯片,如高通公司(Qualcomm)的处理器MSM7201A即是ARM11系列处理器,其对应的具体ARM类型是ARM1136J(F)-S,使用的是ARMv6架构,这块处理器应用在HTC公司的Dream、Magic等手机上。

目前在消费数码产品中应用得最为广泛的ARM处理器是Cortex-A系列,采用了ARMv7架构,包括了Cortex-A8和Cortex-A9等子系列。

以下是一些ARM处理器所涉及的专用技术和术语。

● ARM 32-bit ISA:基于RISC原理的32位ARM指令集。

● Thumb 16-Bit ISA:Thumb技术是对32位ARM 体系结构的扩展,Thumb指令集是已压缩至16位宽操作码的、最常用32位ARM指令的子集。在执行时,这些16位指令实时、透明地解压缩为完整 32 位 ARM 指令,且无性能损失。卓越的代码密度,以尽量减小系统内存大小和降低成本。

● Thumb-2:以ARM Cortex体系结构为基础的指令集,其提升了众多嵌入式应用的性能、能效和代码密度,可以提供最佳代码大小和性能。其是以获得成功的 Thumb(ARM微处理器内核的创新型高代码密度指令集)为基础进行构建,用于增强ARM微处理器内核的功能,从而可以使开发人员能够开发出低成本且高性能的系统。

● VFP:为浮点体系结构(Vector Floating Point,VFP)为半精度、单精度和双精度浮点运算中的浮点操作提供硬件支持。可以为汽车动力系统、车身控制应用和图像应用(如打印中的缩放、转换和字体生成及图形中的 3D 转换、FFT 和过滤)中使用的浮点运算提供增强的性能。

● Jazelle 技术:可以用于提高执行环境(如 Java、.Net、MSIL、Python 和 Perl)速度。Jazelle技术是ARM提供的组合型硬件和软件解决方案。ARM Jazelle 技术软件是功能丰富的多任务 Java 虚拟机(JVM),经过高度优化,可利用许多 ARM 处理器内核中提供的 Jazelle 技术体系结构扩展。还包括功能丰富的多任务虚拟机(MVM),领先的手机供应商和 Java 平台软件供应商提供的许多 Java 平台中均集成了此类虚拟机。通过利用基础Jazelle技术体系结构扩展,ARM MVM软件解决方案可提供高性能应用程序和游戏,快速启动和应用程序切换,并且使用的内存和功耗预算非常低。

● TrustZone:安全扩展,提供可信计算,是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理(DRM)和基于 Web 的服务。TrustZone 技术与 Cortex-A 处理器紧密集成,并通过 AMBA AXI 总线和特定TrustZone 系统 IP 块在系统中进行扩展。此系统方法意味着,现在可保护外设(包括处理器旁边的键盘和屏幕),以确保恶意软件无法记录安全域中的个人数据、安全密钥或应用程序,或与其进行交互。用例包括:实现安全 PIN 输入,在移动支付和银行业务中加强用户身份验证,安全 NFC 通信通道,数字版权管理,数字版权管理,基于忠诚度的应用,基于云的文档的访问控制,电子售票移动电视。

● SIMD:单指令多数据,当前的智能手机和 Internet 设备必须提供高级媒体和图形性能,才具有竞争力。ARMv6和ARMv7体系结构中的SIMD扩展改进了此类性能。SIMD 扩展已经过优化,可适用于众多软件应用领域,包括视频和音频编解码器,这些扩展将性能提高了75%或更多。

● NEON:通用 SIMD 引擎可有效处理当前和将来的多媒体格式,从而改善用户体验。可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成)。可增强许多多媒体用户体验(观看任意格式的任意视频、编辑和强化捕获的视频-视频稳定性、游戏处理、快速处理几百万像素的照片、语音识别)。

● Virtualization:随着软件复杂性的提高,对在同一个物理处理器上提供多种软件环境的要求也同时增多。因为隔离、可靠性或不同实时特征而要求分隔的软件应用程序需要一个具备所需功能的虚拟处理器。通过高能效方式提供虚拟处理器要求组合利用硬件加速和高效的软件虚拟机监控程序。云计算和其他面向数据或内容的解决方案增加了对每个虚拟机的物理内存系统的需求。

● 多核技术 ARM MPCore:除了 Cortex-A8 外,其他(A5、A9、A15)都支持 ARM的第二代多核技术:单核到四核实现,支持面向性能的应用领域,支持对称和非对称的操作系统实现。技术允许设计时可配置的处理器支持一个、两个、三个或四个处理器一起运行,同时保持集成的高速缓存一致性。这些多核处理器群集在 1 级高速缓存边界内完全一致,而且可通过加速器一致性端口(ACP)配置将有限的一致性扩展到其余的芯片上系统(SoC)中。ACP 允许系统主外设和带有未经缓存的内存视图的加速器(如 DMA 引擎或加密加速器内核)共享处理器的高速缓存,同时保持高速缓存完全一致。多核群集包括一个与全局中断控制器(GIC)体系结构兼容的带专用外设的集成中断和通信系统,因此可提高性能和简化软件可移植性。此GIC可配置为支持0(旧版Bypass 模式)至224个独立中断源,以此为大量设备提供低延迟中断途径。该处理器可支持单核或双核 64 位 AMBA 3AXI 互连接口,以及 SoC内不同地址空间之间的全速过滤选项。2.1.3 ARM处理器的分类

对于ARM的处理器而言,其目前有Classic(传统)系列、Cortex-M系列、Cortex-R系列、Cortex-A系列和Cortex-A50系列5个大类。

1.Classic(传统)系列

Classic(传统)系列处理器上市已经超过15年,其中的ARM7TDMI依然是市场占有率最高的32位处理器,该系列处理器由三个子系列九种处理器组成。

● ARM7系列:基于 ARMv3或 ARMv4架构,包括 ARM7TDMI-S和 ARM7EJ-S处理器。

● ARM9 系列:基于 ARMv5 架构,包括 ARM926EJ-S、ARM946E-S 和 ARM968E-S处理器。

● ARM11 系列:基于 ARMv 架构,包括 ARM1136J(F)-S、ARM1156T2(F)-S、ARM1176JZ(F)-S 和 ARM11MPCore处理器。

注意:Classic系列处理器在很大程度上已经逐步被Cortex系列所取代,所以在最新的设计中并不推荐使用该系列处理器,尤其是ARM7系列。

ARM的Classic(传统)系列内核主要基于三种主要技术产品而构建,可以用于各种应用领域,表2.2给出了它们的技术说明。表2.2 ARM的Classic系列内核

ARM的Classic系列处理器具有经济实惠的特点,其可以以多种形式进行授权,可以提供单次使用许可、多年期许可和永久使用许可,并且其中多种处理器可用作硬核从而可以降低设计风险并且缩短上市时间。在ARM的Connected Community(合作伙伴联盟)中有650多家成员支持ARM处理器,提供了专门针对ARM指令集架构的关键开放源项目;提供了行业中最广泛的编译器、调试器和RTOS工具体系,以及大量可以和处理器集成的第三方IP。

ARM的Classic系列处理器的比较说明如表2.3所示,需要说明的是,在最新的设计中都推荐使用Cortex产品进行升级替换。表2.3 ARM的Classic系列处理器的比较说明

2.Cortex-M系列

Cortex-M系列处理器包括Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4共5个子系列,该系列主要针对成本和功耗敏感的应用,如智能测量、人机接口设备、汽车和工业控制系统、家用电器、消费性产品和医疗器械等。

整体来说,Cortex-M系列处理器偏重于工业控制,其提供了更低的功耗和更长的电池寿命,提供了更少的代码和更高的性能,并且提供了兼容性的代码、统一的工具和操作系统支持,具有如下优点。

● Cortex-M系列处理器为8位和16位体系结构提供了极佳的代码密度,在具有对内存大小要求苛刻的应用中具有很大的优势。

● Cortex-M 系列处理器虽然使用 32 位的指令,但是其使用了可提供极佳代码密度的ARM Thumb-2技术,也可以支持16位的Thumb指令,其对应的C编译器也会使用16位版本的指令,可以更加有效地执行运算。

● Cortex-M 系列处理器采用了 8 位和 16 位的数据传输,从而可以高效地利用数据内存,同时开发者可以使用其在面向8/16位系统的应用代码中的相同的数据类型。

● Cortex-M系列处理器提供了较大的能效优势,面对如USB、蓝牙、WiFi等连接及如加速计和触摸屏等复杂模拟传感器且成本日益降低的产品需求有极大地优势。

● Cortex-M 处理器完全可以通过 C 语言编程,并且附带了各种高级调试功能,能帮助定位软件中的问题,同时网上具有大量的应用实例可以参考。

表2.4给出了Cortex-M系列处理器的对比,其升级关系如图2.3所示,所有的Cortex-M系列处理器都是二进制向上兼容的,可以很方便地重用软件及从一个Cortex处理器无缝发展到另外一个。表2.4 Cortex-M系列处理器的对比图2.3 Cortex-M系列处理器的升级关系

● Cortex-M0:Cortex-M0 是最小的 ARM 处理器,体积极小、能耗很低且编程所需要的代码占用量极少,其具有低功耗(90LP工艺的最低配置下门数低于12KB的时候能耗只有16μW/MHz)、简单(只有56个指令且架构对C语言友好,提供了可供选择的具有完全确定性的指令和中断计时,使得计算响应时间十分容易)和优化的连接性(支持实现低能耗网络互连设备)等特点,常见的Cortex-M0处理器有NXP的LPC1100系列、意法半导体的STM32F0系列。

● Cortex-M0+:Cortex-M0+是在 Cortex-M0 基础上开发的能效极高的处理器,其保留了 Cortex-M 的全部指令集和数据兼容性,同时进一步降低了能耗,其和 Cortex-M一样,芯片面积很小、功耗极低,所需的代码量极少,使得开发人员可以直接跳过16 位系统以接近 8 位系统的成本开销获取 32 位系统的性能。其具有一个只有 2 级的流水线,具有低功耗(90LP 工艺的最低配置下门数低于 12KB 的时候能耗只有11.2μW/MHz)、简单(保留了Cortex-M0的56个指令)和多功能性(如内存保护单元、可重定位的矢量表、用于提高控制速度的单周期 I/O 接口和用于增强调试的Micro Trace Buffer)等特点,常见的Cortex-M0+处理器有NXP的LPC1100系列和Atmel的SAM D20系列。

注意:在当前的实际产品中基本都使用Cortex-M0+来替代Cortex-M0。

● Cortex-M1:Cortex-M1 类型的 ARM 处理器是为了在 FPGA 中应用而设计的,其支持包括Actel、Altera和Xilinx公司的FPGA设备,可以满足FPGA应用的高质量、标准处理器架构的需要,开发人员可以在受行业中最大体系支持的单个架构上进行标准设计以降低其硬件和软件工程成本,所以在通信、广播、汽车等行业得到了广泛应用。其可以实现常用高密度 Thumb-2 指令集的最新型三阶段 32 位 RISC 处理器,其可以使处理器和软件占用空间都满足最小 FPGA 设备的面积预算,同时保留与 ARM7TDMI 处理器上任何 ARM 处理器 Thumb 代码的兼容性,其可以提供0.8DMIPS/MHz。

● Cortex-M3:Cortex-M3处理器是行业领先的32位处理器,适用于具有较高确定性的实施应用,如汽车车身系统、工业控制系统、无线网络和传感器等,其具有出色的计算性能及对事件的优异系统响应能力。其具有较高的性能和较低的动态功耗,支持硬件除法、单周期乘法和位字段操作在内的 Thumb-2 指令集,最多可以提供 240个具有单独优先级、动态重设优先级功能和集成系统时钟的系统中断。Cortex-M3相比Cortex-M0来说提供了更高的性能和更丰富的功能,于2004年推出,其将集成的睡眠模式与可选的状态保留功能相结合,具有较高的性能和较低的动态功耗,所以可以提供领先的能效。其提供了包括了硬件除法、单周期乘法和位字段操作在内的 Thumb-2 指令集以获取最佳的性能和代码大小;其还可以高效地处理多个 I/O 通道和类似USB OTG的协议标准。其常见的型号有Atmel的SAM3N(无与伦比的性能和易用性)、SAM3S(低功耗和简化的 PCB 应用)、SAM3U(带高速 USB 接口)、SAM3A(CAN总线应用)、SAM3X(增强型网络应用);NXP的LPC1300系列和 LPC1700 系列;德州仪器(TI)的 TMS470M 系列、Stellaris 系列、C2000 Concerto 28x系列;意法半导体的STM32F1和STM32F2系列。

● Cortex-M4:Cortex-M4是Cortex-M3的升级版,其提供了无可比拟的功能,将32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场,曾经在Elektra2010(European Electronics Industry Awards 2012)上获得了大奖,其主要实际应用型号包括 Atmel 的 SAM4L、SAM4S、德州仪器(TI)的 TM4C 系列和意法半导体的STM32F3系列。

3.Cortex-R系列

Cortex-R系列处理器包括Cortex-R4、Cortex-R5、Cortex-R7共3个子系列,其对低功耗、良好的中断行为、卓越性能及与现有平台的高兼容性这些需求进行了平衡考虑,具有高性能、实时、安全和经济实惠的特点,面向如汽车制动系统、动力传动解决方案、大容量存储控制器等深层嵌入式实时应用。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载