嵌入式复习题(含全部答案) 下载本文

内容发布更新时间 : 2024/5/2 21:02:44星期一 下面是文章的全部内容请认真阅读。

嵌入式系统复习题

一、填空题:

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。 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、 请从广义和狭义两个方面简ARM7 3级流水线 数据与指令述嵌入式系统的含义。

一起 冯·诺依曼结构 答:嵌入式系统:Embedded

System

7、ARM9指令是几级流水线,各 广义上:凡是不用于通用目阶段执行什么操作?

的的可编程计算机设备,就可以答:ARM9采用5级流水线。 算是嵌入式计算机系统。

取指:从指令Cache中读取 狭义上:,嵌入式系统是指以指令。

应用为核心,以计算机技术为基 译码:对指令进行译码,识础,软硬件可裁剪,对功能、 可别出是对哪个寄存器进行操作靠性、成本、体积和功耗严格要并从通用寄存器中读取操作数。 求的专用计算机系统。 执行:进行ALU运算和移位

操作,如果是对存储器操作的指2、简述采用RISC架构的ARM微令,则在ALU中计算出要 访问处理器的特点。

的存储器地址。

a.采用固定长度的指令格式, 数据缓冲:如果是对存储器指令规整,简单,基本寻址2~3访问的指令,用来实现数据缓冲种。

功能(通过数据Cache)

b.使用单周期指令,便于流水 回写:将指令运算或操作结线操作。

果写回到目标寄存器中。 c.大量使用寄存器,提高指令

的执行效率。

8、写出不少于12类嵌入式产品 d.所有的指令都可以根据前中的常用接口。

面的执行后,决定是否执行从而UART接口、SPI接口、I2C接口、提高指令的执行效率。

ADC和触摸屏接口、USB接口、 e.可以加载/存储指令,批量以太网接口、外存接口、LCD接传输数据,以提高数据的传输效口、时钟接口、PWM接口、中断率。 接口、JTAG接口、VGA接口、音

频接口 3、 选择嵌入式微处理器时,应

考虑那些因素?

9、 若允许FIQ、IRQ中断,CPSRa, 调查市场上已有的CPU供应如何设置?

商。

FIQ: CPSR[4:0]=0B10001 IRQ: b, CPU的处理速度 CPSR[4:0]=0B10010 c,技术指标。

CPSR[5]=0 d,处理器的低功耗。

CPSR[6]=0 e,处理器的软件支持工具。 CPSR[7]=0 f,处理器是否内置调试工具。

g,处理器供应商是否提供评估10、举例说明ARM的各种寻址方板。

式。

h,片内存储容量。 寄存器寻址:LDR R1,R2

寄存器间接寻址:LDR R1,[R2] 4、简述嵌入式系统的特点。 寄存器偏移寻址:LDR (1)软硬件一体化,集计算机R1,[R2,-R4,LSL#3] 技术、微电子技术、行业技术于立即寻址:LDR,R3,#34

一体;

多寄存寻址:LDMIA (2)需要操作系统支持,代码R0,{R1,R3,R4,R5} 少,执行速度快;

(3)系统内核小、专用性强、11、 对比说明ADR、ADRL与LDR系统精简。

的区别与联系。

(4)高实时性的系统软件(OS)ADR:小范围的地址读取伪指令。 是嵌入式软件的基本要求。 ADRL:中等范围的地址读取伪指(5)嵌入式软件开发要想走向令。

标准化,就必须使用多任务的操LDR:大范围的地址读取伪指令。 作系统。

ADR伪指令功能:将基于PC相对(6)嵌入式系统开发需要开发偏移的地址值或基于寄存器相工具和环境。 对偏移的地址值读取到寄存器

中。

5、画出当前主流嵌入式系统的ADRL伪指令功能:将基于PC相硬件组成结构框图。

对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存

器中,比ADR伪指令可以读取更6、 比较ARM920T和ARM720T的大范围的地址。 主要异同。 LDR伪指令功能:用于加载32位

立即数或一个地址值到指定的ARM9 5级流水线 独立的指令寄存器。

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

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 填空20分;单项选择20分;名@ Read the stack address 词解释12分;简答题20分;编 MSR cpsr_c, 程题28分。 #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