文档库 最新最全的文档下载
当前位置:文档库 › Embedded Linux C语言培训讲义1

Embedded Linux C语言培训讲义1

Embedded Linux C语言培训讲义1
Embedded Linux C语言培训讲义1

“黑色经典”系列之《嵌入式Linux C语言应用程序设计》

第1章嵌入式系统基础知识

本章目标

嵌入式系统产业作为朝阳产业正在蓬勃发展,优秀的操作系统Linux也凭借其高效、开放等优势在嵌入式领域占据了一席之地。

本章首先带领读者走近嵌入式系统,从整体上把握什么是嵌入式系统以及如何开发嵌入式系统的应用程序。通过本章的学习,读者将会掌握如下内容:

嵌入式系统的基本概念

嵌入式系统的现状与发展前景

常用的嵌入式操作系统

常见嵌入式处理器的特点及其选型要点

嵌入式系统软件的开发流程

推荐课程—嵌入式linux应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

推荐课程—嵌入式linux 应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

1.1 嵌入式系统概述

正如尼葛洛庞帝在2001年预言的一样,如今,嵌入式系统已成为最为热门的领域之一。从市场观点来看,PC 已经从高速增长时期进入平稳发展时期,其年增长率由20世纪90年代中期的35%逐年下降,单纯由PC 机带领电子产业蒸蒸日上的时代已经成为历史。为此,美国Business Week 杂志提出了“后PC 时代”概念,即嵌入式系统所带领的时代。

进入21世纪以来,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、各类产业以及人们日常生活的方方面面中。随着国内外各种嵌入式产品的进一步开发和推广

嵌入式技术

将越来越与人们的生活紧密结合。

图1.1所示为人们日常生活中常见的嵌入式产品。

图1.1 常见的嵌入式产品

1.1.1 嵌入式系统的发展史

本节从现代计算机发展历史的角度来讲解嵌入式系统的由来,从而使读者能够更加深刻地理解嵌入式的定义、特点以及与通用计算机的区别等。

1.始于微型机时代的嵌入式应用

电子计算机诞生于1946年,在其后漫长的历史进程中,计算机始终是供养在特殊的机房中、实现数值计算的大型昂贵设备。直到20世纪70年代微处理器出现后,计算机发生了历史性的变革。以微处理器为核心的微型计算机凭借其体积小、价格低、可靠性高的优势,迅速走出机房。

微型机表现出的智能化特性引起了控制专业人士的关注,他们将微型机嵌入到一个对象

体系中,实现了对象体系的智能化控制。例如,将微型计算机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监测系统。

这样一来,此类计算机便失去了原来的形态和通用的计算机功能。为了区别于原有的通用计算机系统,把嵌入到对象体系中、实现对象体系智能化控制的计算机称做嵌入式计算机系统。因此,嵌入式系统诞生于微型机时代,嵌入式系统的本质是将一个计算机嵌入到一个对象体系中去,这是理解嵌入式系统的基本出发点。

2.现代计算机技术的两大分支

由于嵌入式计算机系统要嵌入到对象体系中,实现的是对象的智能化控制,因此,它有着与通用计算机系统完全不同的技术要求与技术发展方向。通用计算机系统的技术要求是高速、海量的数值计算,其技术发展方向是总线速度的无限提升、存储容量的无限扩大;而嵌入式计算机系统的技术要求则是智能化控制,技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性不断提高。

在早期,人们可以勉强地将通用计算机系统进行改装,在大型设备中实现嵌入式应用。然而,对于众多的对象系统(如家用电器、仪器仪表、工控单元)中无法嵌入通用计算机系统,而且嵌入式系统与通用计算机系统的技术发展方向完全不同,因此,必须独立地发展通用计算机系统与嵌入式计算机系统,这就形成了现代计算机技术发展的两大分支。

如果说微型机的出现使计算机进入到现代计算机发展阶段,那么嵌入式计算机系统的诞生则标志了计算机进入了通用计算机系统与嵌入式计算机系统两大分支并行发展的时代,从而使计算机行业进入了20世纪末的高速发展时期。

3.两大分支发展的里程碑事件

通用计算机系统与嵌入式计算机系统的专业化分工发展,使20世纪末、21世纪初,计算机技术飞速发展。计算机专业领域集中精力发展通用计算机系统的软、硬件技术,不必兼顾嵌入式应用要求,通用微处理器迅速从286、386、486发展到奔腾系列;操作系统则迅速扩张计算机基于高速海量数据的文件处理能力,使通用计算机系统进入更加完善的阶段。

嵌入式计算机系统则走上了一条完全不同的道路,这条独立发展的道路就是单芯片化道路。它动员了传统电子系统领域的厂家与专业人士,承担起发展与普及嵌入式系统的历史任务,迅速从传统电子系统发展到智能化的现代电子系统时代。

因此,现代计算机技术发展的两大分支的里程碑意义在于:它不仅形成了计算机发展的专业化分工,而且将发展计算机技术的任务扩展到传统的电子系统领域,使计算机成为进入人类社会全面智能化时代的有力工具。

4.互联网的发展繁荣了嵌入式系统的发展

嵌入式系统的发展经历了以单芯片为核心的可编程控制器形式的第一代嵌入式系统、以嵌入式CPU为基础和简单操作系统为核心的第二代嵌入式系统、以嵌入式操作系统为标志的第三代嵌入式系统以及今天的以Internet为标志的第四代嵌入式系统。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

1.1.2 嵌入式系统的定义与特点

1.什么是嵌入式系统

按照电器工程协会的定义,嵌入式系统是用来控制或者监视机器、装置、工厂等大规模系统的设备。这个定义主要是从嵌入式系统的用途方面来进行定义的,可以看到,单个嵌入式系统的功能较为单一,是专为某一具体的用途而设定的。这与通用计算机功能的“大而全”形成了鲜明的对比。

嵌入式系统更加常用的定义为:嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成。它具有“嵌入性”、“专用性”和“计算机系统”3个基本要素。

这个定义较为具体地指明了嵌入式系统的3大基本要素。

2.嵌入式系统的步骤

“嵌入性”是指它是嵌入到对象体系中的专用计算机系统,比如,人们常用的手机就是一个具体的对象,而将专用计算机系统嵌入到手机这个对象后就形成了嵌入式系统。

“专用性”是指每一个嵌入式系统都是特定的应用,比如,手机就是专为人们的通讯服务的,自动售货机就是专为售货而用的。

“计算机系统”则强调了它是一个完整的计算机体系结构,它包括嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件4大部分,缺一不可。

可以说,“嵌入性”是它的特征,“专用性”是它的灵魂,而“计算机系统”则是它的实质。

1.1.3 嵌入式系统的特点

通过以上对嵌入式系统的发展历史以及嵌入式系统定义的讲解,读者可以很清楚地看到嵌入式系统有以下特点。

1.嵌入式系统通常是面向特定应用的

嵌入式微处理器与通用型处理器的最大不同就是嵌入式微处理器大多工作在为特定用户群设计的系统中。嵌入式微处理器通常都具有低功耗、体积小、集成度高等特点,能够把通用处理器中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,大大增强移动能力,跟网络的耦合越来越紧密。

2.嵌入式系统是各种技术、各个行业融合的产物

嵌入式可以应用在人们生活的各个领域,它是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金

推荐课程—嵌入式linux应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

密集、高度分散、不断创新的知识集成系统。

3.嵌入式系统的软硬件设计高效、可裁减

嵌入式系统对成本、体积等方面有严格的要求,要求嵌入式工程师对硬件和软件进行高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中更具有竞争力。

4.嵌入式系统软件固化

为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机中,而不是存储于磁盘等载体中。

5.购买产品与技术开发相结合的实现方式

通用处理器系统多数是通过软件工程的方法,根据用户的需求进行软件开发的,用户拥有完整的技术资料,可以根据应用的需要进行相应的维护与升级。而嵌入式系统一般采用购

1.2 嵌入式系统的组成

嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成,其体系结构如图1.2所示。

从该图中可以清楚地看到嵌入式系统体系结构上下层之间的关系。

其中,硬件平台包括嵌入式处理器和外围设备,它们位于嵌入式系统结构中的最底层;嵌入式操作系统与通用操作系统的功能类似,为用户屏蔽硬件底层的具体细节,提供一个透

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

推荐课程—嵌入式linux 应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

明的操作空间;而

应用

软件则是位于嵌入式操作系统之上的,当然,用户也可以直接在嵌入式操作系统之上进行开发。

图1.2 嵌入式系统体系结构图

下面,将通过该体系结构中的每一层,来详细讲解嵌入式系统的组成。

1.2.1 嵌入式系统的硬件架构

1.嵌入式处理器

嵌入式处理器是各嵌入式系统的核心部件,其功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,嵌入式处理器包含以下部分:

? 处理器内核;

? 地址总线;

? 数据总线;

? 控制总线;

? 处理器本身的辅助支持电路,如时钟、复位电路等;

? 片上I/O 接口电路。

嵌入式处理器可以分为3类:嵌入式微处理器、嵌入式微控制器和嵌入式DSP (Digital Signal Processor )。

嵌入式微处理器就是和通用计算机的微处理器对应的CPU 。在应用中,一般是将微处理器装配在专门设计的电路板上,母板上只保留与嵌入式相关的功能即可,这样可以满足嵌入式系统体积小、功耗低的要求。

嵌入式微控制器又称单片机,它将CPU 、存储器(少量的RAM 、ROM 或两者都有)和其他外设封装在同一片集成电路里。

嵌入式DSP 专门用来对离散时间信号进行极快地处理计算,提高编译效率和执行速度。DSP 正在大量进入数字滤波、FFT 、谱分析、图像处理等领域。

本书所讲的嵌入式处理器主要指嵌入式微处理器。

嵌入式微处理器与通用微处理器既有相似之处,也有不少的区别,其比较如下。

相似点有以下两项。

? 对外的接口:各类总线及辅助电路接口。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

? 处理功能:相似的指令功能分类。

不同点也有以下几项。

? 指令系统中指令的个数:嵌入式微处理器的指令个数与通用处理器有很大的区别,嵌入式微处理器的指令系统往往由于成本等原因而有所精简,比如有些嵌入式处理器无浮点功能等。

? 指令的形式:嵌入式微处理器一般都使用精简指令集(RISC ),而通用处理器则使用复杂指令集(CISC )。

? 处理器的结构设计:嵌入式微处理器与通用处理器在结构设计上有较大的区别,如流水线结构的设计。

? 处理器的工艺和应用指标:由于嵌入式系统通常应用在特殊的场合,因此,对处理器的工艺及应用指标(如工作的温度条件等)也有不同的要求。

小知识

常见的CPU 指令集分为CISC 和RISC 两种。

CISC (Complex Instruction Set Computer )是“复杂指令集”。自PC 机诞生以来,32位以前的

处理器都采用CISC 指令集方式。这种指令系统的指令不等长,指令的数目非常多,编程和设

计处理器时都较为麻烦。但是基于CISC 指令架构系统设计的软件已经非常普遍了,所以包括

Intel 、AMD 在内的众多厂商至今使用的仍为CISC 。

RISC (Reduced Instruction Set Computing )是“精简指令集”。研究人员在对CISC 指令集进行

测试时发现,各种指令的使用频度相当悬殊,其中最常使用的是一些比较简单的指令,它们

仅占指令总数的20%,但在程序中出现的频度却占80%。RISC 正是基于这种思想提出的。采

用RISC 指令集的微处理器处理能力强,并且采用超标量和超流水线结构,大大增强了并行处

理能力。 嵌入式微处理器的种类极为丰富,32位的嵌入式微处理器就有10多种。从图1.3可以看出,全球仅有4%的计算机处理芯片用于通用计算机中,而更多的则是用于嵌入式系统中。

图1.3 全球微处理器芯片用途

嵌入式微处理器内核按体系结构分类,可以分为以下几个系列。

? ARM 系列:只设计内核的英国公司(在1.3节会有详细介绍)。

? MIPS 系列:只设计内核的美国公司。

? PowerPC :为IBM 公司和Motorola 公司共有的内核。

?68K/COLDFIRE:Motorola公司独有内核,有Motorola 68K等。

各内核的特点及应用如表1.2所示。

表1.2 嵌入式处理器内核特点及应用

ARM MIPS PowerPC 68K/COLDFIRE

主要特征体积小、低功耗、低成

本、高性能

高速,跨入了64

位时代,多core

集成

在高速与低功耗之间

作了妥协,并集成丰富

的外围电路接口

高性价比、高集成

度、开发工具支持

广泛

生产该内核的芯片厂商授权给数百家半导体厂

商生产

PMC和IDT Motorola公司Motorola公司

主要应用无线局域网、3G、手机

终端、手持设备、有线

网络通信设备

高端路由器

中兴通信、华为等通信

产品

工业控制、机器人

研究、家电控制等

领域

2.外围设备

外围设备是指嵌入式系统中用于完成存储、通信、调试、显示等辅助功能的其他部件。目前常用的嵌入式外围设备按功能可以分为:存储设备(如RAM、SRAM、Flash等)、通信设备(如RS-232接口、SPI接口、以太网接口等)和显示设备(如显示屏等)。

常见的存储设备有RAM、SRAM、ROM、Flash等,这些存储设备在嵌入式系统开发过程中是非常重要的。

(1)RAM、SRAM、DRAM

根据掉电数据是否丢失,存储器可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。人们通常所说的内存即指系统中的RAM。

RAM又可分为SRAM(静态存储器)和DRAM(动态存储器)。

SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的。

DRAM是利用MOS(金属氧化物半导体)电容存储电荷来储存信息的,因此必须通过不停地给电容充电来维持信息。DRAM的成本、集成度、功耗等明显优于SRAM。

通常人们所说的SDRAM是DRAM的一种,它是同步动态存储器,利用单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM不但能提高系统表现,还能简化设计、提供高速的数据传输,在嵌入式系统中经常使用。

(2)ROM、Flash

Flash是一种非易失闪存技术,由于它具有和ROM一样掉电数据不会丢失的特性。Flash 主要分为NOR Flash和NAND Flash两种。

NOR Flash的特点是在芯片内执行(Execute In Place),这样应用程序可以直接在Flash 内运行,不必再把代码读到系统RAM中。

NAND Flash能提供极高的单元密度,可以达到高存储密度,NAND读和写操作采用512字节的块,单元尺寸几乎是NOR器件的一半,同时由于生产过程很简单,大大降低了生产的成本。NAND Flash中每个块的最大擦写次数是100万次,是NOR Flash的10倍,这些都

推荐课程—嵌入式linux应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

使得NAND Flash越来越受收到人们的喜爱。

它们之间的关系如图1.4所示。

图1.4 不同存储器分类关系图

1.2.2 嵌入式操作系统

1.嵌入式Linux

嵌入式Linux(Embedded Linux)是标准Linux经过小型化裁剪处理之后的专用Linux操作系统,能够固化于容量只有几KB或者几MB的存储器芯片或者单片机中,适合于特定嵌入式应用场合。目前已经开发成功的嵌入式系统中,大约一半的系统使用嵌入式Linux。

这与它的父辈——Linux自身的优良特性是分不开的。

首先,Linux系统具有鲜明的层次结构且内核完全开放。Linux由很多体积小且性能高的微内核和系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要很容易地对内核进行裁剪,在低成本的前提下,设计和开发出真正满足自己需要的嵌入式系统。

其次,Linux具有强大的网络支持功能。Linux诞生于因特网并具有UNIX的特性,这就保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈开发出嵌入式TCP/IP 网络协议栈。

再次,Linux具备一套完整的工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一般,嵌入式操作系统的程序调试和跟踪都是使用仿真器来实现的,而使用Linux系统做原型的时候就可以绕过这个障碍,直接使用内核调试器来进行操作系统的内核调试。

最后,Linux具有广泛的硬件支持特性。无论是RISC还是CISC,无论是32位还是64位处理器,Linux都能在其上运行。Linux最通常使用的微处理器是Intel X86芯片家族,但它也能运行于嵌入式处理器上,这意味着嵌入式Linux将具有更广泛的应用前景。

嵌入式Linux同Linux一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适合嵌入式领域的开发,嵌入式Linux还在Linux基础上做了部分改进,如将其内核结构由整体式结构改为微内核结构,并且还提高了系统的实时性。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

嵌入式Linux同Linux一样,也有众多的版本,不同的版本针对不同的需要在内核等方面加入了特定的机制,嵌入式Linux的主要版本如表1.3所示。

表1.3 嵌入式Linux主要版本

制采用优先级抢占和轮转调度机制,充分保证了可靠的实时性。

?可靠性高,从而保证了用户工作环境的稳定。

?集成开发环境完备、强大,方便了用户的使用。

但是,由于VxWorks源码不公开,它部分功能的更新(如网络功能模块)滞后。VxWorks 的开发和使用都需要交高额的专利费,这就大大增加了用户开发的成本。

3.QNX

QNX由加拿大QNX软件系统有限公司开发,广泛应用于自动化、控制、机器人科学、电信、数据通信、航空航天、计算机网络系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务关键型应用领域。

QNX独特的微内核和消息传递结构使其运行和开发时非常方便。QNX具有非常好的伸缩性,用户可以把应用程序代码和QNX内核直接编译在一起,使之为简单的嵌入式应用生成单一的映象。

推荐课程—嵌入式linux应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

4.Windows CE

Windows CE是微软公司开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。Windows CE的图形用户界面相当出色,Windows CE具有模块化、结构化、基于Win32应用程序接口以及与处理器无关等特点。

Windows CE继承了传统的Windows图形界面,用户在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等),使用同样的函数,使用同样的界面风格,Windows上的绝大多数应用软件只需简单修改和移植就可以在Windows CE平台上继续使用。但是Windows CE开发平台较为昂贵,在一定程度上限制了其发展。

5.Palm OS

Palm OS在PDA领域有着很大的用户群,一度占领PDA操作系统90%以上市场份额。Plam OS最明显的特点是精简,它的内核只有几千个字节,同时用户也可以方便地开发、定制,具有较强的可操作性。

6.μC/OS

源代码公开,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,系统短小精悍,是研究和学习实时操作系统的首选,但在工程应用领域使用较少。

1.2.3 嵌入式应用软件

嵌入式系统上的应用软件与通用操作系统上的应用软件相比有较大的区别,这也是由嵌入式的特殊要求所决定的,其特点如下所示。

1.嵌入式软件具有独特的实用性

嵌入式软件是为嵌入式系统服务的,这就要求它与外部硬件和设备联系紧密。嵌入式系统以应用为中心;而嵌入式软件则是应用系统,根据应用需求定向开发,面向产业、面向市场,需要特定的行业经验。每种嵌入式软件都有自己独特的应用环境和实用价值。

2.嵌入式软件具有灵活性和适用性

嵌入式软件通常可以认为是一种模块化软件,它能够非常方便、灵活地运用到各种嵌入式系统中,而不破坏或更改原有的系统特性和功能。

3.嵌入式软件资源有限性

由于嵌入式系统资源受限,因此对在其上的应用软件也有较高的要求,不仅要求小巧、不占用大量资源,而且要使用灵活、尽量优化配置,减小对系统的整体继承性,升级更换灵活方便。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

推荐课程—嵌入式linux 应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

1.3 ARM 处理器平台介绍

1.3.1 ARM 处理器简介

ARM (Advanced RISC Machines ),既可以认为是一个公司的名字,也可以认为是一类微处理器的通称,还可以认为是一种技术的名字。

1991年ARM 公司成立于英国剑桥(公司原貌如图1.5所示),主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP )核的微处理器,即人们通常所说的ARM 微处理器,已经遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32位

RISC 微处理器75%以上的市场份额,ARM 技术正在逐步渗入到人们生活的各个方面。

图1.5 ARM 公司原貌

ARM 公司是专门从事基于RISC 技术的芯片设计开发公司,作为知识产权供应商,ARM 公司不直接从事芯片生产,而是转让设计许可,由合作公司生产各具特色的芯片。世界各大半导体生产商从ARM 公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,形成自己的ARM 微处理器芯片进入市场。

目前,全世界有几十家大的半导体公司都使用ARM 公司的授权,这样既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场,被消费者所接受,更具有竞争力。

图1.6列出了采用ARM 微处理器的部分公司名称。

目前,ARM 微处理器及技术的应用已经深入到以下各个领域。

? 工业控制领域:作为32位的RISC 架构,基于ARM 核的微控制器芯片已经占据了高端微控制器市场的大部分市场份额,正在逐渐向低端微控制器应用领域扩展,ARM 微控制器的低功耗、高性价比向传统的8位/16位微控制器提出了挑战。

? 无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM 技术,ARM 以其高性能和低成本,在该领域的地位日益巩固。

图1.6 采用ARM微处理器的部分公司

?网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,这也对DSP的应用领域提出了挑战。

?消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛应用。

?成像和安全产品:现在流行的数码相机和打印机绝大部分都采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。

ARM的成功,一方面得益于它独特的公司运作模式,另一方面,当然来自于ARM处理器自身的优良性能,ARM处理器有如下特点。

?体积小、低功耗、低成本、高性能。

?支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件。

?大量使用寄存器,指令执行速度更快。

?大多数数据操作都在寄存器中完成。

?寻址方式灵活、简单,执行效率高。

?指令长度固定。

1.3.2 ARM处理器系列

ARM微处理器目前包括下面几个系列,图1.7所示为ARM各系列的发展历程。

?ARM7系列。

?ARM9系列。

?ARM9E系列。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

推荐课程—嵌入式linux 应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

? ARM10E 系列。

? SecurCore 系列。

?

Intel 的Xscale 系列。

? Intel 的StrongARM 系列。

图1.7 ARM 各系列发展历程

其中,ARM7、ARM9、ARM9E 和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore 系列专门为对安全性要求较高的应用而设计。下面详细介绍各种处理器的特点及其应用领域。

1.ARM7微处理器系列

ARM7系列微处理器为低功耗的32位RISC 处理器,最适合用于对价格和功耗要求较高的消费类应用,ARM7微处理器系列具有如下特点。

? 具有嵌入式ICE -RT 逻辑,调试、开发方便。

? 极低的功耗,适合对功耗要求较高的应用,如便携式产品。

? 能够提供0.9 MIPS/MHz 的3级流水线结构。

? 代码密度高并兼容16位的Thumb 指令集。

? 对操作系统的支持广泛,包括Windows CE 、Linux 、Palm OS 等。

? 指令系统与ARM9系列、ARM9E 系列和ARM10E 系列兼容,便于用户的产品升级换代。

? 主频最高可达130MIPS ,高速的运算处理能力能胜任绝大多数的复杂应用。

ARM7系列微处理器的主要应用领域为:工业控制、Internet 设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。

ARM7系列微处理器包括如下几种类型的核:ARM7TDMI 、ARM7TDMI-S 、ARM720T 、ARM7EJ 。其中,ARM7TMDI 是目前使用最广泛的32位嵌入式RISC 处理器,属低端ARM 处理器核。

小知识 这里的TDMI 的基本含义如下。

T :支持16为压缩指令集Thumb 。

D :支持片上Debug 。

M :内嵌硬件乘法器(Multiplier )。

I:嵌入式ICE,支持片上断点和调试点。

2.ARM9及ARM9E微处理器系列

ARM9是本书所采用的微处理器,ARM9处理器包括ARM920T、ARM922T和ARM940T,主要应用于手持设备、视频电话、PDA、机顶盒、家用网关等产品中。与ARM7处理器相比,ARM9处理器有以下特点。

(1)5级流水线

ARM7处理器采用取指、译码、执行的3级流水线设计,而ARM9则采用取指、译码、执行、缓冲、回写的5级流水线设计。使用5级流水线机制,每一个时钟周期内可以同时执行5条指令,这样就大大提高了处理性能。在同样的加工工艺下,ARM9处理器的时钟频率是ARM7的1.8~2.2倍。

5级流水线的具体内容如下。

?取指:从存储器中取出指令并将其放入指令流水线。

?译码:对取出的指令进行译码。

?执行:把一个操作数移位,产生ALU的结果。

?缓冲:如果需要则访问数据存储器,否则ALU的结果只是简单地缓冲一个时钟周期,以便所有的指令具有相同的流水线流程。

?回写:将指令产生的结果回写到寄存器堆,包括从存储器取出的数据。

(2)采用哈佛结构

根据计算机的存储器结构及其总线连接形式,计算机系统可以分为冯·诺依曼结构和哈佛结构。

冯·诺依曼结构具有共用的数据存储空间和程序存储空间,它们共享存储器总线,这也是以往设计时常用的方式。

哈佛结构则具有分离的数据和程序空间以及分离的访问总线。哈佛结构在指令执行时,取指和取数可以并行,因此具有更高的执行效率。

ARM9采用的就是哈佛结构,而ARM7采用的则是冯·诺依曼结构。图1.8和图1.9分别为冯·诺依曼结构和哈佛结构的数据存储方式。

图1.8 冯·诺依曼结构图1.9 哈佛结构

在RISC架构的处理器中大约有30%的指令是Load-Store指令,而采用哈佛结构将大大提升这两个指令的执行速度,提高系统效率。

(3)引入高速缓存和写缓存

一般来说处理器的处理速度远远高于存储器的访问速度,而当存储器访问成为系统性能的瓶颈时,处理器再快也无法发挥作用。

在这里,高速缓存(Cache)和写缓存(Write Buffer)可以很好地解决这个问题,它们

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

存储了最近常用的代码和数据,以供CPU快速存储。

(4)支持MMU

MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。

MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。

MMU的主要功能如下。

?将虚地址转换成物理地址。

?控制存储器存取允许,MMU关掉时,虚地址直接输出到物理地址总线。

每当程序存取一块内存时,它会把相应的虚拟地址(virtual address)传送给MMU,MMU 会在PMM中查找这块内存的实际位置,也就是物理地址(physical address),物理地址可以在内存中或磁盘上的任何位置。

如果程序要存取的位置在磁盘上,就必须把包含该地址的页从磁盘上读到内存中,并且必须更新PMM以反映这个变化(这被称为pagefault,即页错)。

只有拥有了MMU才能真正实现内存保护。

例如,当A进程的程序试图直接访问属于B进程的虚拟地址中的数据时,MMU会产生一个异常(Exception)来阻止A的越界操作。这样,通过内存保护,一个进程的失败并不会

影响其他进程的运行,从而增强了系统的稳定性,如图1.10所示。ARM9

也正是因为拥有

MMU,才比ARM7有了更强的稳定性和可靠性。

图1.10 内存保护示意图

3.ARM10E微处理器系列

ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。

ARM10E系列微处理器的主要特点如下。

?支持DSP指令集,适合于需要高速数字信号处理的场合。

?6级流水线,指令执行效率更高。

?支持32位ARM指令集和16位Thumb指令集。

?支持32位的高速AMBA总线接口。

?支持VFP10浮点处理协处理器。

?全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。

推荐课程—嵌入式linux应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

?支持数据Cache和指令Cache,具有更高的指令处理和数据处理能力。

?主频最高可达400MIPS。

?内嵌并行读/写操作部件。

ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。

ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S,适用于不同的应用场合。

4.SecurCore微处理器系列

SecurCore系列微处理器专为安全需求而设计,提供了完善的32位RISC技术的安全解决方案,因此,SecurCore系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了安全解决方案的支持。

SecurCore系列微处理器除了具有ARM体系结构主要特点外,还在系统安全方面具有如下的特点。

?带有灵活的保护单元,以确保操作系统和应用数据的安全。

?采用软内核技术,防止外部对其进行扫描探测。

?可集成用户自己的安全特性和其他协处理器。

SecurCore系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。

SecurCore系列微处理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210,适用于不同的应用场合。

5.StrongARM微处理器系列

Intel StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。Intel StrongARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。

6.Xscale微处理器系列

Xscale 处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。

1.3.3 ARM体系结构简介

1.ARM微处理器工作状态

ARM微处理器的工作状态一般有两种,可以在两种状态之间切换。

?第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令。

?第二种为Thumb状态,此时处理器执行16位的半字对齐的Thumb指令。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。

在程序的执行过程中,微处理器可以随时在两种工作状态之间进行切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

2.ARM体系结构的存储格式

ARM体系结构将存储器看作是从0地址开始的字节的线性组合。从0字节到3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。

ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式,具体说明如下。

?大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

?小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

3.ARM处理器模式

ARM微处理器支持以下7种运行模式。

?用户模式(usr):ARM处理器正常的程序执行状态。

?快速中断模式(fiq):用于高速数据传输或通道处理。

?外部中断模式(irq):用于通用的中断处理。

?管理模式(svc):操作系统使用的保护模式。

?数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。

?系统模式(sys):运行具有特权的操作系统任务。

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。

大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。

除用户模式以外,其余的6种模式为非用户模式或特权模式(Privileged Modes)。其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

1.3.4 S3C2410处理器简介

本书所采用的处理器是三星公司的S3C2410X。S3C2410X是使用ARM920T核、采用0.18μm工艺CMOS标准宏单元和存储编译器开发而成的。

由于采用了由ARM公司设计的16/32位ARM920T RISC处理器,S3C2410X实现了MMU 和独立的16KB指令和16KB数据哈佛结构的缓存,每个缓存均为8个字长度的流水线。它的低功耗、精简而出色的全静态设计特别适用于对成本和功耗敏感的领域。

推荐课程—嵌入式linux应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

S3C2410X提供全面的、通用的片上外设,大大降低系统的成本,下面列举了S3C2410X 的主要片上功能。

? 1.8V ARM920T内核供电,1.8V/2.5V/3.3V存储器供电。

?16KB指令和16KB数据缓存的MMU内存管理单元。

?外部存储器控制(SDRAM控制和芯片选择逻辑)。

?提供LCD控制器(最大支持4K色的STN或256K色TFT的LCD),并带有1个通道的LCD专用DMA控制器。

?提供4通道DMA,具有外部请求引脚。

?提供3通道UART(支持IrDA1.0、16字节发送FIFO及16字节接收FIFO)、2通道SPI接口。

?提供1个通道多主I2C总线控制器和1通道IIS总线控制器。

?兼容SD主机接口1.0版及MMC卡协议2.11版。

?提供两个主机接口的USB口、1个设备USB口(1.1版本)。

?4通道PWM定时器、1通道内部计时器。

?提供看门狗定时器。

?提供117个通用I/O口、4通道外部中断源。

?提供电源控制不同模式:正常、慢速、空闲及电源关闭模式。

?提供带触摸屏接口的8通道10位ADC。

?提供带日历功能的实时时钟控制器(RTC)。

?具有PLL的片上时钟发生器。

图1.11所示为S3C2410X系统结构图。

下面依次对S3C2410X的系统管理器、NAND Flash引导装载器、缓冲存储器、时钟和电源管理及中断控制进行讲解,其中所有模式的选择都是通过相关寄存器的特定值的设定来实现的,因此,当读者需要对此进行修改时,请参阅三星公司提供S3C2410X用户手册。

1.系统管理器

S3C2410X系统管理器有以下功能。

?支持小/大端模式。

?寻址空间:每个bank有128MB。

?支持可编程的每个bank 8/16/32位数据总线宽度。

?bank0~bank6都采用固定的bank起始寻址。

?bank7具有可编程的bank起始地址和大小。

?8个存储器bank(6个适用于ROM、SRAM,另两个适用于ROM、SRAM和同步)。

?所有的bank都具有可编程的操作周期。

?支持外部等待信号延长总线。

2.Flash引导装载器

S3C2410X NAND Flash存储器启动特性如下所示。

:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

推荐课程—嵌入式linux 应用开发班:https://www.wendangku.net/doc/6d6317843.html,/courses/TS-LinuxApp.htm

? 支持从NAND Flash 存储器启动。

? 采用4KB 内部缓冲器进行

启动引导

?

支持

启动之后NAND 存储

仍然作为

部存储

器使

用。

图1.11 S3C2410X 系统结构图

相关文档