嵌入式复习题含全部答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统复习题
一、填空题:
1、试列举三种主流的嵌入式处理器:( ARM )、( MIPS )、(PowerPC)。
2、ARM处理器共有(37)个寄存器,其中包括(31个通用寄存器)和(6个状态寄存器)。
3、寄存器R13在ARM指令中(堆栈指针SP )。
R14也称(程序连接寄存器LR)在程序里的作用是(程序计数器PC的备份)。
当发生中断或异常时,对应分组寄存器分别是(R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值)。
4、ARM微处理器支持两种指令集:(ARM)和(Thumb)。
5、寄存器R15用作(程序计数器PC)。
该寄存器在ARM状态下,(位[1:0]为00),位[31:2]用于保存PC;在Thumb状态下,(位[0]为0),位[31:1]用于保存PC。
6、CPSR用作( 状态寄存器 ),CPSR可在任何运行模式下被访问。
每一种运行模式下又都有一个专用的物理状态寄存器,称为(程序状态保存寄存器SPSR)。
7、Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问的通用寄存器是(R0—R7,PC,SP,LR,CPSR)。
8、ARM指令中条件执行功能是通过(指令中添加条件码)来实现的,包含的条件码位于指令的最高(四)位。
9、试列举五种以上常见的嵌入式操作系统:(μC/OS-II)、(Vxworks)、(WinCE)、(Linux/μCLinux)、(PalmOS)。
10、计算机结构中,哈佛结构和冯?诺依曼结构的主要区别是(指令与数据分开),ARM7采用(冯?诺依曼结构),ARM9采用(哈佛结构)。
11、ARM处理器采用(Thumb指令)操作来访问SFR。
<SFR内部寄存器>
12、在ARM汇编语言程序设计中,语句一般是由(指令操作码)、(指令的条件码)、(目标寄存器编码)和(包含第一个操作数的寄存器编码)组成。
二、名词解释:
1、ARM处理器:先进的RISC指令集处理器。
广泛地使用在许多嵌入式系统设计。
2、交叉编译:在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,
这个编译过程就叫交叉编译。
3、异常:异是导致程序中断运
行的一种指令流。
(是指CPU在
执行指令时出现的错误,即不正
常的情况。
异常是与当前所执行
的程序有关的,如存取数据或指
令错误、计算结果溢出等。
)
4、大端格式:字数据的高字节
存储在低地址中,而字数据的低
字节则存放在高地址中。
5、小端格式:低地址中存放的
是字数据的低字节,高地址存放
的是字数据的高字节。
6、寻址方式:处理器根据指令
中给出的(地址)信息,寻找操
作数(物理地址)的方式。
7、嵌入式系统:广义上:凡是
不用于通用目的的可编程计算
机设备,就可以算是嵌入式计算
机系统。
狭义上而言,嵌入式系
统是指以应用为核心,以计算机
技术为基础,软硬件可裁剪,对
功能、可靠性、成本、体积和功
耗严格要求的专用计算机系统。
8、GNU:GNU(GNU’s Not Unix),
它的目标是建立可自由发布和
可移植的类Unix操作系统。
9、伪指令:是汇编语言程序里
的特殊指令助记符,在汇编时被
合适的机器指令替代。
10、伪操作:为汇编程序所用,
在源程序进行汇编时由汇编程
序处理,只在汇编过程起作用,
不参与程序运行。
11、RTOS :实时系统,能够对
外部事件做出及时响应的系统。
12、微控制器:俗称“单片机",
它将整个计算机系统集成到一
块芯片中。
三、简答题:
1、请从广义和狭义两个方面简
述嵌入式系统的含义。
答:嵌入式系统:Embedded
System
广义上:凡是不用于通用目
的的可编程计算机设备,就可以
算是嵌入式计算机系统。
狭义上:,嵌入式系统是指以
应用为核心,以计算机技术为基
础,软硬件可裁剪,对功能、可
靠性、成本、体积和功耗严格要
求的专用计算机系统。
2、简述采用RISC架构的ARM微
处理器的特点。
a.采用固定长度的指令格式,
指令规整,简单,基本寻址2~3
种。
b.使用单周期指令,便于流水
线操作。
c.大量使用寄存器,提高指令
的执行效率。
d.所有的指令都可以根据前
面的执行后,决定是否执行从而
提高指令的执行效率。
e.可以加载/存储指令,批量
传输数据,以提高数据的传输效
率。
3、选择嵌入式微处理器时,应
考虑那些因素?
a, 调查市场上已有的CPU供应
商。
b, CPU的处理速度
c,技术指标。
d,处理器的低功耗。
e,处理器的软件支持工具。
f,处理器是否内置调试工具。
g,处理器供应商是否提供评估
板。
h,片内存储容量。
4、简述嵌入式系统的特点。
(1)软硬件一体化,集计算机
技术、微电子技术、行业技术于
一体;
(2)需要操作系统支持,代码
少,执行速度快;
(3)系统内核小、专用性强、
系统精简。
(4)高实时性的系统软件(OS)
是嵌入式软件的基本要求。
(5)嵌入式软件开发要想走向
标准化,就必须使用多任务的操
作系统。
(6)嵌入式系统开发需要开发
工具和环境。
5、画出当前主流嵌入式系统的
硬件组成结构框图。
6、比较ARM920T和ARM720T的
主要异同。
ARM9 5级流水线独立的指令
总线哈佛结构
ARM7 3级流水线数据与指令
一起冯·诺依曼结构
7、ARM9指令是几级流水线,各
阶段执行什么操作?
答:ARM9采用5级流水线。
取指:从指令Cache中读取
指令。
译码:对指令进行译码,识
别出是对哪个寄存器进行操作
并从通用寄存器中读取操作数。
执行:进行ALU运算和移位
操作,如果是对存储器操作的指
令,则在ALU中计算出要访问
的存储器地址。
数据缓冲:如果是对存储器
访问的指令,用来实现数据缓冲
功能(通过数据Cache)
回写:将指令运算或操作结
果写回到目标寄存器中。
8、写出不少于12类嵌入式产品
中的常用接口。
UART接口、SPI接口、I2C接口、
ADC和触摸屏接口、USB接口、
以太网接口、外存接口、LCD接
口、时钟接口、PWM接口、中断
接口、JTAG接口、VGA接口、音
频接口
9、若允许FIQ、IRQ中断,CPSR
如何设置?
FIQ: CPSR[4:0]=0B10001 IRQ:
CPSR[4:0]=0B10010
CPSR[5]=0
CPSR[6]=0
CPSR[7]=0
10、举例说明ARM的各种寻址方
式。
寄存器寻址:LDR R1,R2
寄存器间接寻址:LDR R1,[R2]
寄存器偏移寻址:LDR
R1,[R2,-R4,LSL#3]
立即寻址:LDR,R3,#34
多寄存寻址:LDMIA
R0,{R1,R3,R4,R5}
11、对比说明ADR、ADRL与LDR
的区别与联系。
ADR:小范围的地址读取伪指令。
ADRL:中等范围的地址读取伪指
令。
LDR:大范围的地址读取伪指令。
ADR伪指令功能:将基于PC相对
偏移的地址值或基于寄存器相
对偏移的地址值读取到寄存器
中。
ADRL伪指令功能:将基于PC相
对偏移的地址值或基于寄存器
相对偏移的地址值读取到寄存
器中,比ADR伪指令可以读取更
大范围的地址。
LDR伪指令功能:用于加载32位
立即数或一个地址值到指定的
寄存器。
12、(没找到)
13、简述S3C2410 Nand flash 存储器的启动过程。
(1)完成复位
(2)如果自动启动模式使能,NAND Flash存储器的前4KB自动复制到Steppingstone内部缓冲器中
(3)Steppingstone映射到nGCS0
(4)CPU在Steppingstone的4KB 内部缓冲器中开始执行启动代码
14、简述Bootloader启动过程。
第一阶段
(1)、基本的硬件设备初始化
(2)、为阶段2代码准备RAM 空间
(3)、拷贝阶段2代码到RAM 空间
(4)、设置好堆栈
(5)、跳转到阶段2的C程序入口点
第二阶段
(1)、初始化本阶段要使用到的硬件
(2)、检测系统内存映射(memory map)
(3)、将kernel和根文件系统映像从flash读到RAM空间
(4)、为kernel设置启动参数
(5)、调用内核
15、请简述嵌入式软件Bootloader的两种工作模式。
(1)启动加载模式:启动加载模式称为“自举”(Autonomous)模式。
即Bootloader从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。
启动加载模式是 Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。
(2)下载模式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。
下载内容及存储:主要是下载内核映像和根文件系统映像等。
从主机下载的文件通常首先被Bootloader保存到目标机的RAM 中,然后再被 Bootloader写到目标机上的FLASH 类固态存储设备中。
16、简述ARM9处理器的7种运
行模式。
(1)用户模式(usr):非特权模
式,大部分任务执行在这种模
式。
(正常程序执行的模式)
(2)快速中断模式(fiq):当一
个高优先级(fast)中断产生时
将会进入这种模式。
(高速数据
传输或通道处理)
(3)外部中断模式(irq):当一
个低优先级(normal)中断产生
时将会进入这种模式。
(通常的
中断处理)
(4)管理模式(svc):当复位或
软中断指令执行时将会进入这
种模式。
(供操作系统使用的一
种保护模式)
(5)中止模式(abt):当存取异
常时将会进入这种模式。
(虚拟
存储及存储保护)
(6)未定义模式(und):当执行
未定义指令时会进入这种模式。
(软件仿真硬件协处理器)
(7)系统模式(sys):供需要访
问系统资源的操作系统任务使
用。
(特权级的操作系统任务)
17、ARM9处理器的寻址方式有那
些?
立即寻址、寄存器寻址、寄存
器间接寻址、基址寻址、堆栈寻
址、块拷贝寻址、相对寻址
18、ARM9有哪些处理器模式?哪
些是特权模式?哪些是异常模
式?
异常模式:除用户模式、系
统模式之外的五种模式称为异
常模式。
特点:以各自的中断或
异常方式进入,并且处理各自的
中断或异常。
特权模式:除用户模式之外
的工作模式又称为特权模式特
点:应用程序可以访问所有的系
统资源,可以任意地进行处理器
模式的切换
19、ARM9的7种工作模式中用户
模式为非特权模式,与特权模式
相比有哪些权限限制?
(1)在用户模式下,应用程序
不能访问受操作系统保护的系
统资源,不能进行处理器模式的
切换。
(2)在特权模式下,应用程序
可以访问所有的系统资源,可以
任意进行处理器模式的切换。
20、S3C2410存储器组织及地址
分配。
S3C2410X的存储器管理器
提供访问外部存储器的所有控
制信号:26位地址信号、32位
数据信号、8个片选信号、以及
读/写控制信号等。
S3C2410X的存储空间分成8
组,最大容量是1GB,
bank0---bank5为固定128MB,
bank6和bank7的容量可编程改
变,可以是2、4、8、16、32、
64、128MB,并且bank7的开始
地址与bank6的结束地址相连
接,但是二者的容量必须相等。
bank0可以作为引导ROM,
其数据线宽只能是16位和32
位,复位时由OM0、OM1引脚确
定;其它存储器的数据线宽可以
是8位、16位和32位。
S3C2410X的存储器格式,可
以编程设置为大端格式,也可以
设置为小端格式。
21、ARM7在ARM状态下有多少个
寄存器?通常堆栈指针使用哪
个寄存器?连接寄存器LR有什
么功能?
答:有37个32位的寄存器其
中31个为通用寄存器;6个为状
态寄存器。
R13:寄存器R13在ARM指
令中常用作堆栈指针SP。
而在
Thumb指令集中,某些指令强制
性的要求使用R13作为堆栈指
针。
R14:寄存器R14也称作子
程序链接寄存器(Subroutine
Link Register)或链接寄存器
LR。
当执行BL子程序调用指令
时,R14中得到R15(程序计数
器PC)的备份。
其他情况下,R14
用作通用寄存器。
22、嵌入式处理器ARM7/9TDMI
中TDMI的基本含义是什么?
TDMI的基本含义为(对其它
系列也适用):
T:支持16位压缩指
令集Thumb,称为T变种
D:支持片上Debug,
称为D变种
M:内嵌硬件乘法器
Multiplier,称为M变种
I:嵌入式ICE,支持
片上断点和调试,称为I变种
23、简述冯-诺伊曼、哈佛结构
的特点
(1)冯·诺曼结构特点:
必须有一个存储器;必须有
一个控制器;必须有一个运算
器,用于完成算术运算和逻辑运
算;必须有输入和输出设备,用
于进行人机通信。
但是,这种指
令和数据共享同一总线的结构,
读取数据不能在同一时刻进行,
影响了数据处理速度的提高。
(2)哈佛结构的特点
使用两个独立的存储器模
块,分别存储指令和数据,每个
存储模块都不允许指令和数据
并存;使用独立的两条总线,分
别作为CPU与每个存储器之间的
专用通信路径,而这两条总线之
间毫无关联。
24、CPSR各位的含义及作用。
31 30 29 28 27 …
8 7 6 5 4 3
2 1 0
N Z C V (保留)
I F T M4 M3 M2 M1
M0
1、条件码标志位(保存ALU
中的当前操作信息)
N:正负号/大小标志位
Z:零标志位
C:进位/借位/移出位
V:溢出标志位
2、控制位
I、F中断控制位——控制允
许和禁止中断
T控制(标志)位——反映处
理器的运行状态
M控制位——决定了处理器
的运行模式
25、简述ARM9异常的优先级
由高到低依次为:复位、数
据中止、FIQ 、IRQ、预取中止、
未定义指令、SWI;
26、ARM处理器支持的数据类型
有哪些?
ARM微处理器支持字节(8
位)、半字(16位)、字(32
位)3种数据类型,可以表示有
符号数和无符号数。
27、Linux的主要特点有哪些?
开放性、多用户、多任务、
良好的用户界面、设备独立性、
丰富的网络功能、可靠的安全系
统、良好的可移植性。
28、Linux常用命令。
ls---文件及子目录名列表
cat---连续显示
cd---改变工作目录(目录切换)cp---复制文件和目录
29、Linux文件系统目录树结构是怎样的?
Linux文件系统是一个目录树结构,最上层是根目录,其他的所有目录都是从根目录出发而生成的。
Linux下,任何一个目录都可以是一个分区。
因此,在分区时,必须将一个分区安装在树根下面。
Linux不仅将分区安装为一个目录,而且还将所有的硬件设备都安装成一个个设备文件。
对设备的操作是通过文件的操作完成的。
30、常用的Bootloader有那些?
(1)vivi
(2)RedBoot
(3)U-Boot
31、Makefile和Make各实现什么功能?
Makefile文件内容按照规则,对系统中本目录下的文件(.c、.s、.o、.h、.lib等)根据相互关系和要求进行组织,设定各自的编译方法,指定所生成的目标。
Makefile是一种文本格式文件。
Make是Makefile文件的解释器
Make对Makefile文件解释后,生成Linux的shell命令和gcc编译命令,接着对命令执行,最终生成目标文件。
Makefile是工程系统编译批处理文件。
32、ARM有哪两种工作状态,怎
样有指令进行切换?
从ARM状态切换到Thumb状
态
有两种情况ARM处理器自动
切换到Thumb状态。
(1)执行BX指令,当操作
数寄存器的位[0]为1时,则微
处理器从ARM状态切换到Thumb
状态。
此为主动切换。
(2)当处理器处于Thumb
状态时发生异常(如IRQ、FIQ
等),处理完异常后,在异常处
理返回时,自动切换到Thumb状
态。
此为自动切换。
从Thumb状态切换到ARM状
态
有两种情况ARM处理器自动
切换到Thumb状态。
(1)执行BX指令,当操作
数寄存器的位[0]为0时,则微
处理器从Thumb状态切换到ARM
状态。
(2)当处理器在Thumb状态
时发生异常(如IRQ、FIQ等),
则处理器从Thumb状态自动切换
到ARM状态进行异常处理
33、熟悉ARM9指令系统、伪指
令、伪操作。
34、S3C2410有那些数据通信接
口?
UART接口、SPI接口、IIC
接口、JTAG接口、以太网接口、
USB接口
35、简述JTAG借口、串口和以
太网接口在一般嵌入式系统调
试中的作用
(1)JTAG一般用于
Bootloader等底层程序的调试,
下载;
(2)串口是在已有
Bootloader/BIOS的前提下用于
操作系统的调试,下载;
(3)以太网口是在操作系统内
核已经调试好了的前提下用于
应用文件的调试,下载。
36、ARM所有的37个寄存器,分
为哪两大类?
31个通用寄存器和 6
个状态寄存器。
37、在异常发生后,ARM9TDMI内
核会做哪些工作?
在异常发生后,ARM7TDMI
内核会作以下工作:
1.在适当的LR中保存下一
条指令的地址
2.将CPSR复制到适当的
SPSR中;
3. 将CPSR模式位强制设
置为与异常类型相对应的值;
4.强制PC从相关的异常向
量处取指。
38、ARM9处理器有哪些堆栈方式,
各堆栈的特点是什么?
(1)Full descending 满递减
堆栈,堆栈首部是高地址,堆栈
向低地址增长。
栈指针总是指向
堆栈最后一个元素(最后一个元
素是最后压入的数据)。
(2)Full ascending 满递增堆
栈,堆栈首部是低地址,堆栈向
高地址增长。
栈指针总是指向堆
栈最后一个元素(最后一个元素
是最后压入的数据)。
(3)Empty descending 空递减
堆栈,堆栈首部是低地址,堆栈
向高地址增长。
栈指针总是指向
下一个将要放入数据的空位置。
(4)Empty ascending 空递增
堆栈,堆栈首部是高地址,堆栈
向低地址增长。
栈指针总是指向
下一个将要放入数据的空位置。
39、比较Nor Flash 和Nand
flash 存储器的优缺点
Nor Flash:读数据速度快,
而擦写速度慢,容量小,价格高;
Nand flash: 读数据速度不如
Nor,但擦写速度快,容量大,
价格低。
40、gcc的整个编译过程有哪4
个步骤?
预处理、编译、汇编、连
接
四、编程题:
1、编写一个汇编程序,在ARM
程序代码中调用Thumb子程序,
并返回ARM程序完成其功能。
CODE32
--------
BLX TSUB1
-------
CODE16
TSUB1
-------
BX R14
2、将存储器中0x30000000开始
的200字节的数据,传送到地址
从0x10000000开始的某接口电
路的存储区域。
START
LDR R0,=0X30000000
LDR R1,=0X10000000
MOV R4,#0
LKM
LDRB R2,[R0],#1
STRB R2,[R1],#1
ADD R4,R4,#1
CMP R4,#200
BLNE LKM
END
3、编写一简单ARM汇编程序段,
实现1+2+…+1000的累加运算。
MOV R0,#0
MOV R1,#0
LKM
ADD R0,R0,#1
ADD R1,R1,R0
CMP R0,#1000
BLNE LKM
END
4、将内存中从0x30000FFF开始
的100个字数据相加,其结果存
于R3、R2中。
LDR R0,=0X30000000
MOV R4,#0
MOV R2,#0
MOV R3,#0
LKM
LDR R5 , [R0],#4
ADDS R3, R3,R5
ADDC R2, R2,#0
ADD R4,R4,#1
CMP R4,#100
BLNE LKM
END
5、编写一程序,查找存储器从
0x30000000开始的100个字中为
0的数目,将其结果存到
0x30000012中。
START
LDR R0,=0X30000000
LDR R1,=0X30000012
MOV R3,#0
MOV R4,#0
LKM
LDR R2,[R0],#4
ADD R3,R3,#1
CMP R2,#0
ADDEQ R4,R4,#1
CMP R3,#100
BLNE LKM
STR R4,[R1]
END
6、R0和R1中有两个32位无符
号数,若R0>R1,则R0=R0-R1;
若R0<R1,则R1=R1-R0;若R0
=R1,则R1、R0保持不变。
CMP R0,R1
SUBHS R0,R0,R1
SUBCC R1,R1,R0
7、试编写程序,实现计算2+4+6+8+…+2N的值。
MOV R5,#0
MOV R3,#0
MOV R4,#0
LABLE EQU #0X2300000
MOV LABLE,#300
LKM
ADD R3,R3,#2
ADD R4,R4,R3
ADD R5,R5,#1
CMP R5,#LABLE
BLNE LKM
END
9、编程实现S3C2410工作模式的切换。
MRS R0,CPRS
BIC R0,R0,#&1F
ORR R0,R0,#&12
MSR CPSR_C R0
10、UART初始化编程。
START
LDR R0,=UFCON0
LDR R1,=0X0
STR R1,[R0]
LDR R0,=ULCON0
LDR R1,=0X3
STR R1,[R0]
LDR R0,=UCON0
LDR R1,=0X245
STR R1,[R0]
LDR R0,=PCLK
MOV R1,[R0]
11、A/D初始化编程;
Void AD_Init (unsigned char ch)
{RADCDLY = 100;
RADCTSC = 10;
RADCCDN = (1<<14) | (49<<6) | (ch<<3) | (0<<2) | (0<<1) |(0);
}
12、定时器初始化编程;
ARM
ADR R0,lable+1
BX R0
THUMB
ThumbProg
ADR R0,lable
BX R0
ARM
ARM Prog
mov R4,#4
13、编程实现在用户模式下打开IRQ中断。
14、编程实现禁止ARM处理器内
部看门狗;
INIT:
LDR R0,=0x53000000
Mov R1,#0
STR R1,[R0]
END
15、编程实现各工作模式的堆栈
初始化。
未定义模式:
LDR r0, =_stack
@ Read the stack address
MSR cpsr_c,
#MODE_UND|I_F_BIT @
switch to undef mode
MOV sp,r0
@ write the stack pointer
SUB r0, r0,
#UND_STACK_SIZE @
give stack space
中止模式
MSR cpsr_c,
#MODE_ABT|I_F_BIT @
Change to abort mode
MOV sp, r0
@ write the stack pointer
SUB r0,r0,
#ABT_STACK_SIZE @
give stack space
快速中断模式:
MSR cpsr_c,
#MODE_FIQ|I_F_BIT @
change to FIQ mode
MOV sp,r0
@ write the stack pointer
SUB r0,r0,
#FIQ_STACK_SIZE @
give stack space
外部中断模式:
MSR cpsr_c,
#MODE_IRQ|I_F_BIT @
change to IRQ mode
MOV sp,r0
@ write the stack pointer
SUB r0,r0,
#IRQ_STACK_SIZE @
give stack space
管理模式:
MSR cpsr_c,
#MODE_SVC|I_F_BIT @
change to SVC mode
MOV sp,r0
@ write the stack pointer
SUB r0,r0,
#SVC_STACK_SIZE @
give stack space
用户/系统模式:
MSR cpsr_c,
#MODE_SYS|I_F_BIT @
change to system mode
MOV sp,r0
@ write the stack point
考试题型
填空20分;单项选择20分;名
词解释12分;简答题20分;编
程题28分。