《arm复习课后题答案(完整版).doc》由会员分享,可在线阅读,更多相关《arm复习课后题答案(完整版).doc(10页珍藏版)》请在金锄头文库上搜索。
1、1. 国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解答: 以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。2. 当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点答:嵌入式linux和嵌入式实时操作系统uc/os-II Linux:(1) linux是源码开放的,每一个技术细节都是透明的,易于裁剪定制。(2) 目前嵌入式
2、linux已经在多种嵌入式处理器芯片移植成功,有大量且不断增加的开发工具,这些工具为嵌入式系统开发提供了良好的开发环境。(3) Linux内核小、功能强大、运作稳定、效率高。 Ucos: (1) 源代码公开(2) 可移植性。(3) 可固化(4) 可裁剪(5) 占先式(6) 多任务(7) 可确定性。(8) 系统服务 第2章ARM技术与ARM体系结构3. arm处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理器在什么情况下进入相应的模式。答:ARM 处理器共有7 种工作模式:用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没异常
3、发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式FIQ 模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。IRQ 模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ 模式下进行。SVC 模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令执行时处理器将进入这种模式。中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。未定义指令异常模式:当执行未定义指令
4、时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。系统模式:使用和User 模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。在这 7 种工作模式中,除了用户模式以外,其他6 种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。在这6 种特权模式中,除了系统模式外的其他5 种特权模式又称为异常模式4 分析程序状态寄存器(PSR)各位的功能描述,并说明C、Z、N、V 在什么情况下进行置位和清零。答:PSR 的具体格式为 V溢出标志位对于加/减法运算指令,当操作数和运
5、算结果为二进制补码表示的带符号数时,V1 表示符号位溢出,其他的指令通常不影响V 位。C进位或借位标志位对于加法指令(包括比较指令 CMN),结果产生进位,则C1,表示无符号数运算发生上溢出,其他情况下C0;在减法指令中(包括比较指令CMP),结果产生借位,则C0,表示无符号数运算发生下溢出,其他情况下C1;对于包含移位操作的非加/减法运算指令,C 中包含最后一次溢出位的数值;对于其他非加/减法运算指令,C 位的值通常不受影响。Z结果为0 标志位Z1 表示运算结果是0,Z0 表示运算结果不是零;对于 CMP 指令,Z1 表示进行比较的两个数大小相等。N 符号标志位本位设置成当前指令运算结果的b
6、it31的值。当两个补码表示有符号整数运算时,N1 表示运算的结果为负数,N0 表示结果为正数或零。5 简述 ARM 处理器异常处理和程序返回的过程。答:ARM 在异常产生时会进行以下操作:(1) 将引起异常指令的下一条指令地址保存到新的异常模式的LR 中,使异常处理程序执行完后能根据LR 中的值正确返回;(2) 将CPSR 的内容复制到新的异常模式下的SPSR 中;(3) 根据异常类型将CPSR 模式控制位强制设定为发生异常所对应的模式值;(4) 强制PC 指向相应的异常向量地址。ARM 在异常返回时(1) 从 SPSR_恢复CPSR;(2) 从LR_恢复PC 。6 ARM 处理器字数据的存
7、储格式有哪两种?并指出这两种格式的区别。答:(1) 小端存储格式(Little-Endian)在小端存储格式中,对于地址为A 的字单元,其中字节单元由低位到高位字节地址顺序为A,A+1,A+2,A+3;对于地址为A 的半字单元,其中字节单元由低位到高位字节地址顺序为A,A+1;(2) 大端存储格式(Big-Endian)在大端存储格式中,对于地址为A 的字单元,其中字节单元由高位到低位字节地址顺序为 A,A+1,A+2,A+3;对于地址为A 的半字单元,其中字节单元由高位到低位字节地址顺序为A,A+1。 第3章 ARM指令集寻址方式3 在 ARM 指令中,什么是合法的立即数?判断下面各立即数是
8、否合法,如果合法则写出在指令中的编码格式(也就是8 位常数和4 位的移位数)。0x5430 0x108 0x304 0x5010xFB10000 0x 0x3FC000 0x1FE00000x 0x7F800 0x39C000 0x1FE80000答:计算步骤:(1) 十六进制立即数两端0去掉(2) 展成二进制(3) 连续偶数个0去掉,数字中间0不去掉(4) 剩下数字位数小于等于8可以,反之,不可以。5 ARM 数据处理指令具体的寻址方式有哪些,如果程序计数器PC 作为目标寄存器,会产生什么结果?答:ARM数据处理指令寻址方式有5种1) 第二操作数为立即数2) 第二操作数为寄存器3) 第二操作
9、数为寄存器移位方式,且移位的位数为一个5位的立即数4) 第二操作数为寄存器移位方式,且移位数值放在寄存器中5) 第二操作数为寄存器进行RRX移位得到如果程序计数器PC作为目标寄存器,会发生程序跳转。6 在 Load/Store 指令寻址中,字、无符号字节的Load/Store 指令寻址和半字、有符号字节寻址,试分析它们之间的差别。答:字、无符号字节寻址:1) Addressing_mode中的偏移量为立即数2) Addressing_mode中的偏移量为寄存器的值3) Addressing_mode中的偏移量通过寄存器移位得到半字、有符号字节寻址:1) Addressing_mode中的偏移量
10、为立即数2) Addressing_mode中的偏移量为寄存器的值从以上分析看出:差别就在于后者没有第三项寻址方式。7 块拷贝 Load/Store 指令在实现寄存器组和连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。答:批量 Load/Store 指令在实现寄存器组和连续的内存单元中数据传递时,地址的变化方式(addr_mode)有以下4 种类型:后增 IA (Increment After) :每次数据传送后地址加4;先增IB (Increment Before) :每次数据传送前地址加4 ;后减 DA (Decrement After) :每次数据传送后
11、地址减4 ;先减DB (Decrement Before) :每次数据传送前地址减4 。8 栈操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作指令寻址和块拷贝Load/Store 指令之间的对应关系。答:(1) 四种类型的堆栈工作方式,即:满递增堆栈FA(Empty Ascending):堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈FD(Full Descending):堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈 EA(Full Ascending):堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈 E
12、D(Empty Descending):堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。(2) 栈操作指令寻址和块拷贝Load/Store 指令之间的对应关系见表3-10。 第4章 ARM指令集系统4. 分析下列每条语句的功能,并确定程序段所实现的操作。CMP R0,#0MOVEQ R1,#0MOVGT R1,#1答:分析:当 R0 等于0 时,MOVEQ 执行,则R1 等于0;当 R0 等于正数时,MOVGT 执行,则R1 等于1;此功能码段可以判别 R0 中的值为正数还是0。5. 请使用多种方法实现将字数据 0xFFFFFFFF 送入寄存器R0。答:例如,MVN R0,#0
13、或者:MOV R0,#0SUB R0,R0,#1还可以用其它运算指令来实现,读者自行写出。9. 写出下列 ARM 指令所实现操作:LDR R2,R3,-4 !LDR R0,R0,R2LDR R1,R3,R2,LSL2!;LDRSB R0,R2,#-2!STRB R1,R2,#0xA0LDMIA R0,R1,R2,R8STMDB R0!,R1-R5,R10,R11解答:LDR R2,R3,#-4!将存储器地址为R3-4 的字数据读入R2,并将地址R3-4 写入R3LDR R0,R0,R2将存储器地址为R0 的字数据读入R0,并将地址R0+R2 写入R0LDR R1,R3,R2,LSL#2!将存储
14、器地址为R3+R2*4 的字数据读入R1,并将地址R3+R2*4 写入R3LDRSB R0,R2,#-2!将存储器地址为R2-2 的字节数据读入R0 的低8 位,将R0 的高24 位用符号位扩展,并将地址R2-2 写入R2STRB R1,R2,#0xA0将R0 的低8 位存入存储器地址为R2+0xA0 字节中LDMIA R0,R1,R2,R8将内存单元R0 所指向的地址单元以字为单位递减方式读取到R1,R2,R8 中,低地址编号的字数据内存单元对应低编号寄存器STMDB R0! R1-R5,R10,R11将R1-R5,R10,R11 存储到以R0 为起始地址的递减内存中,最终R0 指向存放R11的地址单元10. SWP 指令的优势是什么?答:ARM 指令支持原子操作,主要是用来对信号量的操作,因为信号量操作的要求是作原子操作,即在一条指令中完成信号量的读取和修改操作。SWP 数据交换指令就能完成此功能,能在一条指令中实现存储器和寄存器之间交换数据。11. 如何用带 PSR 操作的批量字数据加载指令实现IRQ 中断的返回?答:在进入IRQ中断处理子程序时,首先计算返回的地址,并保存相关的寄存器SUB R14,R1