1、 1 / 17 ARM 2017 年复习题总结 简答题 什么是嵌入式操作系统? 答:嵌入式系统是以应用为中心,以计算机技术为基础,软 /硬件可裁减,功能。可靠性,成本,体积,功耗要求严格的专用计算机系统。 与通用计算机相比,嵌入式系统有哪些特点? 答:( 1)嵌入式系统通常是面向特定应用的; ( 2)嵌入式系统是将计算机技术,半导体技术和电子技术与各行各业的具体应用相结合的后的产物,是一门综合技术学科; ( 3) .嵌入式系统和具体应用有机的结合在一起,它的升级换代也是和具体产品同步进行的,因此嵌入式产品一旦进入市场,就有较长 的生命周期; ( 4) .为了提高执行速度和可靠性,嵌入式系统中的
2、软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘等载体中; ( 5) .嵌入式系统本身不具有自主开发能力,即使设计完成以后用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。 ARM 处理器有几种寻址方式,说明各种寻址的方式。 答: 立即寻址:操作数直接放在指令中 。例如: ADD R0, R0, 0x3f ; R0 R0 0x3f 寄存器寻址:操作数放在寄存器中。 例如: ADD R0, R1, R2 ; R0 R1 R2 寄存 器 间接寻址:操作数在内存, 以寄存器中的值作为操作数的地址 。 例如: LDR R0, R1 ; R0 R1 基址加偏移量寻址
3、 (基址变址寻址) :基址寄存器的内容与指令中的偏移量相加形成操作数的有效地址 例如: LDR R0, R1, 4 ; R0 R1 4 LDR R0, R1, R2 ; R0 R1 R2 多寄存器寻址 :一条指令可以完成多个寄存器值的传送。例如: LDMIA R0, R1, R2, R3, R4 ; R1 R0; R2 R0 4; R3 R0 8; R4 R012 堆栈寻址 :堆栈是一种数据结构,按先进后出( First In Last Out, FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 例如: STMFD R13!, R0, R4-R1
4、2, LR LDMFD R13!, R0, R4-R12, PC 2 / 17 举例介绍嵌入式处理器有哪几类? 答: 1.嵌入式微处理器( Embedded Microprocessor Unit,EMPU); 2.嵌入式微控制器;( Embedded Microcontroller Unit,EMCU) 3.嵌入式 DSP 处理器( Embedded Digital Signal Processor,EDSP); 4.嵌入式片上系统( Embedded System on Chip,EsoC); 什么是立即数?请简要描述立即数在使用时有什么注意要点。 立即数,主要是指寻址时直接在指令中出现的
5、数,在使用时注意( 1) 立即数前需要加 #( 2)ARM 指令只有 32 位长,立即数在指令中占 12 位存储空间, ARM 用这 12 位空间 8 位表示有效数字 基数 B, 4 位表示译为的数 M,按照把 B 循环右移 M*2 位 ,构造成一个新的 32位的数,其它位补 0,所以在使用立即数时,要注意其是否合法。 请问 BL 指令跳转时 LR 寄存器保存的是什么内容?并请简述原因。 BL 跳转时 ,LR 中保存的是执行 BL 跳转指令的下一条指令的地址 ,考虑流水线的情况,即当前的 PC-4。 LR 用来在需要返回程序时从 LR 中还原程序执行的位置继续执行。 ARM 内核有多少个寄存器
6、,请列举出这些寄存器的名字和数量。 ARM 有 37 个寄存器 ,( 1)未分组寄存器: R0-R7,共 8 个 ;( 2)分组寄存器 R8-R14,其中FIQ 模式下有单独的一组 R8-R12 共 5 个,另 外 6 种模式共用一组 R8-R12,共 5 个 , USR 和SYS 模式共用一组 R13-R14,共 2 个,另外 5 种模式下各有独自的一组 R13-R14,共 10 个 ;( 3) 程序计数器 PC 即 R15 寄存器,共 1 个; ( 4) 状态寄存器 CPSR,和 5 个备份状态寄存器 SPSR,共 6 个; ARM 总计 37 个寄存器。 ARM 通用寄存器中,有 3 个
7、寄存器有特殊功能和作用,请写出它们的名字和作用。( 6 分) R13: SP 栈指针寄存器 ,用来保存程序执行时的栈指针位置; R14: LR 返回链接寄存器 ,用来保存程序执行 BL 指令或模式切换时的返回原程序继续执行的地址; R15: PC 程序计数器 ,保存程序执行的当前地址。 ARM 的 CPSR 寄存器的位定义如图所示,试简述各位的功能。( 8 分) N Z C V保 留I F T M 4 - 0 2 1345 03 1 3 0 2 9 2 8 2 7 678标志位含义 N N=1 表示运算的结果为负数; N=0 表示运算的结果为正数或零 Z Z=1 表示运算的结果为零; Z=0
8、表示运算的结果为非零 C C=1 表示有进位, C=0 表示没有进位 V V=1 表示符号位溢出, V=0 表示结果没有溢出 Q 在 ARM vTE/J 架构支持,指示 DSP 指令是否溢出 J 仅 ARM 5TE/J 架构支持, J = 1 表示处理器处于 Jazelle 状态 I I=1 表示禁止 IRQ F F=1 表示禁止 FIQ T 仅 ARM xT 架构支持, T = 0 表示处理器处于 ARM 状态, T=1 表示处理器处于 Thumb 状态 什么是伪指令和伪操作?在 ARM 汇编中有哪几种伪 指令? 3 / 17 答:在 ARM 汇编语言程序中有些特殊助记符,这些助记符与一般指
9、令的助记符的不同之处在于没有相对应的操作码或者机器码,通常称这些特殊指令助记符伪指令,他们多完成的操作成为伪操作; 在 ARM 汇编中,有如下几种伪指令: (1)符号定 义伪指令; (2)数据定义伪指令; (3)汇编控制伪指令; (4)信息报告伪指令; (5)宏指令及其他伪指令。 如何定义寄存器列表,试举一个使用寄存器列表的例子,要求实现 4 个字的内存复制。 答: AREA EXAMPLE1,CODE,READONLY ENTRY LDR R0,=0XFF ;把地址 0XFF 赋给 R0 LDR R5,=0X0F ;把地址 0X0F 赋给 R5 START PBLOCK RLIST R1-R
10、4 ;把 R1-R4 定义为 PBLOCK LDMIA R0,PBLOCK ;把 R0 为首地址的内存 4 个字 单元 装载至 R1 到 R4 中 STMIA R5,PBLOCK ;把 R1 到 R4 的值依次 存至 R5 为首地址的内存 字 单元 STOP B STOP ;死循环 END 如何定义一个宏,宏与子程序的区别是什么? 答:宏的格式为: MARCO 和 MEND $标号 宏名 参数,参数 2 . 指令序列 MEND MARCO 表示一个宏定义的开始, MEND 表示一个宏的结束, MARCO 和 MEND 前呼后应可以将一段代码定义为一个整体,又称宏,然后在程序中就可以在程序中通过
11、宏的名称及参数调用该段代码。 宏指令可以重复使用,这一点的使用方式与子程序有些相似,子程序可以节省存储空间,4 / 17 提供模块化的程序设计。但使用子程序机构时需要保存 /恢复现场,从而增加了系统的开销,因此,在代码传递的参数较多并且比较短时,可以使用宏代替子程序,宏在被调用的地方展开。 ARM 汇编中如何定义一个段,段有几种属性? 答: AREA 用于定义一个代码段,数据段,或者特定属性的段。 段的几种属性如下: READONLY 表示只读属性; READWRITE 表示本段可读写; CODE 定义代码段; DATA 定义数据段; ALIGN=表达式的对齐方式为 2 的表达式次方; COM
12、MON:定义一个通用段,这个段不包含用户代码和数据。 在一个汇编源文件中如何包含另一个文件中的内容? 答:通常可以使用 GET/INCLUDE 指 令,在某源文件中定义一些宏指令,用 MAP 和FIELD 定义结构化数据结构类型,用 EQU 定义常量的符号名称,然后用 GET/INCLUDE 将这个源文件包含到其他源文件中。 1.ARM7TDMI 采用了几级流水线工作方式,简要说明。 答:三级 1、取指令 2、译码 3、执行 2.ARM9 采用了几级流水线工作方式,简要说明。 答:五级流水线工作方式 ,1.取指 2.指令译码 3.执行 4.数据存储访问 5.写寄存器 3.哈佛体系结构和冯诺依曼
13、体系结构有何不同。 答:哈佛体系结构的两套地址总线和数据总线是分开的,冯诺依曼 体系结构是复用的。 1. 简述 ARM 发生异常时, ARM 核心会自动做哪些事情?从异常返回时,我们要做哪些事情? 当异常产生时 , ARM core: 拷贝 CPSR 到 SPSR_ 设置适当的 CPSR 位: 改变处理器状态进入 ARM 状态 改变处理器模式进入相应的异常模式 设置中断禁止位禁止相应中断 (如果需要 ) 保存返回地址到 LR_ 5 / 17 设置 PC 为相应的异常向量 返回时 , 异常处理需要 : 从 SPSR_恢复 CPSR 从 LR_恢复 PC Note:这些操作 只能在 ARM 态执行
14、 . 2. 用 ARM 汇编指令写出实现 64 位加法和 64 位减法的代码段,使用的寄存器请自行分配。 假定低 32 位数存放在 r0 和 r1 里面,高 32 位数存放在 r2 和 r3 里面。 加法: ADDS r0, r0, r1 /加 S 是因为要让这个操作影响标志位 ADC r2, r2, r3 /ADC 是带进位的加法,如果上一条指令产生进位则一起加进来 减法: SUBS r0, r0, r1 /加 S 是因为要让这个操作影响标志位 SBC r2, r2, r3 / SBC 是带进位的 减法指令 3. 请列举 ARM 处理器的模式和异常,并说明各个发生异常时 ARM 处理器所处的
15、模式 异常: Reset Data Abort FIQ IRQ Prefetch Abort SWI Undefined instruction 处理器模式 User : 非特权模式,大部分任务执行在这种模式 FIQ : 当一个高优先级( fast) 中断产生时将会进入这种模式 IRQ : 当一个低优先级( normal) 中断产生时将会进入这种模式 Supervisor :当复位或软中断指令执行时将会进入这种模式 Abort : 当存取异常时将会进入这种模式 Undef : 当执行未定义指令时会进入这种模式 System : 使用和 User 模式相同寄存器集的特权模式 4. FIQ 的什么
16、特点使得它处理的速度比 IRQ 快? 1) FIQ 优先级比 IRQ 高,不会被中断 2) FIQ 有自己的专属寄存器: r8r12,不用对通用寄存器入栈保护,可以加快速度 3) FIQ 位于异常向量表的末尾 0x1c,故无需跳转,可以在这里直接放置异常处理函数 5. 什么指令可以放在中断向量表? 6 / 17 跳转指令,给 PC 赋值的指令 B, LDR, MOV 6. ARM 处理器 中断向量表位于存储器的什么位置? 默认: 0x0 也可以配置成: 0Xffff0000 7. 下列 ARM 指令将做什么 ? a) LDRH r0,r1,#6 b) LDR r0, =0x999 a:将 r1
17、 寄存器的值加上 6,然后把以这个值为地址的内存单元里的值取半字(低 16 位)赋给 r0 b:将立即数 0x999 赋给 r0,注意这是一个伪指令 8. SWP 指令的优势是什么 ?用来实现什么功能? 功能:在寄存器和存储器之间,由一次存储器读和一次存储 器写组成的原子操作。完成一个字节或字的交换。可以用来实现信号量 9专业名词解释 RISC ( Reduce Instruct Set Computer); IP ( Intellectual Property); ISR (Interrupt Servers Routine) JTAG (Join Test Active Group) ID
18、E (Integrate Development Environment) RTOS(实时操作系统); CISC(复杂指令集 ); Kernel(内核 ) Scheduler(调度) non-preemptive(非抢先式 ) 初始化代码直接对 ARM 微处理器内核及硬件控制器编程,多采用汇编语言编程,初始化代码一般应包含如下典型任务: ( 1)定义程序入口点 ( 2)设置异常向量; ( 3)初始化存储器系统; ( 4)初始化堆栈指针寄存器; ( 5)初始化临界 I/O 设备; ( 6)初始化 C 代码的运行环境; ( 7)改变处理器的运行模式和状态; 7 / 17 ( 8)使能中断; ( 9
19、)进入 C 代码运行 选择题 1. ARM 属于 RISC 架构 2. ARM 指令集是 32 位宽, Thumb 指令集是 16 位宽的。 3. ARM 指令集是 4 字节对齐, Thumb 指令集是 2 字节对齐的 4. 复位后, ARM 处理器处于 SVC 模式, ARM 状态 5. ARM 处理器总共 37 个寄存器, System 模式下使用 17 个寄存器, SVC 模式下使用 18 个寄存器。 6. ARM 处理器中优先级别最高的异常为 RESET, FIQ,IRQ 异常可以用来相应中断 7. ARM 数据处理指令中有效的立即数是( ACEGH ) A 0X00AB0000 B
20、0X0000FFFF C 0XF000000F D 0X08000012 E 0X00001F80 F 0XFFFFFFFF G 0 H 0XFF000000 8. ATPCS 规定中,推荐子函数参数最大为 4 个 9. ATPCS 规定中,栈是 满减 10. 在 ARM 汇编编程, 寄存器有多个别名,通常 PC 是指 R15, LR 是指 R14, SP 是指 R13 11. CPSR 寄存器中反映处理器状态的位是 T 位 12. 下面属于 ARM 子程序调用指令的是 BL 13. ARM7 属于 冯 .诺依曼 结 构, ARM9 属于 哈佛 结构。 14. ARM7 是 3 级流水线, A
21、RM9 是 5 级流水线。 15. ARM 中可以访问状态寄存器的指令是 MRS,能够访问内存的指令是 LDR 16. 下面哪种操作系统最方便移植到嵌入式设备中 ( D ) A DOS B UNIX C WINDOWS XP D LINUX 17. 以下哪项关于 SRAM 和 DRAM 的区别是不对 ( A ) (A) SRAM 比 DRAM 慢 ( B) SRAM 比 DRAM 耗电多 (C) DRAM 存储密度比 SRAM 高得多 ( D) DRM 需要周期性刷新 18. 下面哪种嵌入式操作系统很少用于手机终端设备上( CE) (A) Symbian ( B) WinCE (C) uc/o
22、s ( D) linux (E) VxWorks 19. S3C2410 采用的是 ARM920T 核心 20. 下面哪点不是嵌入式操作系统的特点 ( C ) A. 内核精简 B. 专用性强 C. 功能强大 D. 高实时性 21. NAND FLASH 和 NOR FLASH 的叙述正确的是 ( D ) A. NOR 的读速度比 NAND 稍慢 一些 B. NAND 的写入速度比 NOR 慢很多 8 / 17 C. NAND 的擦除速度远比 NOR 的慢 D.大多数写入操作需要先进行擦除操作 22. MMU 的作用有( AB ) A 内存保护 B 地址转换 C 加快存取速度 D 安全保密 E
23、内存分配 23. 以下属于 DMA 特点的有( BC ) A 占用 CPU B 占用总线 C 不占用 CPU D 不占用总线 24. 以下哪种方式不属于文件系统的格式 ( B ) (A) FAT ( B) DOS (C) NTFS ( D) Ext 1.在 ARM 体系结构中,要从主动用户模式( User)切换到超级用户模式( Supervisor),采用何种方法? 先修改程序状态备份寄存器( SPSR)到对应的模式,再更新 CPU 状态 2.嵌入式系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。例如:对于 S3C2410 来说, Boot Loader
24、 会映射到 0x00000000 地址处。 3.CPSR 中的低 8 位称为控制位, 下列不属于控制位的是【 A】。 A、 N B、 I C、 F D、 T 4.ARM 中可以访问状态寄存器的指令是 MRS,能够访问内存的指令是 LDR。 5.下列条件码中表示不相等的是 NE。 EQ 相等 NE 不相等 CS/HS 无符号数大于或等于 CC/LO 无符号数小于 MI 负数 PL 正数或零 VS 溢出 VC 没有溢出 HI 无符号数大于 LS 无符号数小于或等于 GE 有符号数大于或等于 LT 有符号数小于 GT 有符号数大于 LE 有符号数小于或等于 AL 任何 无条件执行 (指令默认条件 )
25、 NV 任何 从不执行 (不要使用 ) 6.CPSR 中的低 8 位称为控制位,其中 I 位等于 1 表示 禁止 IRQ 中断 。 7.ARM 微处理器支持 7 种工作模式。其中,除 用户模式 之外的其余 6 种称为特权模式,在这6 种之中,除 系统模式 之外的其余 5 种又称为异常模式。 8.下列 ARM 指令中,可用于满递增堆栈操作的是 STMIB。 9.ARM 伪指令中,可用于大范围地址读取的是 LDR。 10.同 CISC 相比,下面哪一项不属于 RISC 处理器的特征。【 D】 A、采用固定长度的指令格式,指令规整、简单、基本寻址方式有 2 3 种。 B、减少指令数 和寻址方式,使控
26、制部件简化,加快执行速度。 C、数据处理指令只对寄存器进行操作,只有加载 /存储指令可以访问存储器,以提高指令的执行效率,同时简化处理器的设计。 9 / 17 D、 RISC 处理器都采用哈佛结构 11.以下叙述中,不符合 RISC 指令系统特点的是【 B】。 A、 指令长度固定,指令种类少 B、 寻址方式种类丰富,指令功能尽量增强 C、 设置大量通用寄存器,访问存储器指令简单 D、 选取使用频率较高的一些简单指令 12.下面关于 ARM 处理器的体系结构描述哪一个是错误的。【 B】 A、三地址指令格式 B、所有的指令都是多周期执行 C、指令长度固定 D、 Load-Store 结构 1.相对
27、于 ARM 指令集, Thumb 指令集的特点是【 D】。 A、指令执行速度快 B、 16 位指令集,可以得到密度更高的代码,对于需要严格控制成本的设计非常有意义 C、 Thumb 模式有自己独立的寄存器 D、 16 位指令集,代码密度高,加密性能好 2.在 ARM 寄存器结构中,栈指针使用 R13 寄存器。 3.32 位体系结构的 ARM 处理器有 7 种不同的处理器工作模式,和 6 个主要用来标识 CPU 工作状态和程序运行状态的状态寄存器。 4.在下列 ARM 处理 器的各种模式中,只有 用户 模式不可以自由地改变处理器的工作模式。 5.在 ARM 的汇编程序中, ADR、 ADRL、
28、LDR、 NOP 等被称为伪指令。 填空题 1常见的 ARM 处理器内核有 ARM7、 ARM9 和【 ARM11】等。 2按总线所传送的信息类型,总线分为【地址总线】、【数据总线】和【控制总线】。 3 GPIO 的中文全称是【 通用输入 /输出口 】。 4 ARM 处理器有两种状态,分别是【 ARM】和【 Thumb】。 5.计算机结构分为【 冯 诺依曼 】结构和【哈佛】结构。 6.ARM 处理器支持的数据类型中,字节为【 8】位 、半字为【 16】位、字为【 32】位。 7.ARM 体系结构版本中 V【 4】版架构是目前应用最广的 ARM 体系架构, ARM7、【 ARM9】都采用该架构。
29、 8.常用的嵌入式操作系统有【嵌入式 Linux】、【 VxWords】等。 9.ARM 嵌入式系统主要由【嵌入式硬件】、【嵌入式软件】和【开发工具】构成。 10.S3C2410 支持两种引导方式,分别是【 Nor-Flash】启动方式、【 Nand-Flash】启动方式。 11.一个嵌入式系统由 3 部分组成,分别是【 嵌入式硬件 】、【 嵌入式软件 】和【 开发工具 】 。 判断题 : 1、所有的电子设备都属于嵌入式设备。( F ) 2、冯诺依曼体系将被哈佛总线所取代。( F ) 3、嵌入式开发不需要硬件支持。( F ) 10 / 17 4、移植操作系统时需要修改操作系统中与处理器直接相关
30、的程序。 F 5、 USB2.0 的最大通信速率为 12MB。 ( F ) 6、嵌入式开发需要专门的软件和硬件设备。 ( T ) 编程题 ;例三: ADR 伪 指令 AREA adrlabel1, CODE, READONLY ENTRY start BL func B . LTORG func ADR R0, start ADR R1, DataArea ;ADR R2, DataArea+4300 ADRL R3, DataArea+4300 MOV PC, LR DataArea SPACE 8000 END ;例 五 : 利用跳转表实现程序跳转 AREA Jump, CODE, READONLY num EQU 2 ENTRY start MOV R0, #0 MOV R1, #3 MOV R2, #2 BL arithfunc B . arithfunc CMP R0, #num MOVHS PC, LR ADR R3, JumpTable LDR PC, R3,R0,LSL #2 JumpTable DCD DoAdd DCD DoSub DoAdd ADD R0, R1, R2 MOV PC, LR