计算机三级嵌入式系统

1KB=2^10=1024

1MB=2^20=1024×1024

       并行总线和串行总线的概念:并行8位数据和8位地址通过8根数据线和8根地址线一次性传输。串行总线通过1根地址线和1根数据线,一次传输一位,传送8次。

       比特率和波特率的区别:在信息传输通道中,携带数据信息的信号单元叫码元(因为串口是 1bit进行传输的,所以其码元就是代表一个二进制数),每秒钟通过信号传输的码元数称为码元
的传输速率,简称波特率,常用符号“Baud”表示,其单位为“波特每秒(Bps)”。而并行通信中是n个bit位一块传送,也就是一个码元。

       异步通信和同步通信的区别:异步通信就是上一个字符传输结束到下一个字符传输开始中间的空闲时间是不固定的,但每个字符中的二进制位的时间是固定的。

1.1 电子文本

1.1.1 字符集及其编码

西文编码

       西文字符集及其编码最广泛的是ASCII字符集和ASCII码,基本的ASCII字符集共有128个字符,包括96个可打印字符。每个字符使用7位二进制进行编码,虽然标准ASCII码7位编码,但计算机中最基本的存储和处理单位是字节,故一般仍使用一个字节来存放一个ASCII码,多出来的一位(最高位)在计算机内部通常保持为“0”,数据传输时有时也用作奇偶校验位。

汉字编码

       我国目前广泛使用汉字编码国标有GB2312和GB18030,其中GB2312是早期也是常用汉字编码,GB2312由3755个一级常用汉字、3008个二级常用汉字和682个图形符号(拉丁字母、俄文等)组成,这些汉字和图形符号占2B大小,每字节的最高位规定为1。

       GB18030字符集与国际标准UCS/Unicode字符集基本兼容,包含世界各国当前使用的90套书写符号,其中汉字7万多个(称为CJK汉字,指中国大陆及中国台湾、香港、澳门地区,以及日本、韩国等国使用的几乎所有汉字)。GB18030采用不等长的编码方法,双字节表示汉字,与GB2312保持兼容(GB2312中包含的所有字符,GB18030也有,且编码相同)。

       UTF-8采用3字节表示汉字。

       UTF-16使用双字节表示汉字。

UCS/Unicode编码

       国际标准UCS/Unicode在计算机中具体实现时可以采用不同编码方案,最常用的有两种:UTF-8和UTF-16。

       UTF-16采用双字节可变长编码。

1.1.2 文本类型

超文本

       传统的纸质文本的内容组织是线性(顺序)的,通常总是按顺序先读第1页,再读第2页,…。这是线性文本。

       超文本概念是对传统文本的扩展,它采用网状结构来组织信息,文本中的各个部分按照其内容得到逻辑关系互相链接。WWW网页就是典型的超文本结构,每个网页中都包含了指向其他网页的超链。超链是有向的,起点位置称为涟源,

1.1.3 文本制作与展现

       以文本编辑和排版为主要功能的软件称为文字处理软件,如金山(WPS)、Microsoft Word、OpenOffice Writer、Adobe Acrobat等。

       PDF将文字、字形、颜色、排版格式、图形、图像、超链、声音和视频等信息都封装在一个文件中,既适合网络传输,也适合印刷出版。

       字符的形状有点阵法和轮廓法。

1.我国大陆地区目前广泛适用的汉字编码国家标准有___和GB18030两种,常用汉字采用___个字节表示。

       【答案】GB2312、2

2.文字信息是人们用以表达和传递信息的媒体之一,大多数嵌入式系统都必须处理文字信息。下面关于文字信息的表示及其处理的叙述中,错误的是(  )。

(A)目前使用最广泛的西文字符集是ASCII字符集,它包含96个可打印字符

(B)GB2312是我国目前最广泛使用的汉字编码国家标准之一

(C)GB2312包括6000多汉字,但不包含西文、俄文等其他字符

(D)GB2312字符集中的汉字与符号在系统中采用双字节表示

       【答案】(C)

3.下列关于字符集及其编码的描述中,正确的是(  )。

(A)GB2312编码的汉字和图形符号在计算机内部都采用2字节表示,每字节的最高位均规定为0

(B)标准ASCII码是8位编码

(C)GB18030采用等长编码

(D)UTF-16是UCS/Unicode常用的编码方案之一

       【答案】(D) 

4.汉字有多种不同的编码标准,下面关于不同编码标准之间关系的叙述中,错误的是(  )

(A)GB2312中所有字符在GB18030中也都存在,且编码相同

(B)GB18030与UCS/Unicode均包含中日韩统一汉字(CJK)约7万多个

(C)GB18030中的汉字与UCS/Unicode中的汉字编码保持相同

(D)UTF-18和UTF-16是实现UCS/Unicode的两种不同的编码方案

       【解析】只是说GB18030与UCS/Unicode基本兼容,在汉字编码方面采用字节数完全不同。

       【答案】(C) 

5.电子书阅读器中存储的一本中文长篇小说,大小为128KB,文件格式为.txt,试问该小说包含的汉字大约有(  )

(A)6万字

(B)12万字(C)25万字(D)40万字

       【解析】128KB/2B=128×1024B/2B=65536。

       【答案】(A)

1.1 数字图像

       图像获取过程的核心是模拟信号的数字化,处理步骤分为4步:(1)扫描;(2)分色,将每个取样点的颜色分解成3基色,灰度或黑白图像,不必分色;(3)取样,测量取样点的每个分量的亮度值;(4)量化,亮度值进行A/D转换。

       一幅图像由M(列)×N(行)个取样点组成,每个取样点是组成图像的基本单位,称为像素。图像大小(图像分辨率),用水平分辨率×垂直分辨率表示。像素深度,指每像素用多少位二进制表示,是像素的所有颜色分量的二进制位数之和。

       颜色模型指彩色图像所使用的颜色描述方法。通常,显示器使用的RGB模型。

       数据压缩分为有损压缩和无损压缩。

常见的图像格式
名称典型应用
GIF目前互联网上广泛使用的一种图像文件格式,颜色数目较少(不超过256色),文件特别小,适合互联网传输
jpeg静止图像数据压缩编码的国际标准,特别适合处理各种连续色调的彩色或灰度图像,算法复杂度适中,目前已在互联网和数码相机中得到广泛应用

1.目前数码相机中用于存储所拍摄相片的大多是___存储器,假设一台数码相机一次可连续拍摄65536色的1024×1024的彩色相片80张,数据压缩比平均是4,则它使用的存储器容量大约是___MB。

       【解析】“xxxx色”就是像素深度能表示的最大十进制值,65536是16位二进制最大能表示的。图像共有1024×1024=1049576个像素色块,每一个色块需要16位二进制表示,共需要1049576×16=16793216位二进制去表示一张图片,换算成字节,1049576×2=2099152B,1MB=2^20B=1024×1024,因此换算成Byte,就是1024×1024×2=2MB。共有80张,160MB。经过4:1的压缩后,40MB。

       【答案】、40

2.假设数码相机使用的存储卡容量是2GB,数据压缩比平均是4,那么它一次可连续拍摄1600万色(真彩色)的4096×3072分辨率的彩色相片大约多少张?(  )

(A)50

(B)100(C)200(D)400

       【解析】2^{x}\neq 16000000,但2^{23}< 16000000< 2^{24},也就是说,想体现出1600万色的相片,至少需要24位二进制数,24×1024×4×1024×3b=36MB,经过压缩比,每张相片是9MB,2GB可存储227张。

       【答案】(C) 

3.显示器通常使用的由三基色组成的颜色模型为___模型。如果3个颜色分量中的像素位数分别为6位、6位、和4位,则该图像的像素深度为___。

       【答案】RGB、16

3.数字图像的文件格式有多种,不同的文件格式采用不同的编码方法,具有不同的特点,适合不同的应用。其中___图像文件格式颜色数目较少(不超过256色),文件特别小,支持动画,适合互联网传输。___图像文件格式是静止图像数据压缩编码的国际标准,它在数码相机和互联网中得到广泛使用。

       【答案】GIF、JPEG

1.3 数字音频与数字视频

1.3.1 音频/视频信息的数字化

音视频的数字化过程

       取样:

       量化:每个样本的模拟转换成数字量,A/D转换

       编码:将量化的数据进行压缩

1.3.2 数字音频常用文件格式及其应用

       数字音频的主要参数包括取样频率、量化位数、声道数目、使用的压缩编码方法以及比特率。比特率也称码率,它指的是每秒钟的数据量。数字音频未压缩前,码率的计算公式为

波形声音的码率=取样频率×量化位数×声道数(单位:b/s)

压缩编码以后的码率则为压缩前的码率除以压缩码率(压缩比)。

数字音频的文件格式
音频格式文件扩展名
WAV.wav

       MP3是互联网上最流行的数字音乐格式,采用国际标准化组织提出的MPEG-1层Ⅲ算法进行有损的压缩编码。

视频压缩国际标准
名称主要应用
MPEG-2用途最广,如DVD、数字卫星电视转播、数字有线电视

1.数字视频信息的数据量相当大,通常需要进行压缩处理之后才进行传输和存储。目前数字有线电视所传输的数字视频采用的压缩编码标准是(  )

(A)MPEG-1

(B)MPEG-2(C)MPEG-4(D)MPEG-7

       【答案】(B)

2.数字音频的比特率(码率)指的是每秒钟的数据量,它与取样频率、量化位数、声道数目、使用的压缩编码方法等密切相关。假设数字音频的比特率为8kB/s,其取样频率是8kHz,单声道,未压缩,那么它的量化位数是(  )

(A)24位

(B)16位(C)8位(D)4位

       【解析】根据数字音频的公式,已知码率、声道数和取样频率可以直接求量化位数。

       【答案】(C)

3.MP3播放器属于嵌入式系统的应用之一,下面有关叙述中错误的是(  )

(A)MP3是互联网上流行的一种数字音乐格式

(B)MP3采用MPEG-3算法对数字音频进行压缩编码
(C)MP3播放器必须具有对MP3格式音频文件解码的功能
(D)MP3音频文件的文件扩展名是.mp3

       【答案】(B)

1.4 数字通信

1.4.1 无线

       无线通信(传输)借助自由空间的电磁波传播信息,可省去线路的架设但电波通过自由空间时能量较分散,传输效率低。无线电波按频率(或波长)分成中波、短波、超短波和微波等波段。由于不同的波段电磁波的传播特性各异,因此可应用于不同的通信系统。例如,中波主要沿地面传播,绕射能力强,适用于广播和海上通信。短波具有较强的电离层反射能力,适用于环球通信。微波的绕射能力差,作为视距或超视距中继通信。

1.4.2 数字通信的传输技术

       (2)多路复用技术

       为提高传输线路的利用率,降低通信成本,一般总是让多路信号同时共用一条传输线进行传输。多路复用技术有两类,一种是分时多路复用,一种是频分多路复用。

1.1 计算机网络

1.1.1 以太局域网

       局域网采用分组交换技术进行信息传递,发送设备把传输的数据分成小块(称为帧),一次只能传输1帧。

局域网中传输的数据帧的格式

发送设备

MAC地址

接收设备

MAC地址

控制信息有效载荷(传输的数据)校验信息

       最简单的以太网结构以集线器或以太网交换机为中心构成。早期比较流行的是使用集线器组成的以太网,也称为总线式以太网或共享式以太网。集线器起着中继器的作用,把一个端口收到的信号以广播方式向其他所有端口分发出去。

       局域网按使用的传输介质,分为有线网和无线网;按网络终端设备互联的拓扑结构,分为星型网、环型网、总线型网、混合型网。

       (1)以太网

       (4)WLAN——无线局域网,是以太网与无线通信技术相结合的产物,借助无线电波进行数据传输。采用IEEE 802.11标准。

IEEE 802标准

       IEEE 802系列是IEEE 802 LAN/MAN标准委员会指定的局域网、城域网技术标准,系列中的每一个子标准都由委员会中的一个专门工作组负责。

1.以太网中计算机间以帧为单位进行通信,下列选项中不属于以太网数据帧内容的是(  )

(A)IP地址

(B)MAC地址(C)有效载荷(D)校验信息

       【解析】勿与IP数据报相混淆

       【答案】(A) 

1.1.1 WLAN

1.无线局域网(WLAN)是以以太网与无线通信技术相结合的产物。它借助无线电波进行数据传输,所采用的通信协议主要是___,数据传输速率可以达到11MBPS、54Mbps、___Mbps甚至更高。

       【答案】IEEE 802.11、108

2.无线局域网采用的通信协议主要是802.11,通常也称为___,为了满足传输语音、数据、图像等的需要,目前使用的802.11n协议其数据传输速率可达___Mbps甚至更高,相应的产品已经广泛使用。

       【答案】WIFI、108

1.2 互联网

       IP地址由全世界唯一的32bit/4Byte组成的网络号和主机号标识,标识路由器或主机的接口。

1.2.1 IP地址的分类

右上角应是31

       不同的网络差异比较大,有的网络主机少,有的主机多,将IP地址进行分类,可以满足更多用户需求。依靠网络号前1、2、3、4位来分类,并且A类的网络号占1B,B类网络号占2B。D类地址是多播地址,在1对多通信才会使用。

       为了避免主机域名重复,互联网将全部域名组成的名字空间划分为若干不同的子域,每个子域又分为多个子域。所有入网主机的域名即由一些系列的子域组成,子域的个数不超过5个,相互之间用“.”分隔,从左到右级别逐级升高。

1.2.2 IP数据报

       互联的各个物理网络,它们使用的数据包(或帧)的格式可能互不兼容。为了克服这种异构性,IP协议定义了一种独立于各种物理网的数据包的格式,称为IP数据报。IP数据报由两部分组成:头部和数据区。

IP数据报格式

       头部中总长度表示的是整个数据报的大小,单位为字节。16位二进制最大可表示的十进制65535,那么整个IP数据报理论上最长能达到65535字节。

        数据区的长度可以根据应用而改变,最大可达到64KB(包括头部信息在内)。

1.在计算机网络中,所有主机适用一种统一格式的地址,简称为___;为了避免主机域名的重复,互联网将全部域名组成的名字空间划分为若干不同的子域,每个子域又分为多个子域,所有入网主机的域名即由一系列的子域组成,子域的个数据不超过___个,相互之间用“.”分隔从左到右级别逐级提高。

       【答案】IP地址、5。

2.下面是IP协议中A类IP地址有关规定的叙述,其中正确的是(  )

(A)它适用于中型网络

(B)它适用的网络最多只能连接65534台主机
(C)它不能用于多目的地址发送(组播)(D)它的二进制表示中最高位一定是“0”

       【解析】65535是2的16次方,A类网络有24位的主机号。

       【答案】(D) 

2.下面是IP协议中C类IP地址有关规定的叙述,其中正确的是(  )。

(A)它适用于中型网络

(B)它所在的网络最多只能连接254台主机

(C)它不能用于多目的地址发送(组播)

(D)它的二进制表示中最高3位一定是”101“

       【解析】

       【答案】(B)

3.在IPv4的数据报格式中,由两个部分组成,一部分是头部,另一部分是___;根据头部规定的数据报总长度表示限制,数据报长度最多____字节。

       【解析】

       【答案】数据区、

第二章 嵌入式处理器

2.1 嵌入式系统的共同特点

       (1)专用性

       (2)隐蔽性

                嵌入式系统通常总是非计算机设备(系统)中的一个部分,它们隐藏在其内部,不为人知;例如,ATM、数码相机。

       (3)资源受限

                软硬件资源受到严格限制。

       (4)高可靠性

       (5)实时性

       (6)软件固化

                软件放在ROM中,将其固化,不希望人为进行改动。

2.2 嵌入式系统的组成

       与通用计算机一样,是由软件和硬件组成。硬件主体中央处理器存储器,它们通过I/O接口和输入/输出设备与外部世界联系,并借助总线相互连接,这些硬件连同嵌入式软件一起构成了完整的嵌入式系统。

嵌入式系统的逻辑组成

2.3 嵌入式系统中的处理器分类

       中央处理器(CPU)

       协处理器:DSP、图形处理器、通信处理器

2.4 嵌入式系统分类

       按照嵌入式系统的软硬件技术复杂程度进行分类,可以把嵌入式系统分为低、中、高端系统。

不同类型嵌入式系统的比较
类型硬件特征软件特征应用举例
低端系统采用4位/8位单片机不使用操作系统,由监控程序对系统进行控制在工业控制和白色家电领域占主导地位

2.4 四种嵌入式处理器类型

(1)微处理器

       微处理器应用于嵌入式产品(系统)时,除处理器芯片之外,还需外接RAM、ROM、总线、I/O接口、小键盘、发光二极管等多种器件,由于都安装在一块电路板上,习惯上称为单板计算机(单板机)。典型的微处理器产品主要有x86等系列。

(2)MCU——微控制器(单片机)

       微控制器将整个计算机硬件的大部分甚至全部电路集成在一块芯片中。除CPU外,芯片内还继承了ROM/EEPROM、RAM、总线、定时/计数器、看门狗定时器、I/O接口、A/D、D/A、网络通信口等各种必要的功能部件和外设接口。与微处理器不同,它只需要很少一些外接电路(如一个时钟发生器和必要的RAM和ROM)就可以独立工作。

(3)SoC——片上系统

       集成电路是在硅衬底上制作而成的,集成电路的工作速度取决于组成逻辑门电路的晶体管的尺寸,尺寸越小,其极限工作频率越高

       SoC将计算机或其他电子系统集成在单个芯片中。尽管MCU也是一种单芯片的计算机,但通常它只是一种简易的、功能弱化的单片系统。而SoC常用来指功能更加强大的嵌入式处理芯片,可运行Windows和Linux之类的台式机操作系统。目前,大多数高端嵌入式系统均采用SoC。

       SoC芯片分为通用SoC和专用SoC

(4)DSP——数字信号处理器

       哈佛结构与冯·诺伊曼结构相比,特点:使用两个独立的存储器分别存储指令和数据,不允许指令和数据并存。哈佛结构的处理器其程序和数据分开组织与存储,执行时可同时进行指令和数据的存取,因而具有较高的执行效率。DSP是一种转用于数字信号处理的维处理器,它对通用处理器的逻辑结构和指令系统进行了优化设计,使之能更好地满足高速数字信号处理的需求。哈佛结构执行效率高,许多DSP都使用哈佛结构,在指令系统中增加单指令多数据(Single Instruction Multiple Data,SIMD)并行处理的特殊指令等,使之特别适合于FFT等常用数字信号处理算法。

       SIMD对比单指令单数据的概念,就类似于,采用MATLAB使用矩阵进行乘法运算和采用2*2=4这种方式进行乘法计算的区别。

       手机、数码相机等以声音和图像处理为主要任务的嵌入式应用中,DSP有两种解决方法。一种是DSP经过单片化改造,在同一芯片中集成了数字基带、SRAM、射频等功能部件,成为专门的嵌入式DSP;另一种是通用微处理器中扩展DSP功能,或者在单片机(或SoC)中增加DSP协处理器内核。

2.2 嵌入式处理器分类

       按指令集分为:CISC与RISC

       按存储结构分为:冯.诺伊曼与哈佛

2.3 嵌入式处理器的结构类型

       指令集

       指令系统,它与程序设计密切相关,包括:基本数据类型、寄存器、寻址模式、指令、中断、异常处理以及外部I/O等,是设计处理器的主要依据,常常被称为指令集体系结构或IS架构(Instruction Set Architecture——ISA)。

       ARM处理器指令集的比较

       ARM指令集:

       Thumb指令集:从ARMv4T架构开始,几乎所有ARM处理器都支持Thumb指令集。Thumb全部是16位字长的指令集,可以看作是ARM指令的压缩形式。

       Thumb-2指令集:既有16位指令又有32指令,是一个混合的指令集,是16位Thumb指令集的超集,功能强大、完备、效率高。

2.4 典型ARM处理器介绍

ARM不同版本ISA架构的比较
版本名称推出时间ARM公司的处理器名称简要描述
ARMv11985

ARM1,商业使用

ARMv41996
ARMv62001ARM11系列ARM11系列是主流产品
ARMv7M2004Cortex-M3/M4,是嵌入式处理器处理器改变命名规律
ARMv7R2004Cortex-R4/R5/R7,是实时处理器
ARMv7A2004Cortex-A5/A7/A8/A9/A15/A17,是应用嵌入式处理器A系列处理器功能性强大,高端产品可应用到智能手机中
ARMv8A2011Cortex-A53/A57

       ARMv1、v2、v3架构已淘汰,ARM处理器把ARM7、ARM9、ARM11系列的处理器称为经典ARM处理器,此后的处理器都改成以Cortex处理器来进行命名,另还有专用于智能卡安全应用领域的ARM专家处理器。ARM处理器细分可分为五类:经典ARM处理器、ARM Cortex嵌入式处理器、ARM Cortex实时嵌入式处理器、ARM Cortex应用处理器以及ARM专家处理器。

经典ARM处理器

       经典ARM处理器目前主要有ARM7、ARM9、ARM11系列

ARM Cortex处理器

       (1)Cortex-A(Application)系列是面向高端应用的处理器,功能强大,性能好,这类被称为Cortex应用处理器,简称应用处理器。

                Cortex-A处理器系列适用于有高计算要求、需运行功能丰富的操作系统以及要求提供交互媒体和图形显示的应用领域。Cortex-A处理器中都集成了浮点运算器VFP,提供了高性能的单精度和双精度浮点运算;集成了多媒体处理引擎NEON,提供了对于高级SIMD指令的支持。
       (2)Cortex-R(Real Time)系列是面向实时控制应用的处理器,响应速度快,被称为ARM Cortex实时嵌入式处理器,简称实时嵌入式处理器。

       (3)Cortex-M(Microcontroller)系列是面向微控制器的处理器,被称为ARM Cortex嵌入式处理器,简称嵌入式处理器。

                Cortex-M包括Cortex-M0/M0+/M1/M3/M4。Cortex-M处理器只支持Thumb-2指令集的子集。

                Cortex-M3(CM3)将总线矩阵和嵌套向量中断控制器(Nested Vector Interrupt Controller,NVIC)与处理器核集成在一起,前者提供了3条AHB-Lite总线,分别用于连接指令存储器、数据存储器核作为系统总线。

                中断(或异常)是突发事件造成CPU中断当前程序,转而执行一段“中断服务程序,ISR”以解决突发事件。ISR也是程序,它还可能被中断(新产生的中断优先级要高于当前中断事件),这就是嵌套的意义,即“中断再被中断”。向量的含义在于,中断事件的号码会组成一个表,每个号码的会有一个优先级别,这个表也成为中断向量表。

                Cortex-M3处理器还可以选择性组装系统外围组件,如存储器保护单元(Memory Protection Unit,MPU)、唤醒中断控制器(Wake-up Interrupt Controller,WIC)等。

2.3 基于v4T~部分v7架构的ARM处理器体系结构(经典ARM处理器的架构)

2.3.1 ARM处理器的工作状态和工作模式

       ARM体系结构(除Cortex外)支持7种工作模式,取决于程序状态寄存器CPSR低5位的值。

ARM处理器的工作模式
工作模式功能说明CPSR[M4:M0]
用户模式User程序正常执行工作模式
快速中断模式FIQ处理高速中断,用于高速数据传输或通道处理

10001

外部中断模式IRQ用于普通中断10010
管理模式SVC操作系统的保护模式,处理软中断SW1
中止模式ABT处理存储器故障实现虚拟存储器和存储器保护
未定义指令模式UND处理未定义的指令陷阱,用于支持硬件协处理器仿真
系统模式SYS运行特权级的操作系统任务

2.3.2 ARM处理器的寄存器组织

       无论何种模式,R15均作为PC使用,且CPSR为当前状态寄存器。

       R13~R14在User模式和SYS模式分别为堆栈指针程序链接寄存器(Link Register——LR),其它模式下均有自己独特的标记方式,是专门用于特定模式的寄存器。

(2)状态寄存器

       状态寄存器共有6个,除了共用的当前程序状态寄存器CPSR外还有分组的备份程序状态寄存器SPSR(5组共5个)。

程序状态寄存器格式
313020282776543210
NZCV

Q

状态保留IFTM4M3M2M1M0

       条件码标志有4个,N、Z、C和V,含义:

       N——符号标志,N=1表示运算结果为负数,N=0表示正数;

       Z——全0标志,运算结果为0,Z=1,否则Z=0;

       C——进借位标志,加法有进位时C=1,无进位C=0;减法有借位时C=0,无借位时C=1。

       V——溢出标志,加减法运算结果有溢出时V=1,否则V=0;

       Q——增强的DSP运算指令是否溢出,溢出时Q=1,否则Q=0。

       控制位含义:

       I——中断禁止控制位,I=1禁止外部IRQ中断,I=0允许;

       F——禁止快速中断FIQ,F=1禁止FIQ中断,F=0允许;

       T——ARM与Thumb指令切换控制位,T=1时执行Thumb指令,否则执行ARM指令。

       M4~M0——模式选择位,决定处理器工作于何种模式。

2.3.3 ARM处理器的异常

       程序正常执行的过程中,每执行一条ARM指令PC值加4,每执行一条Thumb指令PC值加2,通常指令按顺序正常执行。

       除了Cortex外,所有ARM处理器异常分为7种,每种异常对应一个异常向量,每个异常向量占4字节,异常向量的地址也就是中断服务程序的入口地址。换句话说,ARM处理器将存储空间按字节编址,每个异常占4个字节,因此各异常向量之间相差4个字节。

经典ARM异常种类
异常类型优先级工作模式异常向量地址说明
复位REST10x00000000当RESET引脚有效时进入该异常
未定义的指令UND60x00000004协处理器认为当前指令未定义时产生指令异常。可利用它模拟协处理器操作
软件中断SWI60x00000008用户定义的中断指令,可用于用户模式下的程序调用特权操作
指令预取中止PABT50x0000000C当预取指令地址不存在或该地址不允许当前指令访问时,执行指令产生的异常
数据访问中止DABT2当数据访问指令的目标地址不存在或该地址不允许当前指令访问时,执行指令产生的异常
外部中断请求IRQ4有外部中断时发生的异常
快速中断请求FIQ3有快速中断请求时发生的异常

从异常处理程序中返回

       其他所有异常处理完毕后必须返回到原来程序处继续向下执行为达到这一目的,需要执行以下操作:

       (1)恢复原来被保护的用户寄存器

       (2)将SPSR_mode寄存器值复制到CPSR中,使得原先的CPSR状态从相应的SPSR中恢复,以恢复被中断的程序工作状态

       (3)根据异常类型将PC值恢复成断点地址,以继续执行用户原来运行着的程序

       (4)清楚CPSR中的中断禁止标志I和F,开放外部中断IRQ和快速中断FIQ

2.3.3 ARM的存储器格式及数据类型

       0x???表示16进制

       大端模式,高字节存储在低地址;小端模式,低字节存储在低地址。

       除Cortex-A50外,32位ARM处理器支持字节(8位)、半字(16位)、字(32位)3种数据类型。

2.3.4 ARM处理器种的MMU和MPU

存储器保护单元(MPU)

       MPU是对存储器进行保护的可选组件。MPU允许ARM处理器的4GB地址空间定义8对域,分别控制8个指令和8个数据内存区域。

1.半导体集成电路是微电子技术的核心。下面有关集成电路的叙述中错误的是(  )。

(A)集成电路有小规模、中规模、大规模、超大规模和极大规模等多种,嵌入式处理器芯片一般属于大规模集成电路

(B)集成电路的制造大约需要几百道工序,工艺复杂且技术难度非常高

(C)集成电路大多在硅衬底上制作而成,硅衬底是单晶硅锭经切割、研磨和抛光而成的圆形薄片

(D)集成电路中的电路及电子元件,需反复交叉使用氧化,光刻,掺杂和互连等工序才能制成

       【解析】嵌入式处理器芯片大多属于超大规模(VLSI)和极大规模(ULSI)。 

       【答案】()

2.下面是关于嵌入式处理芯片的叙述,其中错误的是(  )。

(A)x86等微处理器不能用作嵌入式系统中的CPU

(B)数字信号处理器可以用作嵌入式系统中的CPU

(C)微控制器(单片机)可以用作嵌入式系统中的CPU

(D)片上系统是高端嵌入式系统常用的嵌入式处理芯片

       【答案】(A)

3.下面为嵌入式系统中常用的数字信号处理器(DSP)的叙述,其中错误的是(  )。

(A)相对而言,DSP能更好地满足嵌入式系统对高速数字信号处理的需求

(B)DSP常采用哈佛结构

(C)通过增加SIMD等指令,使DSP能够特别适用于实现FFT等数字信号处理算法

(D)为满足手机或数码相机中对声音和图像信号的处理需求,这类嵌入式一般均采用为系统配置一片独立的DSP芯片这样一种解决方案

       【解析】手机或数码相机通常会集成DSP芯片用于处理声音和图像的,而不是配置一片独立的DSP。

       【答案】(D)

4.片上系统(SoC)也称为系统及芯片,下面关于SoC叙述中错误的是(  )

(A)SoC芯片中只有一个CPU或DSP

(B)SoC芯片可以分为通用SoC芯片和专用SoC芯片两大类

(C)专用SoC芯片可分为定制的嵌入式处理芯片和现场可编程嵌入式处理芯片两类

(D)FPGA芯片可以反复地编程、擦除、使用,在较短时间内就可完成电路的输入、编译、优化、仿真,直至芯片的制作

       【答案】()

5.对于嵌入式处理器内核的分类,以下说法正确的是(  )。

(A)按照字长可分为8位结构和32位结构

(B)按照存储结构可分为RISC和哈佛结构

(C)按照体系结构可分为CISC和RISC结构

(D)按照指令结构可分为冯.诺伊曼结构和哈佛结构

       【解析】 按字长缺少16位;RISC和哈佛不相关;冯.诺伊曼与哈佛之间的区别在于存储结构。

       【答案】(C)

6.ARM处理器当前运算操所产生的标志位记录在以下(  )寄存器中?

(A)PSP

(B)MSP(C)SPSR(D)CPSR

       【解析】当前运算产生的标志就是指当前所做的加、减、乘、除运算产生的一些进位、借位或者溢出等。

       【答案】(D)

5.ARM Cortex-A15处理器内核体系结构版本是(  )

(A)ARMv4

(B)ARMv5(C)ARMv6(D)ARMv7

       【解析】ARM Cortex-A系列都是基于ARMv7体系结构

       【答案】(D) 

6.以下具有Thumb-2状态的ARM处理器内核是(  )

(A)ARM7

(B)ARM9(C)ARM10(D)Cortex-M3

       【解析】

       【答案】(D)

7.ARM处理器能够进行浮点运算的部件是(  )

(A)Cache

(B)VFP(C)NVIC(D)WIC

       【解析】

       【答案】(B)

8.以下关于ARM处理器说法正确的是(  )

(A)32位ARM处理器支持字节,半字,和字三种数据类型

(B)MMU为存储器保护单元,是对存储器进行保护的可选组件

(C)虚拟地址到物理地址映射是MPU的主要功能

(D)WIC为嵌套向量中断控制器

       【解析】只考虑一般情况,32位ARM处理器能处理数据类型

       【答案】(A) 

9.某ARM处理器内部某功能部件可实现中断唤醒功能,这个部件是(  )

(A)MMU

(B)MPU(C)NVIC(D)WIC

       【解析】

       【答案】(D) 

7.存储器保护部件(MPU)是对存储器进行__的部件,MPU允许ARM处理器地址空间4GB定义__个域,分别控制指令和数据内存区域。

       【解析】

       【答案】保护、8

第三章 ARM处理器指令集

3.1 ARM指令的寻址方式

3.1.1 立即寻址

       操作数本身就在指令中给出,只要取出指令也就取到了操作数。

3.1.2 寄存器寻址

       寄存器中的数值作为操作数

3.1.3 寄存器间接寻址

       以寄存器中的值作为操作数地址,用于间接寻址寄存器必须[ ]括起来。

3.1.2 基地址加变址寻址

       将基址寄存器的内容与指令中给出的地址偏移量相加,得到一个操作数的有效地址。

(5)相对寻址

       当指令带有条件码时,指令应当根据CPSR标志位的情况进行判断是否执行。

指令的条件码
助记符后缀标志含义
EQZ置位相等
NEZ清零不相等
AL忽略无条件执行
VSV置位溢出
VCV清零未溢出
HIC置位Z清零无符号数大于
LSC清零或Z置位无符号数小于或等于
CSC置位带符号数大于或等于
CCC清零无符号数小于
GTZ清零且(N等于V)带符号数大于
LTN不等于V带符号数小于

3.2 移位操作符

       移位操作符在ARM指令集中不作单独指令使用,只能在指令格式中作为一个字段。

移位操作
移位操作符操作含义
LSL逻辑左移,低位用0填充,二进制下进行!

3.2 数据处理指令

       ARM处理器都是RISC结构,因此指令集是加载/存储型,也即数据处理类指令仅能处理寄存器中的数据。对外部设备和对系统存储器的访问都需要通过加载/存储指令完成。

ARM指令集数据处理类指令集
指令格式操作功能说明
MOV数据传送
TST Rd,<op2>位测试Rd AND op2,与操作,更新CPSR中条件标志位的值
ADD加法
ADC Rd,Rn,<op2>带进位加法Rd←Rn+op2+C
AND逻辑与按位相与,全1出1,可有清零作用
ORR Rd,Rn逻辑或

BIC Rd,Rn

位清除指定位清0

3.3 分支指令

3.3.1 B——转移指令

       一旦遇到B指令,ARM处理器将立即跳转到给定的目标地址,从那里继续执行。注意,存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是一个绝对地址。

3.3.2 BX——带状态切换的转移指令

       BX指令跳转到指令中所指定的由寄存器Rn与0xFFFFFFFE相与后的结果指示的目标地址。

3.3.3 BL——带返回的转移指令

       在跳转之前,会在寄存器R14中保存PC的当前值。因此,可以通过将R14的内容重新加载到PC中。

3.3.4 BLX——带返回且带状态切换的转移指令

分支指令
指令格式操作功能说明
B转移指令BEQ Label;        带条件等于EQ的转移
BX带状态切换的转移指令
BL Label带返回的跳转指令

3.3 加载/存储指令

       ARM处理器对于存储器均采用加载LDR/存储STR指令用于在寄存器和存储器之间传送数据。

ARM指令加载/存储指令集
指令格式操作功能说明
LDR
STR数据存储指令从源寄存器中将一个32位的字数据传送到存储器中
STRB字节数据存储指令从源寄存器中将一个8位的字节数据传送到存储器中。该字节数据为源寄存器中的低8位
STRH半字数据存储指令从源寄存器中将一个16位的字节数据传送到存储器中。该字节数据为源寄存器中的低16位

注意:STR搭配寄存器间接寻址+偏移量寻址会改变[ ]寄存器内容

3.4 伪指令

       一般的指令有相应的操作码,而伪指令没有。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。伪指令更像是给汇编器的指令而不是给CPU。大多数伪指令与编译程序有关,后续介绍的伪指令是基于armasm汇编器,主要包括符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。

3.4.1 ARM处理器支持的伪指令

       ADR

       LDR

       用于一个32位常数的加载或地址的加载。使用LDR伪指令有两个目的:(1)当用MOV或MNV指令无法加载符合要求的32位立即数时,可用LDR伪指令加载任意32位操作数到寄存器。因为MOV或MNV指令加载的32位数据只能是8位立即数通过移位的方式得到的,所以不能加载任意32位常数,如0x12345678这样的操作数不能用MOV指令完成。

       如果用MOV R0, #0x12345678是错误的。一条ARM指令是32位,这32位里面肯定有某些位是用来表示MOV指令本身的机器码,还有某一位用来表示R0,剩下的位不足32位,也就不能表示任意值,只能表示简单值,比如0x100是简单值。

                                                                                                                                                                                                                                                                                  (2)当需要程序的相对偏移地址或外部地址加载到寄存器时可使用LDR伪指令。

       NOP

3.4.2 ARM汇编器所支持的伪指令

       伪指令一般与编译程序有关,本节介绍基于armasm汇编器。

汇编器所支持的伪指令
类型格式功能描述及举例
数据定义伪指令标号 DCB 表达式分配一片连续的字节存储单元并对数据初始化
标号 DCW 表达式分配一片连续的半字存储单元并对数据初始化
标号 DCD 表达式分配一片连续的存储单元并对数据初始化
其他伪指令

CODE16

CODE32

指示以下指令为16位Thumb指令代码

指示以下指令为32位ARM指令代码

ENTRY汇编语言程序入口
名称 EQU 表达式 [, 类型]等于伪指令
EXPORT 标号全局标号声明伪指令(标号输出伪指令),用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。
IMPORT 标号引入一个标号伪指令

3.5 ARM汇编语言程序设计

3.5.1 分支程序设计

       通常用分支指令B加上条件来实现。

3.5.2 循环程序设计

       循环程序控制通常用比较指令CMP、ADD或SUB等能产生条件的指令,然后用B加上条件分支来达到目的。

3.5.3 子程序设计

       子程序的调用一般通过BL指令来实现,格式:

       BL 子程序名

       采用MOV PC,LR返回

1.已知ARM处理器R1=0x12345678,R2=0xFF008899,则执行指令AND R0,R1,R2后,寄存器R0=___,R1=___。

       【解析】逻辑与是将每一位十六进制换成二进制,按位进行计算,得到1位十六进制。

       【答案】0x12000018、0x12345678

2.以下ARM指令错误的是(  )。

(A)ADD R3,R3,#1

(B)MOV R2,R4,LSR#2(C)LDR R4,R5(D)MOV PC,LR

       【解析】加载/存储指令是与存储器操作有关的,那么其中必定有一个寄存器的内容是地址,相应的寄存器要用[ ]括起来。

       【答案】(C)

3.ARM处理器将R0中一个字的数据,存入由R1指示的内存区域,则使用的指令是(  )

(A)STR R0,[R1]

(B)LDR R0,[R1](C)STRH R0,[R1](D)STRB R0,[R1]

       【解析】CPU一次性处理的数据位数称为一个字,在考试中,一般认为ARM处理器为32位机。

       【答案】(A)

4.执行ARM指令STR R4,[R5],#8后,以下说法正确的是(  )。

(A)R4的内容改变

(B)R5的内容不变

(C)R5的内容左移8位

(D)内存或外设中的数据有可能改变

       【解析】寄存器间接寻址+偏移量寻址,但STR这种寻址组合方式后,会将[ ]寄存器的内容加上立即数作为一个新的地址。将R4中的字数据写入以R5的内容为有效地址的存储器中,并将新地址R5+8写入R5。

       【答案】(D)

5.在以下ARM处理器的指令操作码中可让寄存器R1中的指定位“置位”的指令操作码是(  )。

(A)MOV

(B)AND(C)ADD(D)ORR

       【答案】(D)  

6.ARM处理器如果R1=0x00000080,则指令MOV R0,R1,LSL#2执行后,R0的值为(  )

(A)0x00000200

(B)0x00000320(C)0x00000020(D)0x00000040

       【解析】将寄存器R1的值左移2位,低位用0填充,传送到R0。

       【答案】(A)

7.已知R2=1000,R3=200,执行指令MOV R2,R3,LSL#2后,R2=___,R3=___。

       【解析】

       【答案】

8.某ARM指令完成的功能是“如果相等,则进行带进位的加法”,该指令是(  )。

(A)ADCNE R1,R2,R3

(B)ADDEQ R1,R2,R3(C)ANDEQ R1,R2,R3(D)ADCEQ R1,R2,R3

       【答案】(D) 

9.ARM处理器在指令LDR R2, [R5,#2]!执行后,R5的值为(  )。

(A)R5不变

(B)R5=R5+2(C)R5=R2+2(D)R5=2

       【答案】(B) 

10.将ARM处理器R0中的一个字节的数据,存入由R1+4指示的内存区域,且地址自动更新,则使用的ARM指令是(  )。

(A)STR R0,[R1,#4]

(B)STRH R0,[R1,#4]!(C)STRH R0,[R1,#4](D)STRB R0,[R1,#4]!

       【答案】(D) 

11.以下ARM处理器的指令或伪指令错误的是(  )

(A)MOV R1,R2

(B)LDR R1,#0x12345678(C)LDR R1,=0x00000020(D)ADC R1,R2,R3

       【解析】对存储器内容的提取和存储必须经过寄存器进行寻址,(B)选项采用立即数的方式是不正确的,如果想提取内存地址为0x12345678的数据,应该先将这个地址存入寄存器,然后再通过寄存器间接寻址的方式提取出来。LDR不仅可以用作加载/存储指令,还可作为伪指令。

       【答案】(B)

12.以下不属于转移(分支)类指令的是(  )

(A)BLX R0

(B)BCC Label(C)BEQ R1(D)BIC R1,R0,#1000

       【解析】BCC由B和CC组成

       【答案】(D) 

13.在ARM汇编语言程序设计中,经常用到分支程序设计,以下不属于分支指令的是(  )

(A)BL LabelSub

(B)BX LabelSub
(C)CBNZ R1,LabelSub(D)BIC R0,R0,#LabelSub

       【解析】

       【答案】(D) 

13.ARM处理器在比较指令之后,如果要根据是否相等转移到指定地址L1,则以下指令错误的是(  )

(A)BEQ L1

(B)BNE L1(C)BXEQ L1(D)BLAL L1

       【解析】 EQ和NE分别根据CPSR标志位Z的情况决定是否执行。选项(B)含义为,标志位Z不相等则跳转。

       【答案】(D)

13.以下对伪指令的解释正确的是(  )

(A)DCD 0x23;在内存区域分配一个字节的内存空间并初始化为0x23

(B)CODE16;伪指令通知编译器,其前的指令序列为16位的Thumb指令

(C)MyBaud EQU 9600;定义一个常量MyBaud的值为9600

(D)IMPORT Label;声明一个全局的标号Label,该标号可在其他文件中引用

       【解析】

       【答案】(C)

14.以下对伪指令的解释错误的是(  )

(A)DCW 0x12;在内存区域分配半字的内存空间并初始化为0x12

(B)CODE32;伪指令通知编译器,其后的指令序列为32位的ARM指令

(C)Baud EQU 4200;定义一个16位常量Baud的值为4200

(D)EXTERN SUB1;当前文件引用外部标号SUB1

       【解析】

       【答案】(C)

15.在ARM汇编语言程序设计中常有分支和循环程序的设计,下面指令中应用于分支和循环的指令操作码是(  )

①B     ②ADD     ③AND     ④LDR     ⑤STR     ⑥MOV     ⑦EOR     ⑧CMP     ⑨BX     ⑩TEQ

(A)①和⑨

(B)①和⑧(C)④和⑤(D)⑧和⑩

       【解析】

       【答案】(A)

11.某ARM汇编语言程序要调用子程序,子程序名为Mysubrutine,则调用该子程序的指令为___,子程序返回调用程序的指令为___。

       【答案】BL、MOV PC,LR

12.在ARM汇编语言程序设计中常有子程序设计,下面指令中不属于子程序调用或者返回的指令是(  )

(A)LDR PC,MySub

(B)BL MySub(C)MOV PC,LR(D)MOV R15,LR

       【解析】R15就是PC

       【答案】(A) 

        

1.为提高SoC的设计效率,减少重复开发,通常大多以IP核为基础,在单个芯片上集成处理器、存储器和各种接口等组件,组成一个相当完整的计算机系统。按照IC设计文件的类型,IP核通常分为三种:___核、固核和___核。

       【答案】软、硬

1.ARM处理器Cortex系列包括Cortex嵌入式处理器和Cortex应用处理器,其中Cortex嵌入式处理器包括主要应用于控制领域的___系列和面向实时应用领域的___系列。

       【答案】Cortex-M、Cortex-R

1.以下关于ARM处理器工作状态说法错误的是(  )。

(A)工作状态包括ARM状态、Thumb状态及Thumb-2状态和调试状态三种

(B)ARM状态既支持16位指令宽度也支持32位指令宽度

(C)Thumb状态或Thumb-2状态下代码密度大于ARM状态,占用存储空间较小

(D)ARM处理器复位后总处于ARM状态

       【答案】(B) 

2.ARM处理器某工作状态能够根据实际情况自动选择16位指令代码和32位指令编码,这种工作状态是(  )。

(A)Thumb状态

(B)Thumb-2状态(C)ARM状态(D)调试状态

       【答案】(B) 

3.关于ARM处理器的工作模式,以下说法错误的是(  )。

(A)用户模式是程序正常执行的模式

(B)快速中断模式处理高速中断,用于高速数据传输或通道处理

(C)管理模式用于操作系统的保护模式,处理软中断

(D)系统模式用于处理未定义的指令陷阱

       【答案】(D)

3.如果要选择ARM处理器工作在外部中断模式,允许外部中断IRQ,禁止快速中断FIQ,使用Thumb工作状态,则需要设置的寄存器是(  )。

(A)PSP

(B)MSP(C)CPSR(D)SPSR

       【答案】(C)

4.在ARM处理器中,通用寄存器有R0-R15,其中R13通常用作___,R14作为___使用。

       【答案】堆栈指针、程序链接寄存器

5.以下关于ARM处理器CPSR寄存器说法错误的是(  )。

(A)CPSR记录ARM的工作状态

(B)CPSR决定ARM工作模式

(C)CPSR可设定是否允许外部中断和快速中断

(D)CPSR是ARM的控制寄存器

       【解析】CPSR包含当前处理器模式以及其它状态和控制信息。

       【答案】(D)

6.经典ARM处理器有7种异常:主要包括复位REST、未定义指令UND、软件中间SWI、指令预取中止PABT、数据访问中止DABT、外部中断请求IRQ以及___,其中优先级最高的异常是___。

       【答案】快速中断请求FIQ、复位REST

7.在Thumb指令集中,32位有效立即数是由8位立即数通过下面哪一种操作而间接得到的(  )。

(A)左移

(B)右移(C)循环左移(D)循环右移

       【答案】(A) 

17.Thumb-2指令集提供了专门用于开、关中断的专用指令,关外部中断使用的指令为:___,开外部中断的指令为:___。

第三章 嵌入式系统硬件组成

3.1 嵌入式最小硬件系统

嵌入式最小硬件系统组成框图

       常用电源模块:AC-DC、DC-DC、稳压器,包括普通稳压器和低压差稳压器(Low Dropout Regulator——LDO)。

       时钟电路:大多数嵌入式处理器内置了时钟信号发生器,但有些场合需要使用外部振荡源提供时钟信号。

       复位电路:嵌入式处理器都有一个系统复位引脚为nRESET或RESET,n表示低电平复位,不带n的表示高电平复位。目前嵌入式系统常使用外接典型复位芯片以保证系统能可靠复位。ARM复位后PC指向唯一的地址0x00000000。

3.2 基于ARM内核的典型嵌入式应用系统硬件组成

       典型嵌入式系统硬件由嵌入式最小硬件系统、前向通道、后向通道、人机交互以及相互互联通信通道组成。

典型嵌入式系统硬件组成

       模拟通道组件:ADC、DAC

       互联通信组件

       人机交互通道:

       (1)LCD显示设备

                LCD显示设备按其完整程度分为LCD显示、LCD显示模块以及LCD显示

                显示屏不带控制器,没有驱动电路,仅仅是显示器件(屏),价格最低;显示模块内置LCD显示屏、控制器和驱动模块,这类显示模块有字符型,有图形点阵型;PC机通常使用的是LCD显示器,具备显示屏、驱动器、控制器以及外壳,是最完整的LCD显示设备。

3.3 ARM的AMBA总线体系结构及标准

       为连接ARM内核与处理器芯片中的其他组件,ARM公司定义了名为先进微控制器总线体系结构(Advanced Microcontroller Bus Architecture,AMBA)的总线规范。从1995的AMBA1到2011年的AMBA4共有四个版本,其总线性能也在不断提高。

       按AMBA总线规范,以ARM内核为基础的嵌入式处理芯片采用系统总线(ASB)外围总线(APB)两层结构的方式构建片上系统。连接到系统总线的高带宽组件主要包括:电源管理与时钟控制器、测试接口如JTAG、外部存储器控制接口、DMA控制器、USB主机、片上SRAM及Flash、Ethernet、高速GPIO中断控制器、LCD控制器等。外围总线连接的硬件组件:GPIO、UART、SPI、I2C、USB设备、CAN、ADC、DAC、WDT、Timer、RTC、PWM等。

AMBA总线版本系统总线名称基本特点及性能
AMBA3(2003年)

AXI

ATB

AHB-Lite

数据位宽度包括8、16、32、64、128、256、512、1024位

3.3.1 存储器主要性能指标

       存储器容量是指每一个存储芯片或模块能够存储的二进制位数。存储器存取时间指CPU给出有效存储器地址开始到存储器读出数据(或写入数据)所需要的时间。存储器带宽指每秒可传输的最大数据总量。

3.3.3 串行异步通信接口(Universal Asynchronous Receiver/Transmitter——UART)

       UART由发送器、接收器、控制单元、波特率发生器等构成,常用于全双工串行异步通信。所有嵌入式处理芯片内部集成了兼容标准UART功能的组件,有的集成多个UART。UART一次最多发送8位数据位,且不能连续发送,每一帧数据之间必须采用空闲位隔开,以避免接收方和发送方波特率细微差距导致的累积误差。在具体使用时,由控制单元完成UART发送和接收信息的过程,用户只需要对特殊功能寄存器进行波特率、校验有无等设置。

UART字符格式

       直接用UART进行通信仅限于板间或芯片间通信,连接方式仅需三根线TXD、RXD及GND。如果距离超过1m,或环境比较恶劣,则需外接逻辑电平转换接口。

       发送器和接收器都可以选择采用先进先出(FIFO)模式还是普通模式。普通模式下,发送的字符先送到发送缓冲寄存器,然后,在控制单元作用下,通过TXDn引脚发送出去,然后再进下一个字符到发送缓冲寄存器。

       UART波特率除数寄存器

       UART的波特率由除数寄存器决定,也取决于外部时钟,关系式如下:

       UCLK可以是PCLK,还可以是UEXTCLK,由相应控制寄存器决定。 

       一般接收器和发送缓冲器的FIFO字节数N是一样大小,均可编程选择长度,如4B、8B、64B等。不同ARM芯片,FIFO缓冲器最大字节数N不同。

3.3.4 基于UART的RS-232/RS-485接口

       嵌入式系统的应用已经向网络方向发展。

       (1)RS-232

       嵌入式处理器至少有一个UART接口,仅仅通过这个接口不能进行稍远距离的通信。为此,可采用标准的RS-232电平转换接口电路,使UART的电平转换成RS-232电平,通信距离就可以达到15m左右。

基于UART的串行接口与RS-232的电平转换接口

        (2)RS-485

       在工业控制领域,传输距离越长,要求抗干扰能力也越强,RS232无法消除共模干扰,且传输距离只有15m左右,工业标准组织提出了RS-485接口标准,具有很强的抗共模干扰能力,传输距离可达1200m。       

RS-485接口连接

        RS-485通常用于主从式多机通信系统,采用轮询方式,由主机逐一向从机寻址,当从机地址与主机发送的地址一致时,才建立通信链接,进行有效数据通信。

3.3.4 集成电路互连总线接口I2C

       每次传送的字节数目没有限制,传输操作启动后主控器件传输的第一字节是地址,其中前7位指出与哪一个从器件进行通信,第8位指出数据传输的方向(发送还是接收)。

       每完成一字节的传送,接收方应该发送一个确认信号ACK给发送方。ACK信号出现SCL线的第9个时钟脉冲上。

       I2C总线属于多主总线,

3.3.5 串行外设接口(Serial Peripheral Interface——SPI)

       SPI是同步串行全双工的通信接口。一般使用4条线:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SSEL。

       SPI总线可在软件控制下构成:一主一从、互为主从、一主多从、多主多从。

一主一从

        寻址方式:一主多从模式下,主机需要先向对应从机的片选线CS(或从机选择线SSEL)发送使能信号(高电平或低电平,根据从机而定)表示选中该从机。

3.3.5 集成电路互连总线接口(Iner-Integrated Circuit——I2C)

       I2C用于连接嵌入式处理器及其外围器件,采用串行半双工传输。I2C总线两条信号线,数据线SDA和时钟线SCL。SDA上的数据必须在时钟的高电平周期保持稳定,它的高/低电平状态只有在SCL时钟信号线是低电平时才能改变。

       数据传送时高位在前,低位在后,每次传送的字节数目没有限制

       I2C属于多主总线,允许总线上有一个或多个主控器件和若干从器件同时进行操作,有时需要在竞争总线控制权时进行仲裁。多个主机每发送一个数据位时都要对自己的输出电平进行检测,检测到电平与自己发出的电平相同,就会继续占用总线。通过仲裁机制可看出,总线控制遵循谁先发送低电平谁就掌握总线控制权。与SPI不同,SPI设备的主从关系是固定,而I2C并不固定。

       ARM芯片内置了I2C总线控制器,总线在主器件和从器件之间进行数据传输之前,必须根据要求设置相应的I2C的有关功能寄存器。

3.3.6 通用串行总线USB

       USB总线通信采用主从方式,它有一个主机,负责管理所有USB设备的连接与删除、发起与USB设备的通信等。

       USB总线(1.1和2.0)有4根信号线,双工差分方式传送信号并提供电源。但Mini USB有5根引脚,比标准USB多了1根标识引脚。USB采用翻转不归零制(Non-Return to Zero, Inverted, NRZI)编码方式对数据进行编码。

       USB系统由USB硬件和USB软件组成。USB硬件中的USB主控制器包括一个根集线器(Root Hub),它提供一个或多个USB下行端口,每个端口可以连接一个USB集线器(USB Hub)或一个USB设备,使一个USB端口扩展为多个端口。USB软件主要是相关的驱动程序,包括USB设备驱动程序、USB驱动程序以及USB主控制器驱动程序。USB驱动程序在设备设置时读取描述器以获取USB设备的特征,并根据这些特征,在请求发生时组织数据传输。USB主控制器驱动程序完成对USB交换的调度,并通过根Hub或其他Hub完成对交换的初始化。

3.3.7 触摸屏

       电阻式(俗称软屏),用专用硬笔写字的触摸屏属于电阻式。电容式(俗称硬屏)。

3.3.7 高清多媒体接口HDMI

       HDMI是一种数字化音频/视频接口,目前已有多个ARM芯片内置了HDMI控制器接口。DVI线缆长度不能超过8m,HDMI最远可达15m。

3.3.7 控制器局域网(Controller Area Network——CAN)

3.3.8 红外线接口(Infrared Data Association——IrDA)

       

3.4 常用嵌入式处理芯片

(1)NXP——恩智浦(原飞利浦)

       基于Cortex-M0的LPC1000系列

(2)TI——德州仪器

       基于C674+ARM  Cortex-A8的TMS320C6A8167

(3)Samsung——三星

       基于ARM920T内核的S3C24xx系列

(4)ST——意法半导体

       基于ARM Cortex-M4的高性能ARM芯片STM32F4系列

3.5 嵌入式系统的存储器

3.5.1 存储器层次结构

       CPU使用最频繁的少量的程序代码和数据用SRAM作为Cache存放,正在运行中的程序的大部分数据和代码存放在主存储器(内存)中。

3.5.1 存储器分类

       (1)随机存储器

                随机存储器包括静态SRAM和动态DRAM。SRAM靠双稳态电路的两个稳定状态记录,DRAM靠存储单元晶体管极间电容的充放电状态来存放信息1和0。大多数嵌入式系统使用的是DDR(Dual Data Rate) SDRAM(双倍数据速率同步DRAM)。

                DDR SDRAM是新的内存标准之一,它在系统时钟触发沿的上、下沿都能进行数据传输,从而把数据传输速率提高了一倍。DDR2(或DDR3) SDRAM与DDR相比,保持了原有的双边沿触发传送数据特性外,还提高了存储器内部时钟工作频率,扩展了数据预读取能力,使原来DDR可预读取2位可预读取4位(或8位)数据。

       (2)只读存储器

                Flash ROM是近些年应用最广、速度最快的只读存储器,特点是擦除和编程速度快。NOR Flash和NAND Flash是市场上两种主要闪存技术NADN Flash以(行)为单位随机存取,在容量、使用寿命和成本方面有较大优势。但读出速度稍慢,大多作为数据存储器使用,包括数码相机、U盘等均采用NAND Flash ROM。必须配置专用的控制器或通常的I/O接口才能使用。NOR Flash ROM的特点是以字节为单位随机存取,其接口简单,与通常的扩展存储器一样,可以直接连接到处理器的外围总线上。

3.5.3 外部辅助存储器

       (1)微硬盘

       主要特点:超大容量,1.8英寸的微硬盘最大容量已达到240GB;带有缓存;无需外置电源,连接USB就可以。

3.5 ARM内核典型嵌入式处理器芯片——S3C2410

3.5.1 时钟组件

       大多数嵌入式处理器内置了时钟信号发生器,因此时钟电路只需要外接一个石英晶体振荡器和两只电容就可以工作了。

       锁相环(Phase-Locked Loop,PLL)是一个能够比较输入与输出相位的反馈系统,能将不稳定的输出时钟信号频率调整为和输入晶振/外部时钟源的频率一致。

       S3C2410内部有时钟振荡电路,产生的时钟信号经过主锁相环电路后得到更加固定的时钟,在时钟控制器、电源控制器及USB控制器的控制之下,产生不同需求的时钟信号如MPLL时钟锁相环时钟)、UPLL时钟(USB时钟)、HCLK时钟(连接到AHB总线上外围高速组件使用的时钟)、PCLK时钟(连接到APB总线上外围组件使用的时钟)、FCLK时钟(内核所需快速时钟)等供不同组件使用。

       选择晶振时,要防止频率超过处理器的最高工作频率,同时要保证系统在一定的功耗范围内,防止过高的频率产生较大的功耗。

3.5.2 GPIO

       S3C2410的GPIO有GPA/GPB/GPC/GPD/GPE/GPF/GPG/GPH多个并行I/O接口。GPC和GPD每个引脚共3个功能,第三功能为LCD液晶屏接口引脚,使用第三功能时,GPCCON=GPDCON=0xAAAAAAAA;GPE作为输入/输出,还可作为I2C、I2S、SD卡等串行总线的引脚;GPH除作为输入输出,主要作为三个UART串行通信引脚。

       具体某端口使用什么样的功能,由其对应的控制寄存器相关位决定,通过代码修改控制寄存器的32位值就能修改其对应I/O接口功能。例如,GPECON对应的就是GPE端口的控制寄存器名称。需要注意的是,由于不同的端口所拥有的引脚数不同,所以存在每2bit位对应一个I/O引脚的情况。另外,每个端口还有数据寄存器和上拉寄存器。

3.5.1 定时器Timer

       定时器内部有一个计数器,计数器每隔一个固定时间会计一个数:因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值×计数时间周期,就能得到一个时间段,这个时间段就是定的时间——定时器。计数器根据时钟来工作,时钟源来自ARM的APB总线,然后经过时钟模块内部的分频器分频得到。定时器/计数器主要用来实现定时执行代码的功能,CPU在执行主程序的同时,通过定时器记时,到了一定时间(计时结束)后,定时器会产生中断提醒CPU,CPU会去处理中断并执行定时器中断的ISR。从而去执行预先设定好的事件。

       定时器内部有1个寄存器TCNT,计时开始时会把总的计数值放入TCNT中,然后每隔一个时钟周期,TCNT中的值会自动减1,减1的过程由硬件自动完成,不需要CPU软件干预,直到TCNT中的值为0时,TCNT就会触发定时器中断。由此可知,定时时间由TCNT中的计数值和时钟周期。

       S3C2410内部有5个16位定时器Timer,有4个具备PWM输出。

寄存器

       与定时器相关的寄存器包括定时器配置寄存器TCFG0~1、定时器控制寄存器TCON、定时器计数缓冲寄存器TCNTB0~4、比较寄存器TCMPB0~4、

       TCFG0主要配置定时器0~4的预分频系数

       TCFG1主要配置定时器0~4的DMA请求并决定MUX输入。

       TCON主要控制定时器0~4的工作

       对于PWM输出,TCNTBn决定PWM周期或频率,TCMPBn决定PWM占空比。

3.5.2 RTC——Real-Time Clock,实时时钟

       RTC组件是一种能提供日历/时钟等功能的内置硬件。RTC的特殊功能寄存器包括控制寄存器RTCCON、

3.6 嵌入式系统外部通信接口

3.6.1 CAN总线接口

       RS-485的最大缺点是不能构成多主系统,也就是说同一时刻不能有两个或两个以上系统(设备)处于发送状态。CAN总线也采用差分传输,可构成多主多从系统,即同一时刻允许多个主从机同时进行数据传输。

       CAN总线的数据帧由7个不同的域组成。

1.典型的嵌入式系统硬件由嵌入式最小硬件系统及相关的通道或接口组成,若一个嵌入式系统需要完成模拟量输入功能,该功能由下面列出的嵌入式系统的哪个通道实现?(  )

(A)前向通道

(B)后向通道(C)人机交互通道(D)相互互连通道

       【答案】(A)

2.设计嵌入式硬件系统的电源电路时,常会采用78XX系列芯片,下面是关于78XX系列芯片的叙述,其中错误的是(  )。

(A)78XX系列芯片是一种DC-DC模块

(B)78XX系列芯片输出电压值与选用芯片型号中“XX”的具体数值有关

(C)78XX系列芯片输出电压值与选用芯片型号中“XX”的具体数值有关

(D)78XX系列芯片是一种典型的LDO

       【解析】

       【答案】()

3.下图为典型的嵌入式处理器时钟电路设计方法,下面是结合该图的相关叙述,其中错误的是(  )。

(A)左图中的Xtal为晶体振荡器

(B)右图中的Clock应采用稳定的时钟信号源

(C)左图中的时钟电路设计方法使用了嵌入式处理器内置的时钟信号发生器

(D)设计嵌入式处理器的时钟电路时,选择的Xtal的频率或Clock的频率必须保证嵌入式处理器能工作在最高频率

       【答案】(D)

4.下面是关于嵌入式处理器时钟电路的叙述,其中错误的是(  )

(A)设计嵌入式系统的时钟电路时,可以采用使用外部时钟信号源的方式进行设计

(B)对于内置了时钟信号发生器的嵌入式处理器,设计系统的时钟电路时不再需外接任何元器件

(C)嵌入式处理器的功耗与嵌入式系统时钟电路的工作频率有关

(D)嵌入式处理器的运行速度与嵌入式系统时钟电路的工作频率有关

       【解析】

       【答案】()

5.下面关于LCD显示设备的叙述种,错误的是(  )

(A)LCD显示屏自身不带控制器,没有驱动电路,仅仅是显示器件,价格最低。

(B)LCD显示模块内置LCD显示屏、控制器和驱动模块,有字符型、有图形点阵型

(C)PC机通常使用的是LCD显示器,除具备显示屏外,还包括驱动器、控制器以及外壳等,是完整的LCD显示设备

(D)DVI(Digital Visual Interface)是一种LCD控制器的标准

       【解析】

       【答案】(D) 

5.下面是关于ARM的AMBA的叙述,其中错误的是(  )

(A)AMBA是ARM公司定义的总线规范

(B)从ARM1发布以来,AMBA已经有多个不同的版本

(C)总体而言AMBA由系统总线和外围总线组成

(D)目前为止,AMBA支持的最大数据宽度为128位

       【解析】

       【答案】(D)

6.按照AMBA总线规范,基于ARM内核的嵌入式处理器芯片采用系统总线与___总线两层结构的方式构建片上系统。其中的系统总线主要用于连接___带宽快速组件。

       【答案】外围、高

7.下面时关于AMR的AMBA总线中的APB连接的硬件组件的叙述,其中错误的是(  )

(A)SPI与APB连接

(B)I2C与APB连接
(C)RTC与APB连接(D)DMA控制器与APB连接

       【解析】只要是用于外部通信的都是接在APB上

       【答案】(D)

8.下面关于SPI的叙述中,错误的是(  )。

(A)SPI是一种同步串行外设接口

(B)SPI在嵌入式系统中应用时只能采用一主多从的方式

(C)一般情况下,SPI接口信号中包含低电平有效的从机选择线

(D)SPI可以实现全双工通信

       【答案】()

1.下面关于嵌入式系统的叙述中,错误的是(  )。

(A)嵌入式系统常用的电源模块有AC-DC模块、DC-DC模块或LDO模块

(B)大部分嵌入式处理器只能使用内部时钟信号发生器,不能使用外部时钟信号源

(C)若嵌入式处理器芯片的系统复位引脚为nRESET,则表示低电平复位

(D)基于ARM处理器内核的嵌入式处理器芯片都有调试接口

       【答案】(B) 

4.以ARM内核为基础的嵌入式处理器芯片采用系统总线与外围总线的层次结构方式构建片上系统,下面列出的组件中,不与外围总线相连的组件是(  )。

(A)UART

(B)DMA控制器(C)ADC(D)USB设备

       【答案】(B) 

4.下面关于UART的叙述,其中错误的是(  )。

(A)ARM芯片中的UART收发信息时,可以采用FIFO模式,也可以采用普通模式

(B)UART传送信息的格式以起始位开始,以停止位结束

(C)UART传送信息时,一次传送的数据位的长度只能是8位

(D)基于UART可组成RS-232接口

       【解析】

       【答案】(C)

5.基于ARM内核的嵌入式芯片中包含定时/计时组件,下面列出的哪一项不属于定时/计数组件?

(A)ADC

(B)Timer(C)RTC(D)WDT

       【答案】(A) 

6.基于ARM内核的嵌入式芯片中包含互连通信组件,下面列出的哪一项不属于互连通信组件?

(A)DAC

(B)SPI(C)I^2C(D)CAN

       【答案】(A) 

8.嵌入式系统的存储器以半导体存储器为主。随着技术的不断发展,新型存储器不断出现,主要包括FRAM和MRAM,分别称为___存储器和___存储器。

       【答案】铁电、磁性随机

9.下面关于嵌入式系统存储器的叙述中,错误的是(  )

(A)目前嵌入式处理器内部的Cache采用SRAM

(B)嵌入式系统使用的存储器按照其存取特性可分为随机存取存储器(RAM)和只读存储器(ROM)

(C)铁电存储器(FRAM)和磁性存储器(MRAM)是两种新型的半导体存储器

(D)通过对DRAM的存储控制技术进行改进,出现了DDR2 SDRAM、DDR3 SDRAM等新型的存储器产品

       【解析】

       【答案】(C)

10.半导体存储器芯片的存储容量取决于该芯片的___总线的条数和___总线的位数。

       【答案】地址、数据

10.段共阴极LED数码管如下图所示,为使其显示数字5,其段代码(高位到低位的顺序是:dp g f e d c b a)为(  )。

(A)0x7F

(B)0xC0(C)0x80(D)0x6D

       【解析】共阴极表示,要将对应段点亮就输出高位1。

       【答案】(D)

第四章 嵌入式系统软件

4.1嵌入式系统的软件结构

4.1.1 简单的轮询结构

       应用程序重复循环检查每个外部输入条件,一旦有需要处理的任务,则进行相应的处理。由于没有中断机制,不会出现程序切换带来的潜在问题。一个实际的例子是数字万用表的控制软件:软件在每一次循环中检查旋转开关的位置或按键的状态,然后执行相应的分支程序来完成相应的测量操作,再调整结果的格式,并把结果输出到显示屏上。

4.1.2 带中断的轮询结构

       在简单轮询结构的“主循环”基础上增加中断服务程序,这种结构被称为中断驱动程序或前后台结构。所谓的后台是一个循环执行的轮询程序,前台则由若干中断服务程序组成。当有外部事件发生时,外部事件提出中断申请,暂停后台运行的主循环,进行前台处理,处理完成后回到后台继续运行主循环。

4.2 硬件抽象层和板级支持包(Board Support Package,BSP)

4.2.1 HAL和BSP概念

       硬件抽象层和BSP都是嵌入式系统的底层软件。引入HAL的目的是对硬件进行抽象,亦即将控制所有硬件电路的软件代码封装起来,通过硬件抽象层应用编程接口向操作系统以及应用程序提供服务,使上层软件开发人员无需关心底层硬件的具体细节和差异,并且支持上层软件在不同体系结构和硬件平台之间的移植。

       为了实现OS在不同硬件平台的可移植性,许多OS厂商会定义硬件无关代码与硬件相关代码之间的接口规范。硬件无关的OS代码在不同硬件平台上是相同的,由OS厂商提供。而依赖于硬件的代码通常由用户或硬件制造商专门编写,这部分代码通常被称为板级支持包。BSP屏蔽了其所支持的嵌入式操作系统与底层硬件平台之间的相关性,使嵌入式操作系统能够通用于BSP所支持的不同硬件平台,实现嵌入式操作系统的可移植性和跨平台性。

       BSP在系统复位之后负责系统软硬件环境的初始化,其功能分为三部分:

       (1)在BPS运行之前,操作系统及其附带的调试工具还无法运行,系统复位时只需要对操作系统运行所必须的硬件进行初始化操作,并不需要对系统中所有硬件都进行初始化。

       (3)引导加载操作系统

       在初始化必要的硬件环境后,BSP还需要进行系统级的初始化。为操作系统的正常运行做好准备后,BSP随后会加载操作系统,将嵌入式系统的控制权转交给操作系统,操作系统继续完成余下的初始化操作。最后,操作系统为软件系统提供多任务的运行环境,创建应用程序的运行实例,并将控制权交给应用程序。

4.2.2 BSP的开发和移植

       开发全新的BSP的工作量很大,通常以操作系统厂商提供的BSP模板为依据。BSP与硬件平台直接相关,为降低BSP调试难度,采用渐进方式进行将BSP调试分为两步:

       (1)最小系统调试

       (2)外围设备驱动程序的调试

4.2.1 HAL和BSP举例

       (1)Nios Ⅱ HAL

       Nios Ⅱ是Altera公司推出的32位哈佛结构用户可配置的通用RISC软核处理器。在Nios Ⅱ系统硬件之上就是硬件抽象层HAL。HAL系统库是Nios Ⅱ处理器系统的轻量级运行环境,提供了简单的设备驱动程序接口和HAL API(应用程序接口)。由于SoPC系统的软硬件都是借助集成的SoPC开发平台统一配置开发的,所以软硬件开发工具之间的紧密集成使得特定硬件系统的HAL可以由开发工具自动生成。当硬件开发工具产生了硬件系统配置之后,Nios Ⅱ软件开发工具可以生成与硬件配置相匹配的定制的HAL系统库。

       HAL系统库提供的服务包括:

  • ANSI C标准库。HAL系统库集成了适用于嵌入式环境的开源NewLib ANSI C标准库,向用户提供熟知的标准库函数支持。
  • 外设驱动。
  • 系统初始化:在应用程序执行之前完成处理器和运行库环境的初始化任务

       (2)Windows Embedded Compact 7(WEC7)BSP

       Windows Embedded Compact 7(WEC7)是微软公司Windows Embedded CE(WinCE)的后续产品,是专门为小型网络设备涉及的安全、组件化的实时操作系统。

       WEC7由三层构成,最顶层是应用和服务,这两个组件与下一层的操作系统内核(kernel)层交互。在硬件和内核层之间的就是BSP。

Windows Embedded Compact 7的软件结构

4.2 引导加载程序(bootloader)

4.2.1 引导加载程序的概念和功能

       与bootloader相关的一个术语是bootROM(引导只读存储器)。一般而言,bootROM是指用来存储bootloader程序的非易逝存储器。大多数嵌入式系统中,bootROM内不仅存储bootloader程序,还存储操作系统映像、应用程序代码和用户配置数据等信息。

4.2.2 嵌入式操作系统的加载方式

启动加载模式

  • 在ROM中直接运行操作系统代码
  • 在RAM中运行操作系统代码
  • 从外存储器加载操作系统代码运行

下载模式

  • 从通信端口加载操作系统代码
常用开源bootloader及其支持的处理器架构
名称x86ARMPower PCMIPS特点
LILO
GRUB
U-Boot广泛使用的引导程序,公认的功能最强、最具弹性以及更新最快的开放码源。支持的处理器体系结构包括MPC8xx、MPC82xx等PowerPC系列处理器,ARM7、ARM9、StrongARM、Xscale等ARM系列处理器,以及MIPS系列、X86系列。也支持众多操作系统,包括Linux、VxWorks、NetBSD、QNX、RTEMS、ARTOS、LynxOS等。
RedBoot

4.3 嵌入式系统的设备驱动程序

       尽管不同系统中驱动程序的概念并不相同,但驱动程序的基本特性可概况为以下两条:(1);(2)对上层软件屏蔽硬件细节,对下层硬件直接进行操作。

       在不使用操作系统的嵌入式系统中,驱动程序和高层软件之间通常没有严格的界限。某些操作系统(例如VxWorks)除了通过标准驱动程序接口访问硬件之外,也允许应用程序绕过操作系统直接访问硬件。Linux等类Unix操作系统还会把I/O设备抽象成设备文件,在应用程序看来,I/O设备只是一个文件,应用程序可以像处理普通文件一样对设备进行操作。 

4.4 实时系统与实时操作系统

4.2.1 实时系统

       在实时系统中运行的任务可以根据时限对系统性能的影响程度分为三类:

       ·硬实时任务

       ·软实时任务

       偶尔超出时限并不会造成任务失败或导致任务出现致命错误,而是造成任务服务质量下降,超时响应一定的意义

4.2.2 实时操作系统

       实时操作系统最关键的就是完成每次任务所需实践的一致性。如果一个实时操作系统能够完全满足确定性的时限要求,则称为硬实时操作系统,否则称为软实时操作系统

       操作系统的时间确定性首先取决于它响应中断的速度,其次取决于系统是否具有足够的处理能力在规定时限内处理完所有的事件请求。为此,实时操作系统大多采用如下机制来保证对实时任务的响应和处理的时间确定性:

       ·实时抢占式调度

       任务调度策略是影响系统实时性能的重要因素,实时调度的目标是在峰值负荷条件下至少保证实时任务的时限。使用抢占式内核使得任务级响应时间得以最优化,对于抢占式内核,在中断服务程序完成后,不等重新返回系统调用就会重新进行任务调度。

       嵌入式操作系统按实时性分类:硬实时,VxWorks、RTEMSQNX\muC/OS-Ⅱ、Nucleus

4.2 嵌入式操作系统的内核结构

       操作系统的架构是由内核的结构决定的。操作系统的内核结构分为两类:但单内核(宏内核)和微内核。

4.2.1 单内核(宏内核)

       单内核把内核的各个功能模块整合在一起,所以执行效率快、系统花在内核功能切换上的开销小,但这种结构把不使用的功能组件和设备驱动也常驻内存,占用资源多,任务执行时间的可预测性低,可靠性低,排除故障和增加功能需要重新编译。

       单内核又分为整体(单体)结构和分层结构。整体结构把内核分为若干模块,各模块协作完成某项功能。模块间可自由调用,所有模块连成一个内核。这种结构的最大缺点就是模块之间相互关联,耦合度高,结构不清晰,牵一发而动全身,维护和升级困难。

       分层结构的单内核操作系统将所有模块划分为若干层次,下层模块封装内部细节,上层模块调用下层模块提供的接口。

       与整体结构相比,分层结构的缺点是每一层都要向上层提供通信机制,影响系统的效率。

4.2.2 微内核

       操作系统仅将必需的基本功能放入内核,它们运行在核心态,其他功能都运行在内核之外,由在用户态运行的服务来完成。这种做法使内核的结构很小,称为微内核

4.3 常用嵌入式操作系统简介

4.3.1 VxWorks

       VxWorks操作系统是美国风河系统公司专门针对嵌入式环境开发的商用嵌入式实时操作系统。

4.3.2 RTMES

       RTMES是GPL开源的无版税嵌入式实时操作系统。

4.3 Linux内核

4.3.1 Unix与Linux

       Unix作为主流操作系统,多年来不断演化,派生出许多相似或同源的操作系统。其中有些是贝尔实验室Unix直接演化而来的商业版Unix。还有一些与Unix有一定关系的派生操作系统,则被统称为类Unix系统。这些类Unix系统中,有些是基于Unix代码衍生而来,但按法律和商业惯例不能佩戴Unix标志的操作系统;另一些虽然没有直接派生关系,但技术上与Unix相似,包括Linux等。

4.3.2 Linux内核与Linux发行版

       严格地说,林纳斯·托瓦兹开发的Linux只是操作系统的内核。通常说的“Linux操作系统"是指Linux发行版,是为一般用户预先集成好的Linux操作系统内核及各种应用软件。

       全球已有超过300各Linux发行版,其中最早也最有名的是GNU/Linux操作系统。GUN使用Linux作为GNU操作系统的内核,与GNU项目已经发布的一系列应用程序、系统库和开发工具等组合成完整、可用的操作系统,确切名称为GNU/Linux操作系统,很多人习惯称之为“Linux操作系统”。

4.4 嵌入式Linux操作系统

4.4.1 Linux内核的机构与组成

       Linux采用了与Unix相同的单内核结构。

       Linux系统中,Linux内核运行在单独的内核地址空间,系统调用也在内核空间实现。

       将Linux操作系统应用于嵌入式环境要根据嵌入式系统的成本、实时性要求、技术开发能力等综合因素进行考虑,通常有两种方式可以选择:

       (1)

       (2)基于嵌入式Linux发行版构建嵌入式Linux

       Linux内核虽然不是商业软件,但众多软件厂商和开源社区在标准Linux内核的基础上针对嵌入式环境进行重新裁剪、包装、改造和优化设计,构造出众多的嵌入式Linux发行版。国内外有众多嵌入式Linux发行版发布。

       ·Xenomai

       Xenomai是一个超微内核机制的Linux内核实时开发框架。

4.3 \muC/OS操作系统

       \muC/OS-Ⅱ的特点:(1)公开源码的高质量实时内核。

                                       (2)可移植,只要微处理器支持堆栈指针,且有CPU内部寄存器入栈、出栈指令,C语言编译器应当或者支持内嵌汇编,或者支持语言扩展功能,能够在C语言中完成关中断和开中断,\muC/OS-Ⅱ可以在绝大多数8位至64位微处理器、微控制器和DSP上运行。

                                      (2)多任务,\muC/OS-Ⅱ可管理64个任务,8个保留给系统,56个用于用户任务,分配给不同任务优先级不相同,因此不支持时间片轮转调度机制。

                                      (3)抢占式内核

4.3.1 C/OS-Ⅱ的任务及其管理

\muC/OS-Ⅱ的任务构成

        \muC/OS-Ⅱ中任务是操作系统的基本调度单位,\muC/OS-Ⅱ的任务由三部分构成:程序代码、任务堆栈和任务控制块(Task Contorl Block,TCB)。

       (2)任务堆栈。每个任务都有自己独立栈空间,每个任务的栈空间大小不同

C/OS-Ⅱ的任务状态

       C/OS-Ⅱ的任务处于五种状态之一。

       运行态。任务已经获得处理器使用权而正在运行的状态。

       等待态(挂起态)。正在运行的任务因等待某一事件发生而将处理器的使用权让出给其他任务而将自身挂起的状态。

       被中断态。因CPU执行中断服务程序而被暂停运行的任务状态。

\muC/OS-Ⅱ的任务调度

       \muC/OS-Ⅱ支持任务级的任务调度和中断级的任务调度。任务级的任务调度一般发生在当前运行态任务因等待某事件而被阻塞或被挂起时,或是有更高优先级的任务处于就绪状态时。发生任务级的任务调度时,内核通过系统函数OS_TASK_SW()进行任务级的任务切换,保存当前任务的上下文(程序计数器PC、通用寄存器和处理器的状态寄存器),并恢复新的任务的上下文。

       内核通过OSIntExit()判断是否存在更高优先级的就绪任务,如果有,进行中断级的任务切换。

C/OS-Ⅱ的中断处理

       在C/OS-Ⅱ系统中,中断服务程序的执行步骤大致如下:

       (1)保存全部CPU寄存器;

       (2)调用OSIntEnter()或OSIntNesting直接直接加1;

                C/OS-Ⅱ通过全局变量OSIntNesting标识当前是否处于中断状态以及中断嵌套的层数,中断嵌套层数可达255层。在用户中断服务程序中,可以直接将变量OSIntNesting加1,或者直接调用函数void OSIntEnter(void),该函数在关中断状态下对变量OSIntNesting加1,并在返回前开中断。

       (3)执行用户中断服务代码(调用中断处理函数);

       (4)调用OSIntExit();

                中断返回之前,必须调用退出中断函数void OSIntExit(void)将变量OSIntNesting记录的中断嵌套层数计数器减1,当计数器为零时,说明所有嵌套的中断服务都已经完成。

       (5)恢复所有CPU寄存器;

       (6)执行中断返回指令。

4.3.2 C/OS-Ⅱ的系统服务

C/OS-Ⅱ的任务管理服务

       C/OS-Ⅱ通过一组系统函数进行任务管理。

       (1)任务创建

       (2)任务删除

                删除任务的操作将使任务转入休眠状态,不再被内核调度。

       (3)任务挂起和任务恢复

                任务可以挂起自己或者挂起其他任务。调用OSTaskSuspend()函数可以挂起一个任务,而被挂起的任务只能等待其他任务调用OSTaskResume()函数才能时限任务恢复。如果任务在被挂起时正在等待延时,则挂起操作将被取消。

C/OS-Ⅱ的时钟节拍与时间管理服务

       操作系统内核需要周期性的信号源用于时间延时和超时,即时钟节拍。定时器硬件在每个时钟节拍产生一个硬件中断请求,内核在中断服务程序中更新32位的tick计数器,并调用系统服务函数OSTimeTick()检查等待超时或等待时间的任务是否超时。

       用户必须在调用OSStart()启动多任务调度以后再开启时钟节拍器。

       

C/OS-Ⅱ的任务间通信 

       早期版本使用信号量、消息邮箱、消息队列,99年后增加了互斥信号量和事件标志组。

       (1)信号量

                无等待地请求信号量: INT16U OSSemAccept(OS_EVENT * pevent)

       OSSemAccept()函数也用于等待一个信号量,但如果调用时信号量的计数值等于0,任务并不会被挂起,函数仅简单返回。

       (4)消息邮箱

                无等待地请求消息邮箱:void * OSMboxAccept(OS_EVENT * pevent)

       函数OSMboxAccept()在没有接收到消息时并不会挂起任务,因而可在中断服务程序中调用。

4.3.3 \muC/OS-Ⅱ应用程序设计

 \muC/OS-Ⅱ的初始化与main()函数结构

       在基于\muC/OS-Ⅱ的多任务系统中,引导加载程序执行完毕则调用主函数main()。主函数main()实现的功能主要包括:硬件初始化,调用OSInit()初始化\muC/OS-Ⅱ内核,在使用内核提供的任何功能之前,必须先调用OSInit()函数进行内核初始化,OSInit()对内核使用的所有变量核数据结构进行初始化;创建空闲任务OS_TaskIdle()并使之处于就绪态,创建任务间通信或同步的内核对象,应用程序相关的初始化操作;调用函数OSStart()将启动多任务调度并从就绪态任务中选择最高优先级的任务转入运行态,故在主函数mian()调用OSStar()之前至少创建一个用户任务。

\muC/OS-Ⅱ用户任务的三种结构

       任务可以是一个无限的循环,也可以在任务完成后自我删除。任务通常采用下面三种结构之一:

  • 单次执行的任务

       这类任务在创建后处于就绪态并可以被执行,执行完相应的功能后则自我删除。单词执行的任务通常是孤立的任务,不与其他任务进行通信,只使用共享资源来获取信息和输出信息,但可以被中断服务程序中断。

       单词执行的任务通常执行三步操作:任务准备工作、任务实体、自我删除函数调用。

void Task(void * pdata)
{
    任务准备工作;                /*定义变量并初始化硬件设备*/
    任务实体;                    /*完成该任务的具体功能*/
    OSTaskDel(OS_PRIO_SELF);    /*任务完成后调用任务删除函数自我删除*/
}

1.嵌入式系统与通用计算机系统软件的相同之处,指的是嵌入式系统通常也具备___加载程序,外设___程序,操作系统,文件系统,网络协议栈,图形用户界面,数据库,以及各种各样的应用程序等,这些软件都是通用计算机所拥有的。

       【答案】引导、驱动

2.下列关于嵌入式系统底层软件的陈述中,不正确的是(  )

(A)启动加载模式是嵌入式系统正常工作时的独立启动方式,bootloader从非易失存储介质中引导和运行操作系统代码

(B)BSP中包含硬件相关的设备驱动程序

(C)一种嵌入式操作系统的BSP不可能用于其他嵌入式操作系统

(D)Xenomai是一个规模庞大的设备驱动程序

       【解析】

       【答案】() 

3.Nios Ⅱ软核处理器的硬件抽象层(HAL)系统库是一个轻量级C/C++运行时环境,属于单线程的类UNIX运行库,关于

(A)结合NewLib ANSI C标准库,向用户提供熟知的标准库函数

(B)提供设备驱动,使用户可以访问系统中的所有设备

(C)为系统提供了TCP/IP协议栈

(D)系统初始化,在main()函数之前完成软核处理器Nios和运行库环境的初始化任务

它说提供的服务如下哪一项说法是错误的?

       【解析】

       【答案】(C) 

3.实时系统对时间约束要求的严格性,使___性成为实时系统的一项重要性能要求,它是指RTOS能够对外部事件的___时间和实时任务的执行时间进行判断,以确定被事件触发的实时任务能否在规定的时间内完成。

       【答案】预测性、响应

4.下列关于实时操作系统的陈述中,正确的是(  )

(A)实时调度机制的目标是在峰值负荷条件下能满足所有任务的时限

(B)实时操作系统可以确定性地满足请求的程度首先取决于它响应中断的速度,其次取决于系统是否具有足够的处理能力在要求的时间内处理所有的请求

(C)对于支持硬实时任务的操作系统而言,系统调用与服务的执行时间都应具有可确定性

(D)对于抢占式内核,在中断服务程序完成后,不等重新返回系统调用就会重新进行任务调度

       【解析】

       【答案】(A)

5.下列关于Linux操作系统的陈述中,错误的是(  )

(A)Linux是多用户、多任务、支持多线程和多CPU的类Unix操作系统

(B)Linux采用了Unix相同的宏内核结构

(C)在Linux系统中,内核运行在单独的内核地址空间,系统调用也在内核空间实现

(D)严格地说,Linux并不是操作系统,而是操作系统的一个组成部件。完整的GNU/Linux系统被称为操作系统内核

       【解析】

       【答案】(D)

6.Linux遵从IEEE为各种Unix操作系统上运行的软件定义的一系列相互关联的标准。该标准的英文缩写是___。Linux遵从的授权协议名称为___。

       【解析】

       【答案】

7.关于\muC/OS-Ⅱ的叙述,正确的是(  )

(A)\muC/OS-Ⅱ系统拥有统一的驱动程序,不需要开发商自行开发

(B)\muC/OS-Ⅱ包含基本设备驱动程序

(C)使用于\muC/OS-Ⅱ的栈空间检验函数,可以确定每个任务到底需要多少栈空间

(D)\muC/OS-Ⅱ是一个单内核操作系统

       【解析】\muC/OS-Ⅱ基本不包含设备驱动程序,只是一个纯内核。\muC/OS-Ⅱ驱动程序属于底层,需要系统开发商自行开发。使用\muC/OS-Ⅱ的栈空间校验函数,可以确定每个任务到底需要多少栈空间。

       【答案】(C)

8.下列关于\muC/OS-Ⅱ操作系统的叙述中,不正确的是(  )

(A)用户必须在调用OSSsart()启动多任务调度以后再开启时钟节拍器

(B)函数void OSIntEnter(void)在关中断状态下对变量OSIntNesting减1,并在返回前关中断

(C)删除任务的操作将使任务转入休眠状态,不再被内核调度

(D)如果任务在被挂起时正在等待延时,则挂起操作将被取消

       【解析】

       【答案】(B)

9.下列关于\muC/OS-Ⅱ操作系统任务的陈述中,错误的是(  )

(A)只要有其他任务就绪,空闲任务的处理器时间就会被抢占

(B)当外部事件或系统异常发生时,系统响应中断,当前运行的任务将转入等待态

(C)用户必须在调用OSStar()启动多任务调度以后再开启时钟节拍器

(D)如果任务在被挂起时正在等待延时,则挂起操作将被取消

       【答案】(B) 

10.下来关于\muC/OS-Ⅱ操作系统的陈述中,错误的是(  )

(A)函数OSMboxAccept()在没有接受到消息时并不会挂起任务,因而可以在中断服务程序中调用

(B)\muC/OS-Ⅱ是可抢占的实时内核,在中断服务完成后允许进行中断级的任务调度

(C)\muC/OS-Ⅱ支持任务级的任务调度和中断级的任务调度两种方式

(D)函数OSTaskResume()实现推出临界状态的操作

       【解析】

       【答案】(D)

11.在\muC/OS-Ⅱ中,OSSched()函数是任务调度的前导函数,用于判断进行任务调度的条件是否满足。下列满足条件的变量值为(  )

(A)OSIntNesting=0,OSLockNesting=0

(B)OSIntNesting=0,OSLockNesting=1
(C)OSIntNesting=1,OSLockNesting=0(D)OSIntNesting=1,OSLockNesting=1

       【解析】

       【答案】()

12.\muC/OS-Ⅱ操作系统的下面4个主要函数中,只有一个是与任务调度相关的,它是(  )

(A)OSTickISR()

(B)OS_Sched()

(C)OSIntExit

(D)OSTaskCreate()

       【解析】

       【答案】()

12.\muC/OS-Ⅱ总是运行处于就绪态任务中优先级最高的那个任务,以下哪个说法是错误的?

(A)真正实现任务切换的函数是OSCtxSW()

(B)任务级的调度是由函数OSSched()完成

(C)中断级的调度是由函数OSIntExit()完成

(D)实现上下文切换的函数是OSSched()

       【解析】

       【答案】(D)

13.\muC/OS-Ⅱ的事件控制块有4种类型,需要使用4个不同的函数来创建。如下选项中那一个用于创建事件控制块?

(A)OSTaskCreate

(B)OSThreadCreate()(C)OSQCreate(D)OSCtxSw

       【解析】

       【答案】(C) 

13.在\muC/OS-Ⅱ中有多种方法可以保护任务之间的共享数据和提供任务之间的通信。其中不能达到保护目的的方法是(  )

(A)利用宏OS_ENTER_CRITICAL()和OS_EXITCRITICAL()来关闭中断和打开中断

(B)利用函数OSSchedLock()和OSSchedUnlock()对任务调度函数上锁和开锁

(C)利用信号量、互斥信号量、邮箱和消息队列进行任务间通信

(D)利用内存文件进行任务间的大规模数据共享

       【解析】

       【答案】(D)

14.移植\muC/OS-Ⅱ到一个嵌入式系统电路板上正常运行,下面(  )条件不是必须的

(A)处理器的C编译器能产生可重入代码,且用C语言就可以打开和关闭中断

(B)该电路板的处理器必须具备MMU(存储管理单元)

(C)处理器支持中断,并且能产生定时中断(通常在10至100Hz之间)

(D)处理器支持能够容纳一定量数据(可能是几千字节)的硬件栈区

       【解析】

       【答案】(B)

15.下列关于实时与嵌入式操作系统的陈述中,错误的是(  )

(A)因为Windows速度不够快、效率不够高,所以Windows并不是实时操作系统

(B)微内核结构的缺点是效率较低,性能较差

(C)操作系统可以确定性地满足请求的程度首先取决于它响应中断的速度,其次取决于系统是否具有足够的处理能力在要求的时间内处理所有的请求

(D)\muC/OS操作系统不是完全免费的操作系统

       【解析】Windows系统并不是因为速度不够快、效率不够高而不是实时操作系统。它的速度并不慢,效率也不低。

       【答案】(A)

2.数据库管理系统、图形用户界面、互联网浏览器、媒体播放器等软件,如果运行在嵌入式系统上,往往具有内部结构精简,___轻量化,占用存储资源___的特点。

       【答案】代码、少

3.实时系统的主要特征是能够及时响应外部发送的随机任务请求并且能够在规定的时限内完成任务。任务时限有两种:___时间,也就是任务开始执行时间到任务必须完成的时间间隔。___时间,或者叫做任务最快完成时间,这是无中断响应情况下的任务最快执行时间。

       【解析】截止时间,也就是任务开始执行时间到任务必须完成的时间间隔。任务执行预设时间,或者叫任务最快完成时间,这是无中断响应情况下的任务最快执行时间。

       【答案】

5.一般按响应事件将实时系统分成三类:___实时系统,其响应时间一般在毫秒级或微秒级;普通实时系统,其响应时间一般在秒级;___实时系统,其响应时间一般在数十秒级。

       【答案】强、弱

6.如下几种Bootloader中,用于Linux操作系统引导程序加载时所支持不同体系结构处理器种类最多的是(  )。

(A)LILO

(B)GRUB(C)U-Boot(D)Loadlin

       【解析】

       【答案】(C) 

7.IEEE的实时UNIX分委会认为实时操作系统应该具备若干特征,下面哪一项不是实时操作系统必须具有的特征?(  )。

(A)具有异步I/O和中断处理能力

(B)任务切换时间和中断延迟时间确定

(C)优先级中断和调度

(D)轮转调度

       【解析】

       【答案】()

8.一般按照对外部事件的响应时间快慢,将嵌入式操作系统分成强实时型和普通实时型。以下均为强实时嵌入式操作系统的是(  )。

(A)VxWorks,pSOS,\muC/OS-Ⅱ 

(B)VxWorks,pSOS,Windows Embedded

(C)pSOS,\muC/OS-Ⅱ、\muCLinux

(D)pSOS,Windows Embedded,Symbian

       【解析】 Windows Embedded系列基于相同版本Windows客户操作系统,因而不具有硬实时。排除(B)、(D)

       【答案】()

9.UNIX、嵌入式Linux、WinCE、Mac OS、 Android OS和DOS操作系统是典型单内核(也称宏内核)操作系统,相对于微内核操作系统,下面不属于单内核操作系统缺点的是(  )。

(A)占用内存空间大

(B)缺乏可扩展性而不方便移植

(C)内核切换太快

(D)可靠性较低

       【答案】(C) 

10.以下关于微内核操作系统的叙述中,错误的是(  )。

(A)内核小巧,传统操作系统内核中的许多部分都被移出内核

(B)接口一致,所有进程请求使用统一接口,进程不区分内核模式核用户模式服务

(C)各个功能模块之间松散耦合,只完成服务功能,系统管理功能交给一个或多个特权服务程序

(D)微内核功能扩充方便,而且各个功能之间的切换而引起的开销比较小

       【解析】

       【答案】(D)

11.关于微内核和宏内核操作系统,如下哪一项的说法是错误的?

(A)Vxworks是典型的微内核结构嵌入式操作系统

(B)iOS追根溯源是一个类UNIX操作系统,它属于宏内核架构

(C)Android OS是典型的宏内核操作系统

(D)一般认为微内核系统的实时性较好,故Symbian归类为强实时嵌入式操作系统

       【解析】

       【答案】() 

11.下面关于Linux内核的有关叙述中,错误的是(  )。

(A)进程调度模块负责控制进程对CPU资源的使用,所采取的调度策略是使得各个进程能够平均访问CPU,但并不保证内核能及时地执行硬件操作

(B)Linux内存管理模块的功能之一是屏蔽各种硬件内存结构的差异并向上返回统一的访问接口

(C)网络接口模块包含网络接口驱动程序

(D)支持进程之间各种通信机制,其通信机制主要包括信号、管道、消息队列、信号量、共享内存和套接字。

       【解析】

       【答案】() 

12.关于\muC/OS-Ⅱ的基本特点,以下说法错误的是(  )。

(A)\muC/OS-Ⅱ是抢占式实时操作系统内核

(B)由于存在内核任务,用户编写的应用程序最多可以有60个任务

(C)\muC/OS-Ⅱ不支持时间片轮转调度法

(D)\muC/OS-Ⅱ允许每个任务有不同的栈空间

       【答案】(B)

12.\muC/OS-Ⅱ总是运行处于就绪任务中优先级最高的那个任务,以下哪个说法是错误的?

(A)真正实现任务切换的函数是OSCtxSw()

(B)任务级的调度是由函数OSSched()完成

(C)中断级的调度是由函数OSintExit()完成

(D)实现上下文切换的函数是OSSched()

       【解析】

       【答案】()

13.\muC/OS-Ⅱ能够提供周期性时钟信号(即所谓的时钟节拍),用于实现任务的正确延时和超时确认。节拍率应在什么范围内?

(A)10Hz~100Hz

(B)10Hz~1000Hz(C)100Hz~1000Hz

(D)100Hz~10000Hz

       【解析】

       【答案】()

14. \muC/OS-Ⅱ的事件控制块有4种类型,需要使用4个不同的函数来创建。如下选项中哪一个用于创建事件控制块?

(A)OSTaskCreate()

(B)OSThreadCreate()(C)OSQCreate()

(D)OSCtxSW

       【解析】

       【答案】(C)

15.在\muC/OS-Ⅱ中有多种方法可以保护任务之间的共享数据和提供任务之间的通信。其中不能达到保护目的的方法是(  )。

(A)利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭中断和打开中断

(B)利用函数OSSchedLock()和OSSchedUnlock()对任务调度函数上锁和开锁

(C)利用信号量、互斥信号量、邮箱和消息队列进行任务间通信

(D)利用内存文件进行任务间的大规模数据共享

       【解析】(A)和(B)就是为了在程序进入临界区时,保护其不被中断,也不希望系统进行调度而采用。

       【答案】(D)

13.移植\muC/OS-Ⅱ到一个嵌入式系统电路板上正常运行,下面哪个条件不是必须的?(  )。

(A)处理器的C编译器能产生可重入代码,且用C语言就可以打开和关中断

(B)该电路板的处理器必须具备MMU(存储管理单元)

(C)处理器支持中断,并且能产生定时中断(通常在10至100Hz之间)

(D)处理器支持能够容纳一定量数据(可能是几千字节)的硬件栈区

       【解析】

       【答案】()

15.开发嵌入式系统时,需要构建一个宿主机-目标机的开发环境。若目标机是裸机,那么为了调试和下载软件需要将调试仿真器连接到目标机的哪一种接口?

(A)SPI接口

(B)以太网接口(C)JTAG接口(D)USB接口

       【答案】(C) 

第五章 嵌入式系统开发

5.1 嵌入式系统开发平台与工具

5.1.1 嵌入式系统的开发特点

       (1)使用宿主机-目标机的开发架构

                与大多数通用计算机即是软件的运行平台又是软件的开发平台不同,嵌入式系统的开发平台多半不是最终的运行平台。

5.1.2 系统开发工具软件

ADS 1.2

       ADS是ARM Developer Suite的首字母组合,是ARM公司推出的针对开发以ARM系列CPU为核心的嵌入式系统时常用的工具套件。

       ARM提供的可执行输出文件的模板包括了下面3个生成目标:

       (1)Debug 生成的输出文件中包含了所有调试信息,用于在开发过程中使用。

       设计者要确定连接顺序时,建议采用以下两种方式中的一种:

       (2)当地址映射关系比较复杂时,使用scatter(分散加载)格式的文件来确定输入文件的连接顺序。

GNU

       GNU是一种常用于开发基于Linux操作系统的嵌入式软件的工具套件,包括编译器、连接器、文本编辑器、语法除错等工具。

       GCC是一种针对Linux操作系统环境下应用程序的编译工具,是GNU开发工具套件中的核心工具软件。GCC所编译的目标机的处理器包括x86、ARM、PowerPC等体系结构的处理器,如ARM_Linux_GCC即是针对ARM体系结构的目标机的编译工具。

       GDB是GNU开发工具套件中的程序调试工具。

5.2 嵌入式系统的调试

       对嵌入式系统进行调试是实施阶段非常重要的工作,需要软件和硬件配合进行,既要借助“正确”的软件来测试硬件,也要借助“正确”的硬件来测试软件。

       调试的任务是分析测试中发现的错误,检查原因,定位故障(错误)位置,采取适当的措施,修改软/硬件,然后返回重新调试。调试工具的任务是控制程序代码的执行并使系统中看不见的信息成为可视,例如程序的执行流程、CPU寄存器和存储器内容的状态及其变化、OS中进程执行的历程和各种资源的状态等。不同复杂程度的嵌入式系统使用的调试工具不完全相同

5.2.1 在线仿真器(In-Circuit Emulator,ICE)

       ICE具有与所要开发的嵌入式系统相同的嵌入式处理器,使用ICE进行调试时,用在线仿真器取代被调试系统的处理器。这样,当在开发平台上通过ICE调试嵌入式系统时,如同正在使用原先的处理器一样。

5.2.2 指令集模拟器(Instruction Set Simulator,ISS)

       开发嵌入式系统时,软硬件的开发往往并不同步。通常,用户可以在一块标准的评估板上先开发一部分软件,待实际的目标板硬件完成后再进行系统级的调试和开发。另一种做法是借助开发平台提供的虚拟环境来进行软件的开发、调试,而不需要等待实体硬件的实现。

       指令集模拟器是在宿主机上模拟应用程序在目标机上运行行为的一个软件工具。

1.嵌入式系统的调试工具,其作用是控制___的执行,并使系统中看不见的信息成为可视。调试的目的是发现错误并___。因此,通常需借助多种调试工具来进行。

       【答案】程序代码、定位错误

2.若以S3C2410为核心的目标机上,已经移植成功Linux操作系统。若要开发该目标机Linux应用程序,通常使用arm-linux-___交叉编译器来编译应用程序。若要对一个应用程序进行调试排错,则应该在编译命令种加___参数对它进行编译。

       【答案】gcc、-g

3.在嵌入式系统开发时,有时会利用指令集模拟器来开发、调试相关的嵌入式应用软件。下面有关指令集模拟器的说明中,错误的是(  )

(A)指令集模拟器只能采用解释型的方式来仿真运行目标机器指令序列

(B)指令集模拟器中把目标处理器硬件逻辑用变量或数据结构表示

(C)指令集模拟器可以根据目标机指令集的定义生成目标机器指令序列,并仿真运行

(D)指令集模拟器是在宿主机(如:PC机)上运行的纯软件工具

       【解析】

       【答案】()

4.在ADS1.2的集成开发环境中,若生成的输出文件需要包含所有的调试信息,那么,生成目标应该选择为___。若目标系统地址映射关系比较复杂时,应该用___格式的文件来说明地址映射方式。

       【解析】

       【答案】Debug、scatter

第六章 基于嵌入式Web服务器

6.1 基于嵌入式Web服务的应用架构

       基于嵌入式Web服务器的应用需求与通用Web服务器的应用需求是不同的,它不是以提供信息服务为主,而是提供一个基于远程客户端的操控方式,即所谓的浏览器/服务器结构的操控方式,用户在远程的客户机上,通过浏览器与嵌入式Web服务器交互,从而操控被嵌入的设备。

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值