21嵌入式设计复习题答案要点.docx
《21嵌入式设计复习题答案要点.docx》由会员分享,可在线阅读,更多相关《21嵌入式设计复习题答案要点.docx(21页珍藏版)》请在冰豆网上搜索。
21嵌入式设计复习题答案要点
一、填空题
1、哈佛体系结构数据空间和地址空间(分开),ARM920T采用(哈佛)的内核架构。
2、ARM7TDMI采用(3)级流水线结构,ARM920TDMI采用(5)级流水线。
3、ARM7TDMI中,T表示支持16位Thumb指令集,D表示(在片可调式),M表示内嵌乘法器Multiplier,I表示(嵌入式ICE),支持在线断点和调试。
4、“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。
5、ARM处理器共有37个寄存器,31个通用寄存器,6个状态寄存器。
寄存器R13通常用作堆栈指针,称作SP。
寄存器R14用作子程序链接寄存器,也称为链接寄存器LK(LinkRegister)。
6、程序状态寄存器CPSR的N、Z、C、V分别指--,I=1指-禁止IRQ中断-、F=1指-禁止FIQ中断-,M[4:
0]用做-处理器模式选择-。
7、ARM微处理器支持四种类型的堆栈,即:
满递增堆栈、满递减堆栈、空递增堆栈、空递减堆栈。
8、ARM微处理器有7种工作模式,它们分为两类特权模式、非特权模式。
其中用户模式属于非特权模式
9、ARM支持两个指令集,ARM核因运行的指令集不同,分别有两个状态ARM状态、thumb状态,状态寄存器CPSR的T(或者填D5)位反映了处理器运行不同指令的当前状态
10、ARM处理器有两种总线架构,数据和指令使用同一接口的是冯诺依曼结构,数据和指令分开使用不同接口的是哈佛结构
11、ARM核有多个寄存器,其中大部分用于通用寄存器,有小部分作为专用寄存器,R15寄存器用于存储PC,R13通常用来存储SP(或者填堆栈指针)
12、编译链接代码时,有两种存储代码和数据的字节顺序,一种是小端对齐,另一种是大端对齐
13、不同的中断处理不同的处理模式,具有不同的优先级,而且每个中断都有固定的中断入口地址。
当一个中断发生时,相应的R14存储中断返回地址,SPSR存储状态寄存器CPSR的值。
14、嵌入式微处理器有嵌入式微处理器、嵌入式微控制器、曲入式DSP处理器和嵌入式片上系统四种类型。
15、ARM9TDMI采用5级流水线:
取指、译码、执行、访存和写回。
16、AMBA总线结构包括ASB、AHB和APB总线。
ASB/AHB用于CPU与存储器、DMA控制器、总线仲裁控制器等片上系统中芯片的连接,APB用于连接低速的外围设备。
17、函数的参数传递方法有两种:
R0~R3寄存器和堆栈
9、下列32位数中,不可作为立即数的是__A__
A、0x81000007
B、0x04800000
C、0x00000012
D、0x8000007
11、S3C2410采用的是D核心
A、ARM7TDMI B、ARM9TDMI C、ARM926EJ-SD、ARM920T
13、MMU的作用有AB
[A]内存保护[B]地址转换(将虚地址转换成物理地址)[C]加快存取速度[D]安全保密[E]内存分配
15、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为D
A、0x21B、0x68C、0x65D、0x02
16、RS232-C串口通信中,表示逻辑1的电平是D。
A、0vB、3.3vC、+5v~+15vD、-5v~-15v
17、ARM汇编语句“ADDR0,R2,R3,LSL#1”的作用是A。
A.R0=R2+(R3<<1)B.R0=(R2<<1)+R3
C.R3=R0+(R2<<1)D.(R3<<1)=R0+R2
18、IRQ中断的入口地址是C。
FIQ的入口地址为0x0000001C
A、0x00000000B、0x00000008C、0x00000018D、0x00000014
20、ADDR0,R1,#3属于A寻址方式。
A.立即寻址B.多寄存器寻址C.寄存器直接寻址D.相对寻址
21、GET伪指令的含义是A
A.包含一个外部文件B.定义程序的入口C.定义一个宏D.声明一个变量
23、若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDRR0,[R1,#8]!
后R0的值为D。
A.0x2000B.0x86C.0x2008D.0x39
28、LDRR2,[R3,#128]的寻址方式是C。
A.寄存器寻址B.寄存器移位C.变址寻址D.间接寻址
29、当一个中断发生时,相应的A(LR)存储中断返回地址。
A.R14B.R1C.R2D.R15
32、S3C2410X存储控制器支持大端、小端模式存储,可寻址C的空间。
A.1MBB.1TBC.1GBD.1B
二、指令解析
1、LDRR0,[R1];从R1寄存器指向的地址中取出一个字的数据,存储到R0寄存器中
2、STRR0,[R1],#8;将R0中的字数据写入R1为地址的存储器中,并将新地址R1+8写入R1
3、ADDSR1,R1,#1;R1+1给R1
4、LDMFDR13!
,{R0,R4-R12,PC};将堆栈内容恢复到寄存器(R0,R4到R12,LR)。
5、初始值R1=23H,R2=0FH执行指令BICR0,R1,R2,LSL#1后,寄存器R0,R1的值分别是多少?
R0=21H,R1=23H,R2=1EH
6、写一条ARM指令,完成操作r1=r2*3(4分)
addr1,r2,r2LSL#1
7、说明指令STMIAr12!
{r0-r11}的操作功能。
(4分)
将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。
8、ADDR0,R0,#1;将R0+1的结果送R0是保存
9、ADDR0,R1,[R2];将以R2中的内容为地址的单元中的值与R1相加,结果送R0保存
10、LDRR0,[R1+4];指令实现的功能是将R1的内容加4后送R0
4.LDRR0,[R1+4]!
;将R1的内容加4后送R0,然后R1的内容自增4个字节
5.BLable;程序无条件跳转到标号Lable处执行
MOVR1,R0;指令实现的功能是将寄存器R0的值传送到寄存器R1
7.CMPR1,R0;寄存器R1的值与寄存器R0的值相减,根据结果设置CPSR的标志位
8.CMNR1,R0;将寄存器R1的值与寄存器R0的值相加,根据结果设置CPSR的标志位
9.ORRR0,R0,#3;该指令设置R0的0、1位,其余位保持不变
10.MRSR0,SPSR;传送SPSR的内容到R0
11.CMPR1,R2;寄存器R1的值与寄存器R2的值相减,根据结果设置CPSR的标志位
12.MRSR0,CPSR;传送SPSR的内容到R0
13.MOVR2,R0;将寄存器R0的值传送到寄存器R2
14.ADDR1,R1,#3;将R1+3的结果送R1是保存
15.ADDR2,R1,[R0];将以R0中的内容为地址的单元中的值与R1相加,结果送R2保存
16.LDRR1,[R0+4];将R1的内容加4后送R0
17.LDRR1,[R0+4]!
;将R1的内容加4后送R0,然后R1的内容自增4个字节。
18.ANDR0,R0,#3;保持R0的0、1位,其余位清零
19.B0x1200;程序无条件跳转到0x1200处执行
20.CMNR1,R2;将寄存器R1的值与寄存器R2的值相加,并根据结果设置CPSR的标志位
三、看图回答
1、下图是ARM9处理器的当前程序状态寄存器,请简单说明各位的功能。
N:
负标志位,运算结果的第31位值,记录标志设置的结果。
Z:
零标志位,如果标志设置操作的结果为0,则置位。
C:
进位标志位,记录无符号加法溢出,减法无错位,循环移位。
V:
溢出标志位,记录标志设置操作的有符号溢出。
I:
中断禁止标志位,置位时禁止IRQ中断,否则允许IRQ中断使能。
F:
中断禁止标志位,置位时禁止FIQ中断,否则允许FIQ中断使能。
T:
控制位,置位时处理器运行在Thumb状态下,清零时处理器运行在ARM状态下。
M0~M4:
模式控制位,定义处理器的7中模式。
其余位为保留位,留作将来使用。
2、阅读下列与看门狗有关的寄存器描述,解释每一行代码的功能。
看门狗定时器控制寄存器(WTCON)
寄存器
地址
读/写
描述
初始值
WTCON
0x53000000
读/写
看门狗定控制寄存器
0x8021
WTCON的标识位
WTCON
Bit
描述
初始值
PrescalerValue
[15:
8]
预装比例值,有效范围值为0~255
0x80
Reserved
[7:
6]
保留
00
WatchdogTimer
[5]
使能和禁止看门狗定时器
0=禁止看门狗定时器
1=使能看门狗定时器
0
ClockSelect
[4:
3]
这两位决定时钟分频因素
00:
1/1601:
1/32
10:
1/6411:
1/128
00
InterruptGeneration
[2]
中断的禁止和使能
0=禁止中断产生
1=使能中断产生
0
Reserved
[1]
保留
0
Reset
Enable/Disable
[0]
禁止很使能看门狗复位信号的输出
1=看门狗复位信号使能
0=看门狗复位信号禁止
1
看门狗定时器数据寄存器(WTDAT)
寄存器
地址
读/写
描述
初始值
WTDAT
0x53000004
读/写
看门狗数据寄存器
0x8000
看门狗计数寄存器(WTCNT)
寄存器
地址
读/写
描述
初始值
WTCNT
0x53000008
读/写
看门狗计数器当前值
0x8000
#definerWTCON(*(volatileunsigned*)0x53000000)//第1行
#definerWTDAT(*(volatileunsigned*)0x53000004)//第2行
#definerWTCNT(*(volatileunsigned*)0x53000008)//第3行
voidwatchdog_test(void)
{
rWTCON=((PCLK/1000000-1)<<8)|(3<<3)|(1<<2);//第4行
rWTDAT=7812;//第5行
rWTCNT=7812;//第6行
rWTCON|=(1<<5);//第7行
}
3、阅读以下S3C2410部分用户手册.求:
当PCLK或UCLK为40MHz时,串口0的波特率为2400bps,串口1的波特率为115200bps,相应的控制寄存器如何设置.
UARTBAUDRATEDIVISORREGISTER
TherearethreeUARTbaudratedivisorregisters(寄存器)includingUBRDIV0,UBRDIV1andUBRDIV2intheUART block(模块). Thevaluestoredinthebaudratedivisorregister(UBRDIVn),isusedtodeterminetheserialTx/Rxclockrate(baudrate)asfollows:
UBRDIVn=(int)(PCLK/(bpsx16))–1orUBRDIVn=(int)(UCLK/(bpsx16))–1
Where,thedivisorshouldbefrom1to(216-1)andUCLKshouldbesmallerthanPCLK.
Register
Address
R/W
Description
ResetValue
UBRDIV0
0x50000028
R/W
Baudratedivisorregister0
–
UBRDIV1
0x50004028
R/W
Baudratedivisorregister1
–
UBRDIV2
0x50008028
R/W
Baudratedivisorregister2
–
UBRDIVn
Bit
Description
InitialState
UBRDIV
[15:
0]
BaudratedivisionvalueUBRDIVn>0
–
4、ARM9TDMI中的T、D、S、I分别表示什么含义?
答:
T表示支持16位Thumb指令集,D表示在片可调式(Debug),
M表示内嵌乘法器Multiplier,I表示嵌入式ICE,支持在线断点和调试。
4、ARM处理器模式和ARM处理器状态有什么区别?
答:
(1)ARM7TARM体系结构支持7种处理器模式,分别为:
用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。
(2)ARM处理器状态:
ARM状态、Thumb状态。
(3)两种处理器状态都有这7种处理器模式;两个状态之间切换并不影响处理器模式或寄存器内容。
5、ARM9TDMI有几种寻址方式?
答:
立即寻址寄存器寻址基地址变址寻址寄存器偏移寻址寄存器间接寻址多寄存器寻址
6、ARM9的内部寄存器R13、R14、R15的主要功能和作用?
11、ARM9TDMI支持的数据类型有几种?
各有什么要求?
12、ARM920T体系结构支持哪两种方法存储字数据?
18.画出采用大端格式存放01020304H的存储器示意图。
19.画出采用小端格式存放05060708H的存储器示意图。
20、用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配
21、假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。
22、答:
加法:
ADDSr0,r0,r1//加S是因为要让这个操作影响标志位
ADCr2,r2,r3//ADC是带进位的加法,如果上一条指令产生进位则一起加进来
减法:
SUBSr0,r0,r1//加S是因为要让这个操作影响标志位
1)SBCr2,r2,r3//SBC是带进位的减法指令
2)23、ARM微处理器内核是如何进行异常处理的?
答:
1)当异常产生时,ARM内核拷贝CPSR到SPSR_,设置适当的CPSR位:
改变处理器状态进入ARM态,改变处理器模式进入相应的异常模式,设置中断禁止位禁止相应中断(如果需要);保存返回地址到LR_,设置PC为相应的异常向量。
2)返回时,异常处理需要从SPSR_恢复CPSR,从LR_恢复PC,注意:
这些操作只能在ARM态执行。
26、简述μC/OS-Ⅱ操作系统的移植条件。
答:
要使μc/os-ii能正常运行,处理器必须满足以下要求。
(1)处理器的c编译器能产生可重入代码
可重入代码是指可以被多个任务同时调用,而不会破坏数据的一段代码;或者说代码具有在执行过程中打断后再次被调用的能力。
(2)处理器支持中断,并且能产生定时中断
arm处理器支持中断并能产生定时中断。
(3)c语言可以开/关中断
arm处理器核包含一个cpsr寄存器,该寄存器包括一个全局中断禁止位,控制它打开和关闭中断。
(4)处理器支持一定数量的数据存储硬件堆栈
对于一些只有10根地址线的8位控制器,芯片最多可访问1kb存储单元,在这样的条件下移植是比较困难的。
(5)处理器有将堆栈指针以及其他cpu寄存器的内容读出并存储到堆栈或内存中去的指令
arm处理器中汇编指令stmfd可以将所有寄存器压栈,对应的也有一个出栈指令ldmfd。
29、在进行基于ARM核的嵌入式系统软件开发时,调用如下函数:
intdo_something(intarg1,void*arg2,chararg3,int*arg4)
这四个参数通过什么方式从调用程序传入被调函数?
根据ATPCS编程规范,调用函数和子程序通过R0——R3四个寄存器传递参数,超过四个参数使用堆栈传递。
因此arg1通过R0传入,arg2,通过R1传入,arg3通过R2传入,arg4通过R3传入
四、编程题
1.用汇编语言编写程序读取存储器0x40003100地址上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。
2、用汇编语言调用C语言实现n个数相加,n为C函数的参数,由汇编语言传递,结果存放在R5寄存器中。
C程序:
汇编程序:
6、大(小)端地址模式:
占多字节的数据在存储时,如果高位字节存在低地址(首地址),称大端地址模式;如果低位字节存在低地址(首地址),称小端地址模式。
一.简答题
1、简述冯•诺依曼结构与哈佛结构,并指出日常生活中的Intel处理器属于哪种结构。
答:
冯·诺依曼结构:
将数据和指令都存储在存储器中的计算机。
计算系统由一个中央处理单元(CPU)和一个存储器组成。
存储器拥有数据和指令,并且可以根据所给的地址对它进行读或写。
哈佛结构:
为数据和程序提供了各自独立的存储器。
程序计数器只指向程序存储器而不指向数据存储器
2、与通用计算机相比,嵌入式系统有哪些特点?
答:
嵌入式系统同通用型计算机系统相比具有以下特点:
1)嵌入式系统是面向特定应用的。
2)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。
3)嵌入式系统的硬件和软件都必须高效率地设计。
4)嵌入式系统具有较长的生命周期。
5)嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
6)嵌入式系统本身不具备自举开发能力,必须有一套开发工具和环境才能进行开发。
5、简述采用RISC架构的ARM微处理器的特点。
答:
采用RISC架构的ARM微处理器一般具有如下特点:
1)体积小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3)大量使用寄存器,指令执行速度更快;4)大多数数据操作都在寄存器中完成;5)寻址方式灵活简单,执行效率高;6)指令长度固定;
11、简述μC/OS-Ⅱ操作系统的移植条件
答:
要使μC/OS-Ⅱ正常运行,处理器必须满足5个要求:
a)处理器的C编译器能产生可重入型代码;b)处理器支持中断,并且能产生定时中断;c)用C语言就可以开/关中断;d)处理器能支持一定数量的数据存储硬件堆栈;e)处理器有将堆栈指针以及其它CPU寄存器的内容读出,并存储到堆栈或内存中去的指令。
12、简要说明嵌入式操作系统多任务通讯的常用方式。
答:
多任务通讯的方式:
a)共享内存,主要是数据的共享;b)信号量,用于基本的互斥和任务同步;c)消息队列和管道,单CPU的消息传送;d)Socket和远程过程调用,用于网络间任务消息传送。
13、描述嵌入式系统方案设计和执行项目过程中的五个主要工作步骤。
答:
系统规划、系统设计、系统实现、系统测试、系统调试
五、论述题
1、嵌入式发展到今天,对应于各种微处理器的硬件平台都是通用的、固定的;各种相应的软件比较成熟,模块化程度比较高;因此,当今的开发过程更多的注重开发流程,合理、科学的开发流程往往可以达到事半功倍的效果。
假设你现在某从事嵌入式产品开发的公司工作,被要求开发一通用的数字电视接收控制器,即通常所说的“机顶盒”,对于机顶盒的开发,请你结合嵌入式系统的设计流程叙述一下将采取的设计开发流程。
(整个流程需包括从产品定义到产品测试和发布)
答:
嵌入式系统设计过程:
(1)系统定义与需求分析
(2)系统设计方案的初步确立
(3)初步设计方案性价比评估与方案评审论证
(4)完善初步方案、初步方案实施
(5)软硬件集成测试
(6)系统功能性能测试及可靠性测试
2、利用ARM指令编写一程序求取1+2+3+…+100的累加和,要求求累加和用子程序实现。
(累加数据个数存入R0中,累加结果存R1中;R2作为子程序入口参数,R3作为出口参数。
)
答:
AREAgainsum,CODE,READONLY
ENTRY
CODE32(1分)
STARTMOVR0,#100
MOVR2,R0(0.5分)
BLG_SUM(1分)
MOVR1,R3(0.5分)
LOOPBLOOP
G_SUMMOVR3,#0(2分)
LOOP1ADDR3,R3,R2
SUBSR2,R2,#1
BNELOOP1
MOVPC,LR(1分)
END
3、用ARM汇编语言编程实现函数:
X、Y为32位无符号二进制整数,其中X、Y分别存储在以X_DATA和Y_DATA为首地址的4个存储单元中。
答:
AREAg_function,CODE,READONLY
ENTRY
CODE32(1分)
STARTADRR0,=X_DATA
LDRR1,[R0](1分)
CMPR1,#1
BHILOOP1
MOVR2,#8(1分)
BFIN
LOOP1CMPR1,#10
BHSLOOP2
MULR2,R1,#5
ADDR2,R2,#3(1分)
BFIN
LOOP2MOVR2,#53(1分)
FINADRR0,=Y_DATA
STRR2,[R0](1分)
HEREBHERE
END
2.谈一谈嵌入式系统的发展趋势(列出五个趋势以上)。
答:
产品种类不断丰富;应用范围不断普及;性能不断提高;功耗不断降低,体积不断缩小;网络化、智能化程度不断提高;软件成为影响价格的主要因素。
3.简述嵌入式微处理器的特点。
答:
嵌入式微处理器的特点:
通用微处理器的增强,一般为32位。
(1分)
构成:
一般CPU、存储器、I/O接口三者分离;(1分)
性能:
一般为100~2000MIPS;(1分)
存储器:
Flash一般为1~16MB,SDRAM一般为2~64MB;(1分)
一般加载复杂嵌入式操作系统:
VxWorks、WinCE、µClinux等。
(1分)
6.从嵌入式系统底层到上层应用软件,试分析嵌入式计算系统的组成主要分为哪几个部分,并写出各部分所完成的功能。
答:
(1)硬件层;
(2)中间层(嵌入式系统初始化,硬件相关的驱动程序);(3)软件层(