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