
2021年ARM复习题二答案.pdf
14页二、全书练习题答案第 1 章:答案 -填空题1T、D、M、I 2存储空间管理单元(MMU )和 8K Cache 片内缓存(提高CPU 性能)3QFP、TQFP、PQFP、LQFP、BGA 、 LBGA 437、32、 31、6 5大端格式和小端格式6片内的MMU 、指令和数据缓存(IDC ) 、写缓冲( Write Buffer )答案 -问答题1ARM 内核有四个功能模块T、D、M、I,可供生产厂商根据不同用户的要求来配置生产ARM 芯片其中 T 功能模块表示16 位 Thumb,可以在兼顾性能的同时减少代码尺寸M 功能模块表示 8 位乘法器 D 功能模块表示Debug,该内核中放置了用于调试的结构,通常它为一个边界扫描链JTAG,可使CPU 进入调试模式,从而可方便地进行断点设置、单步调试I功能模块表示EmbeddedICE Logic ,用于实现断点观测及变量观测的逻辑电路部分,其中的TAP 控制器可接入到边界扫描链2一个 ARM720T 内核基本由以下四部分组成1) ARM7TDMI CPU核 该 CPU 核支持 Thumb 指令集、核调试、增强的乘法器、 JTAG及嵌入式ICE。
它的时钟速率可编程为18MHz 、 36MHz 、49MHz 、74MHz 2)内存管理单元(MMU )与 ARM710 核兼容,并增加了对Windows CE 的支持该内存管理单元提供了地址转换和一个有64 个项的转换旁路缓冲器3) 8KB 单一指令和数据高速缓冲存储器,以及一个四路相联高速缓冲存储器控制器4)写缓冲器Write Buffer 3通用寄存器包括R0 R15,可以分为三类:(1)未分组寄存器R0R7;(2)分组寄存器 R8R14;(3)程序计数器 PC(R15) 4Thumb 状态下的寄存器与ARM 状态下的寄存器有如下关系:(1)Thumb状态下和 ARM 状态下的 R0R7是相同的2)Thumb状态下和 ARM 状态下的 CPSR和所有的 SPSR是相同的3)Thumb状态下的 SP对应于 ARM 状态下的 R134)Thumb状态下的 LR对应于 ARM 状态下的 R145)Thumb状态下的程序计数器对应于ARM 状态下的 R155当一个异常出现以后,ARM 微处理器会执行以下几步操作1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
若异常是从ARM 状态进入,则LR寄存器中保存的是下一条指令的地址(当前 PC4或PC8,与异常的类型有关) ;若异常是从 Thumb 状态进入,则在LR寄精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 1 页,共 14 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 1 页,共 14 页 - - - - - - - - -存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的例如:在软件中断异常SWI,指令MOV PC ,R14_svc总是返回到下一条指令,不管SWI是在ARM 状态执行,还是在Thumb 状态执行2)将 CPSR复制到相应的 SPSR中3)根据异常类型,强制设置CPSR的运行模式位4)强制 PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处第 2 章:答案 -填空题1ARM 指令集、 Thumb 指令集2寄存器寻址、立即寻址、寄存器偏移寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址3跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、 Load/Store 指令、协处理器指令、异常中断产生指令4符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令、其他伪指令5在 C/C代码中嵌入汇编指令;从汇编程序中访问C 程序变量;汇编程序、C/C程序间的相互调用6filename.c 源文件、 filename.h 头文件、 filename.o 目标文件、 filename.s 汇编代码文件、filename.lst 列表文件答案 -问答题1一条典型的ARM 指令语法格式如下所示:S, 其中:opcode是指令操作符编码;cond 是指令执行的条件编码;S 决定指令的操作是否影响CPSR 的值;Rd 是目标寄存器编码;Rn 是包含第1 个操作数的寄存器编码;shifter_operand 表示第 2 个操作数。
2有 4 种类型的堆栈,表示递增和递减的满堆栈和空堆栈的各种组合满递增: 堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址指令如LDMFA ,STMFA 等空递增: 堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空地址指令如LDMEA ,STMEA 等满递减: 堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址指令如LDMFD ,STMFD 等空递增: 堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空地址指令如LDMED ,STMED 等3ARM 协处理器指令包括以下3 类:精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 2 页,共 14 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 2 页,共 14 页 - - - - - - - - -用于 ARM 处理器初始化ARM 协处理器的数据处理操作用于 ARM 处理器的寄存器和ARM 协处理器的寄存器间的数据传送操作用于在 ARM 协处理器的寄存器和内存单元之间传送数据。
4常见的符号定义伪指令有如下几种用于定义全局变量的GBLA 、GBLL 和 GBLS用于定义局部变量的LCLA 、LCLL 和 LCLS 用于对变量赋值的SETA、SETL、SETS为通用寄存器列表定义名称的RLIST 5汇编语言程序中常用的符号,必须遵循以下的约定符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号符号在其作用范围内必须唯一自定义的符号名不能与系统的保留字相同符号名不应与指令或伪指令同名6可执行映像文件通常由以下几部分构成一个或多个代码段,代码段的属性为只读零个或多个包含初始化数据的数据段,数据段的属性为可读写零个或多个不包含初始化数据的数据段,数据段的属性为可读写第 3 章:答案 -填空题1装载映像文件、程序执行、查看寄存器和内存空间2基本的调试功能、C 语言库的支持、通信支持、任务管理功能、异常中断处理3在 ARMulator 或开发板上开发应用程序;建立严重依赖Angel 的应用程序;建立很少依赖 Angel 的应用程序;生成最终的产品4FD(满且地址递减)5测试访问端口TAP(Test Access Port)控制器、旁路(bypass)寄存器、指令寄存器和数据寄存器、 ARM 架构处理器答案 -问答题1初始化存储器就是设置ARM 处理器的某些寄存器,这可以通过两种方法完成:第一种,如果 ARM 处理器内部有SRAM ,则可以建立一个简单的工程,该工程对涉及存储器映射的寄存器初始化;第二种,利用AXD 的命令行配置那些寄存器,具体步骤如下:首先在下建立文本文件memory_map.txt ,该文件设置寄存器的值,其格式为:setmem ADDRESS,DATA,SIZE 其中, ADDRESS 是寄存器的地址,DATA 是该寄存器要设置的值,SIZE 是数据宽度,一般为 32,可以设置多个寄存器;然后打开AXD Debugger 的命令行窗口,执行下面的命令,配置对应的控制寄存器。
obey C:memory_map.txt 执行完毕后,memory_map.txt中的寄存器就配置完毕,存储器就映射到预定的地址空精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 3 页,共 14 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 3 页,共 14 页 - - - - - - - - -间了2基于 Angel 的调试系统由下面两部分组成,这两部分之间通过一定的通信信道连接起来,通常使用的信道是串行口位于主机上的调试器(debugger) 它接受用户命令, 将其发送到目标机上的Angel ,使其执行一定的操作,并将目标机上Angel 返回的数据以一定的格式显示用户ARM公司提供的各调试器都支持Angel 对于其他的调试器,如果它支持Angel所使用的调试协议ADP ,则也可以支持Angel位于目标机上的Angel 调试监控程序 它接受主机上调试器传来的命令,返回相应的数据 通常 Angel 有两个版本: 完整版本包含所有的Angel 功能, 主要可以用于调试应用系统;最小版本包含一些有限的功能,可以包含在最终的产品中。
3使用 Angel 所需要的资源包括:系统资源 Angel 使用的系统资源包括可配置的系统资源和不可配置的系统资源可配置的系统资源包括一个ARM 程序的 SWI 号和一个Thumb 程序的 SWI 号;不可配置的资源包括两条未定义的ARM 指令和一条未定义的Thumb 指令ROM 和 RAM 资源 Angel 需要使用ROM 来保存其代码,使用RAM 来保存其数据当需要下载一个新版本的Angel 时,还需要使用额外的RAM 资源异常中断向量Angel 通过初始化系统的异常中断向量表来安装自己,从而使得Angel 有机会接管系统的控制权,来完成相应的功能FIQ 及 IRQ 异常中断 Angel 需要使用下面的异常中断来实现主机和目标机之间的通信功能推荐使用IRQ 异常中断FIQ 异常中断;IRQ 异常中断;同时使用FIQ 异常中断和IRQ 异常中断 Angel 需要使用自己的特权模式的数据栈如果用户应用程序需要调用Angel 功能,则用户需要建立自己的数据栈4在使用完整版本的Angel 开发应用程序时,由于Angel 需要一定的资源,给程序设计带来了一定的限制这些限制包括:Angel 需要使用自己的处理器特权模式下的数据栈,因此在 Angel 和实时操作系统RTOS 一起使用时,必须确保在Angel 运行时, RTOS 不会切换处理器的模式。
否则可能造成死机用户应用程序尽量避免使用SWI 0 x123456 以及 SWI 0 xab这两个SWI 异常中断号保留给Angel使用 Angel使用它们来实现目标程序中C 语言运行时库的semihosting 请求如果用户应用程序中使用了SWI,则在退出SWI 时必须将各寄存器的值还原成进入 SWI 时的值如果应用程序中需要使用未定义的指令异常中断,必须注意Angel 使用了未定义的指令异常中断5JTAG 测试信号由下面五个信号组成,分别描述如下TRST:测试复位输入信号,测试接口初始化TCK :测试时钟,在TCK 时钟的同步作用下,通过TDI 和 TDO 引脚串行移入 /移精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 4 页,共 14 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 4 页,共 14 页 - - - - - - - - -出数据或指令;同时,也为测试访问端口TAP 控制器的状态机提供时钟TMS:测试模式选择信号,控制测试接口状态机的操作TDI :测试数据输入线,其串行输入数据至边界扫描寄存器或指令寄存器(由TAP控制器的当前状态及已保存在指令寄存器中的。
