ARM嵌入式系统结构与编程习题答案.pdf
《ARM嵌入式系统结构与编程习题答案.pdf》由会员分享,可在线阅读,更多相关《ARM嵌入式系统结构与编程习题答案.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ARM 嵌入式系统结构与编程习题答案 第一章 绪论 1.国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以电脑技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业电脑系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业电脑系统。2嵌入式系统是从何时产生的,简述其发展历程。答:从 20 世纪 70 年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统
2、已经有了 30 多年的发展历史。嵌入式系统的出现最初是基于单片机的。Intel 公司 1971 年开发出第一片具有 4 位总线结构的微处理器 4004,可以说是嵌入式系统的萌芽阶段。80 年代初的 8051 是单片机历史上值得纪念的一页。20 世纪 80 年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20 世纪 90 年代实时内核发展为实时多任务操作系统。步入 21 世纪以来,嵌入式系统得到了极大的发展。在硬件上,MCU 的性能得到了极大的提升,特别是 ARM 技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推
3、向了一个崭新的阶段。3当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式 Linux 和嵌入式实时操作内核 uC/OS-II 嵌入式 Linux 操作系统是针对嵌入式微控制器的特点而量身定做的一种 Linux 操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。uC/OS 是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。4举例说明嵌入式设备在工控设备中的应用。答:由于工业控制系统特别强调可靠性和
4、实时性,“量身定做”的嵌入式控制系统恰能满足工业控制的需求。例如:工业过程控制,数字控制机床,电网设备监测,电力自动控制系统,石油化工监控等。5嵌入式技术的发展趋势有哪些?答:未来嵌入式系统的发展趋势有:1.随着信息化与数字化的发展,嵌入式设备进行网络互联是未来发展的趋势。2.优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本。3.指令集的并行计算技术将引入嵌入式微处理器。4.嵌入式微处理器将会向多核技术发展。5.嵌入式技术将引领信息时代。第 2 章 ARM 技术与 ARM 体系结构 1.简述 ARM 处理器内核调试结构原理 答:ARM 处理器一般都带有嵌入式追踪宏单元 ETMEm
5、bedded Trace Macro,它是 ARM公司自己推出的调试工具。ARM 处理器都支持基于 JTAGJoint Test Action Group 联合测试行动小组的调试方法。它利用芯片内部的 Embedded ICE 来控制 ARM 内核操作,可完成单步调试和断点调试等操作。当 CPU 处理单步执行完毕或到达断点处时,就可以在宿主机端查看处理器现场数据,但是它不能在 CPU 运行过程中对实时数据进行仿真。ETM 解决了上述问题,能够在 CPU 运行过程中实时扫描处理器的现场信息,并数据送往TAPTest Access Port控制器。上图中分为三条扫描链图中的粗实线,分别用来监视AR
6、M 核,ETM,嵌入式 ICE 的状态。2.分析 ARM7TDMI-S 各字母所代表的含义。答:ARM7 T D M I S 中 ARM 是 Advanced RISC Machines 的缩写 7 是系列号;T:支持高密度 16 位的 Thumb 指令集;D:支持 JTAG 片上调试;M:支持用于长乘法操作64 位结果ARM 指令,包含快速乘法器;I:带有嵌入式追踪宏单元 ETM,用来设置断点和观察点的调试硬件;S:可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以编译成一种易于 EDA 工具使用的形式。3.ARM 处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常
7、模式,并指出处理器在什么情况下进入相应的模式。答:ARM 技术的设计者将 ARM 处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。1用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式 2FIQ 模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。3IRQ 模式:也称为普通中断模式,:当一个低优先级(norma
8、l)中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在 IRQ 模式下进行。4SVC 模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令执行时处理器将进入这种模式。5中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。6未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。7系统模式:使用和 User 模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。在这 7 种工作模式中,除了用户
9、模式以外,其他 6 种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。在这 6 种特权模式中,除了系统模式外的其他 5 种特权模式又称为异常模式,每种异常都对应有自己的异常处理入口点。4.分析程序状态寄存器PSR各位的功能描述,并说明 C,Z,N,V 在什么情况下进行置位和清零。答:条件位:N=1-结果为负,0-结果为正或 0 Z=1-结果为 0,0-结果不为 0 C=1-进位,0-借位 V=1-结果溢出,0 结果没溢出 Q 位:仅 ARM 5TE/J 架构支持 指示增强型 DSP 指令是否溢出 中断禁止位:I =1:禁止 IRQ.F=1
10、:禁止 FIQ.T Bit 仅 ARM xT 架构支持 T=0:处理器处于 ARM 状态 T=1:处理器处于 Thumb 状态 Mode 位(处理器模式位):0b10000 User 0b10001 FIQ 0b10010 IRQ 0b10011 Supervisor 0b10111 Abort 0b11011 Undefined 0b11111 System 5.简述 ARM 处理器异常处理和程序返回的过程。答:只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM7TDMI 内核保存当前的处理器状态,这样当处理程序结束时可以恢复执行原来的程序。
11、如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。异常或入口 返回指令 向量表偏移 处理器模式 优先级 BL MOV PC,R14 SWI MOVS PC,R14_svc SVC 6 0 x00000008 未定义的指令 MOVS PC,R14_und UND 6 0 x00000004 预取指中止 SUBS PC,R14_abt,#4 ABT 5 0 x0000000C 快中断 SUBS PC,R14_fiq,#4 FIQ 3 0 x0000001C 中断 SUBS PC,R14_irq,#4 IRQ 4 0 x00000018 数据中止 SUBS PC,R14_abt,#8 AB
12、T 2 0 x00000010 复位 无 SVC 1 0 x00000000 在异常发生后,ARM7TDMI 内核会作以下工作:1.在适当的 LR 中保存下一条指令的地址 2.将 CPSR 复制到适当的 SPSR 中;3.将 CPSR 模式位强制设置为与异常类型相对应的值;4.强制 PC 从相关的异常向量处取指。ARM7TDMI 内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在 ARM 状态中进行处理。当处理器处于 Thumb 状态时发生了异常,在异常向量地址装入 PC 时,会自动切换到 ARM 状态。当异常结束时,异常处理程序必须:1.将 LR 中的值减去偏移
13、量后存入 PC,偏移量根据异常的类型而有所不同;2.将 SPSR 的值复制回 CPSR;3.清零在入口置位的中断禁止标志。注:恢复 CPSR 的动作会将 T、F 和 I 位自动恢复为异常发生前的值。6.ARM 处理器字数据的存储格式有哪两种?并指出这两种格式的区别。答:ARM7TDMI 处理器可以将存储器中的字以以下格式存储 大端格式Big-endian 小端格式Little-endian 小端存储器系统:在小端格式中,高位数字存放在高位字节中。因此存储器系统字节 0 连接到数据线70。大端存储器系统:在大端格式中,高位数字存放在低位字节中。因此存储器系统字节 0 连接到数据线3124。7.分
14、析带有存储器访问指令 LDR 的流水线运行情况,并用图示说明流水线的运行机制。答:存储器访问指令 LDR 流水线举例 取指的存储器访问和执行的数据路径占用都是不可同时共享的资源,对于多周期指令来说,如果指令复杂以至于不能在单个时钟周期内完成执行阶段,就会产生流水线阻塞。对存储器的访问指令 LDR 是非单周期指令 LDR 指令的执行,访问存储器,回写寄存器占用了 3 个周期。造成了 MOV 指令的执行被阻断。8.简述 ARM9 的 5 级流水线每一级所完成的功能和实现的操作。答:ARM920 在指令操作上采用 5 级流水线.取指:从指令 Cache 中读取指令。译码:对指令进行译码,识别出是对哪
15、个寄存器进行操作并从通用寄存器中读取操作数。执行:进行 ALU 运算和移位操作,如果是对存储器操作的指令,则在 ALU 中计算出要访问的存储器地址。存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能通过数据 Cache。寄存器回写:将指令运算或操作结果写回到目标寄存器中。9.什么叫流水线互锁?应如何来解决,举例说明。答:互锁:当前指令的执行需要前面指令的执行结果,但前面的指令没有执行完毕,引起流水线的等待。互锁发生时,硬件会停止指令的执行,直到数据准备好。上边程序中 ORR 指令执行时需要使用 LDR 指令加载后的 R4 寄存器,因此造成了 ORR 指令的等待。编译器以及汇编程序员可以
16、通过重新设计代码的顺序或者其他方法来减少互锁的数量。第 3 章 ARM 指令集寻址方式 1.在指令编码中,条件码占几位,最多有多少个条件,各个条件是如何形成的?答:条件码占 4 位,最多有 15 个条件 操作码 条件助记符 标志 含义 0000 EQ Z=1 相等 0001 NE Z=0 不相等 0010 CS/HS C=1 无符号数大于或等于 0011 CC/LO C=0 无符号数小于 0100 MI N=1 负数 0101 PL N=0 正数或零 0110 VS V=1 溢出 0111 VC V=0 没有溢出 1000 HI C=1,Z=0 无符号数大于 1001 LS C=0,Z=1 无
17、符号数小于或等于 1010 GE N=V 有符号数大于或等于 1011 LT N!=V 有符号数小于 1100 GT Z=0,N=V 有符号数大于 1101 LE Z=1,N!=V 有符号数小于或等于 1110 AL 任何 无条件执行(指令默认条件)1111 NV 任何 从不执行(不要使用)2.指令条件码中,V 标志位在什么情况下才能等于 1?答:V溢出标志位 对于加减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1 表示符号位溢出,其他指令通常不影响 V 位。3.在 ARM 指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出在指令中的编码格式也就是 8 位
18、常数和 4 位移位数 0 x5430 0 x108 0 x304 0 x501 0 xfb10000 0 x334000 0 x3FC000 0 x1FE0000 0 x5580000 0 x7F800 0 x39C000 0 x1FE80000 答:立即数必须由 1 个 8 位的常数通过进行 32 位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即一个8位的常数通过循环右移2*rotate_4位 即0,2,4,。30得到 0X5430 0000,0000,0000,0000,0101,0100,0011,0000 非法立即数 0X108 0000,0000,0000,00
19、00,0000,0001,0000,1000 0 x42 循环右移 30 位 rotate_4=0 xF 0X304 0000,0000,0000,0000,0000,0011,0000,0100 0 xC1 循环右移 30 位 rotate_4=0 xF 0 x501 0000,0000,0000,0000,0000,0101,0000,0001 非法立即数 0 xfb10000 0000,1111,1011,0001,0000,0000,0000,0000 非法立即数 0 x334000 0000,0000,0011,0011,0100,0000,0000,0000 0Xcd 循环右移 1
20、8 位rotate_4=0 x9 0 x3FC000 0000,0000,0011,1111,1100,0000,0000,0000 0XFF 循环右移 18 位rotate_4=0 x9 0 x1FE0000 0000,0001,1111,1110,0000,0000,0000,0000 非法立即数 0 x5580000 0000,0101,0101,1000,0000,0000,0000,0000 非法立即数 0 x7F800 0000,0000,0000,0111,1111,1000,0000,0000 非法立即数 0 x39C000 0000,0000,0011,1001,1100,0
21、000,0000,0000 0XE7 循环右移 18 位rotate_4=0 x9 0 x1FE80000 0001,1111,1110,1000,0000,0000,0000,0000 非法立即数 4.分析逻辑右移,算术右移,循环右移,带扩展的循环右移它们间的差异。答:LSL 逻辑左移:3100 LSR 逻辑右移:3100 ASR 算术右移:310 ROR 循环右移:310 RRX 带扩展的循环右移:310C 5.ARM 数据处理指令具体的寻址方式有哪些,如果程序计数器 PC 作为目标寄存器,会产生什么结果?答:数据处理指令寻址方式具体可分为 5 种类型:1第二操作数为立即数 2第二操作数为
22、寄存器 3第二操作数为寄存器移位方式且移位的位数为一个 5 位立即数 4第二操作数为寄存器移位方式且移位数值放在寄存器中 5第二操作数位寄存器进行 RRX 移位得到。如果 PC R15用作目标寄存器,指令会产生不可预知的结果。6.在 Load/Store 指令寻址中,字,无符号字节的 Load/Store 指令寻址和半字,有符号字节寻址,试分析它们之间的差异。答:在 Load/Store 指令寻址中,字,无符号字节的 Load/Store 指令寻址中共有以下 3 种内存地址构成格式:1Addressing_mode 中的偏移量为立即数 2Addressing_mode 中的偏移量为寄存器的值
23、3Addressing_mode 中的偏移量通过寄存器移位得到 半字,有符号字节的 Load/Store 指令寻址中共有以下 2 种内存地址构成格式:1Addressing_mode 中的偏移量为立即数 2Addressing_mode 中的偏移量为寄存器的值 7.块拷贝 Load/Store 指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。答:批量 Load/Store 指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有以下 4 种类型:后增 IA(Increment After):每次数据传送后地址加 4;先增 IB(In
24、crement Before):每次数据传送前地址加 4;后减 DA(Decrement After):每次数据传送后地址减 4;先减 DB(Decrement Before):每次数据传送前地址减 4;8.栈操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作指令寻址和块拷贝 Load/Store 指令之间的对应关系。答:根据堆栈指针的指向位置不同和堆栈的生长方向不同,共有 4 种类型的堆栈工作方式:满递增堆栈 FA:堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈 FD:堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈 EA:堆栈指针指向
25、下一个要放入数据的空位置,且由低地址向高地址生成。空递减堆栈 ED:堆栈指针指向下一个要放入数据的空位置,且由高地址向低地址生成。9.分析协处理器加载/存储指令的寻址方式种的内存地址索引格式中不同的汇编语法格式下内存地址的计算方法。答:协处理器加载/存储指令的寻址方式种的内存地址索引格式中,索引格式类似于LDR/STR指令寻址中的立即数作为地址偏移量的形式。Addressing_mode 中的偏移量为 8 位立即数的汇编语法格式有以下 3 种:前变址不回写形式:,#+/-*4 第一个内存地址编号为基地址寄存器 Rn 值加上/减去 imm_offset8 的 4 倍,后续的每一个地址是前一个内存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 嵌入式 系统 结构 编程 习题 答案
限制150内