!嵌入式系统复习题资料整理
1.什么是嵌入式系统?其特点有些什么?
答:嵌入式系统是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。”
特点:1)是专用的计算机系统,用于特定的任务;
2)资源较少,可以裁减;
3) 功耗低,体积小,集成度高,成本低;
4)使用实时操作系统;
5) 可靠性要求更高,具有系统测试和可靠性评估体系;
6)运行环境差异大
7)大部分程序固化在ROM中;
8) 较长的生命周期;
9)嵌入式微处理器通常包含专用调试电路
2.嵌入式系统的BooTLoader的功能是什么?
答:BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。通过这段程序,为最终调用操作系统内核、运行用户应用程序准备好正确的环境。(对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,但在系统启动时都必须运行BootLoader,为系统运行准备好软硬件环境。)
3.目前嵌入式操作系统有哪些?
答:1)μC/OS-II 嵌入式操作系统内核;2)VxWorks嵌入式实时操作系统;3)WinCE操作系统;4)Linux操作系统;5)Symbian操作系统
4.构造嵌入式开发环境有哪几种形式?
答:1)交叉开发环境;2)软件模拟环境;3)评估电路板
5.嵌入式系统开发的基本流程?
答:1)系统定义与需求分析;
2)系统设计方案的初步确立;
3)初步设计方案性价比评估与方案评审论证;
4)完善初步方案、初步方案实施;
5)软硬件集成测试;
6)系统功能性能测试及可靠性测试。
6.有时要使用Thumb技术的原因
答:(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的一个特殊的16位指令集。)在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统用Thumb指令编写最小代码量的程序(能够很好的解决代码长度的问题),却取得以ARM代码执行的最好性能,可以带来低功耗,小体积,低成本。
7.ARM处理器的工作模式有哪几种?
答:1)正常用户模式(usr);
2)快速中断模式(fiq);
3)普通中断模式(irq);
4)操作系统保护模式(svc)或管理模式;
5)数据访问中止模式(abt);
6)处理未定义指令的未定义模式(und);
7)运行特权级的操作系统任务的系统模式(sys)。
8.寄存器R13,R14,R15的专用功能各是什么?
答:1)寄存器R13保存堆栈指针SP;2)寄存器R14用作子程序链接寄存器,也称为LR ,用以保存返回地址;
3)R15(PC)用作程序计数器。
9.寄存器CPSR,SPSR的功能各是什么?
答:1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。所有处理器模式下都可以访问当前的程序状态寄存器CPSR。
2)在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
10.ARM的异常有哪几种,各进入何种工作模式?他们退出各采用什么指令?
答:1)复位(Reset)异常(管理模式);
2)未定义指令(undefined instruction)异常(未定义模式);
3)软件中断(SWI)异常(管理模式);
4)指令预取中止(Prefech Abort)异常(中止模式);
5)数据访问中止(Data Abort)(中止模式);
6)快速中断请求(FIQ)(FIQ模式);
7)外部中断请求(IRQ)(IRQ模式)。
异常返回指令:1)SWI,未定义的返回:MOVS PC,R14;2)IRQ,FIQ,预取中止的返回:SUBS PC,R14,#4;3)数据中止返回并重新存取:SUBS PC,R14,#8
异常中断的优先级:复位(最高优先级)--> 数据异常中止--->FIQ --> IRQ--->预取指异常中止--->SWI---->未定义指令(包括缺协处理器)。
11.什么是小端和大端存储器组织?
答:1)小端存储器组织是较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址(同同小)。2) 大端存储器组织是较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址(正反大)。
12.ARM的寻址方式有哪些?各写一条说明。
答:1)立即寻址(1)ADD R0,R0,#1 /*R0←R0+1*/
(2)ADD R0,R0,#0x3f /*R0←R0+0x3f*/;
2)寄存器寻址(ADD R0,R1,R2 /*R0←R1+R2*/);
3)寄存器间接寻址(1)、LDR R0,[R1] /*R0←[R1]*/;
(2)STR R0,[R1] /*[R1]←R0*/;
4)基址加偏址寻址(1)、LDR R0,[R1,#4];R0←[R1+4];
(2)、LDR R0,[R1,#4]!;R0←[R1+4]、R1←R1+4;
(3)、LDR R0,[R1] ,#4;R0←[R1]、R1←R1+4
5)堆栈寻址(1)、STMFD SP! {R1-R7,LR};
(2)、LDMFD SP! {R1-R7,LR};
arm嵌入式系统期末考试
6)块拷贝寻址(1)、LDMIA R0!, {R2-R9};(2)、STMIA R1,{R2,R9};
7)相对寻址
13.在ARM的立即寻址方式下其立即数如何在指令编码中表示?
答:在ARM数据处理指令中,当参与操作的第二操作数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到。其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环右移偶数位得到。
因此有效立即数immediate可以表示成:=immed_8循环右移(2×rotate_imm)
14.指令ADR,ADRL、LDR、NOP是如何处理地址值读入到寄存器中的?
答:ADR是将基于PC或者寄存器的地址值读入到寄存器的,ADR伪指令通常被替换成一条ADD指令或SUB指令来实现该ADR指令的功能。而ADRL伪指令与ADR指令的最大不同之处是,它可以读取更大范围内的地址,而且被编译器替换成2条数据处理指令。LDR将一个32位的立即数或者一个地址值读取到寄存器中。大范围的地址读取。NOP在汇编时将被替换成ARM中的空操作。
15.指令LDR R1,=0xFFF是如何将立即数0xfff读入到R1的?
答:由于需要读取的寄存器的数据超过了MOV及MVN指令可操作的范围,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。
LDR R1,[PC,offset_to_LPOOL].
............
LTORG ;声明数据缓冲池
LPOOL DCD OxFFF;OxFFF放在数据缓冲池中。
程序解释
AREA COPYBS,CODE,READONL Y ;定义一个代码段
ENTRY ;程序入口
LDR RO,=SRC ;取得原数据表的表头
LDR R1,=DST ;取得目标数据表的表头
MOV R2,#20 ;R4作为循环控制
BCOPY MOVS R3,R2,LSR,#3 ;R3=R2 <<3 逻辑右移3位
BEQ CWORD ;若Z=1,跳转到CWORD
OCOPY LDMIA R0!,{R4-R11} ;加载R0指向的地址上的多字数据,保存到R4~R11中,R0值更新STMIA R1!,{R4-R11} ;将R4-R11的数据存储到R1指向的地址上,R1值更新
SUBS R3,R3,#1 ;R3=R3-1
BNE OCOPY ;若Z=0,跳转到OCOPY
CWORD AND R2,R2,#7 ;R2=R2&7
BEQ STOP ;若Z=1,跳转到STOP
WCOPY LDR R3,{R0},#4 ;将R3中的字数据读入以R0为地址的存储器中,并将新地址R0
+4写入R1 STR R3,{R1},#4 ;将R3中的字数据写入以R1为地址的存储器中,并将新地址R1+4写入R1