1、1ARM 嵌入式系统基础教程 - 期中开卷专业:软件 1002 班 姓名:王世伟 学号:04103060(24 )一、嵌入式系统基本概念1、 什么是嵌入式系统?有何特点?答:所谓嵌入式,实际上是“嵌入式计算机系统” ,的简称,它是相对于通用计算机 系统而言,注重于发展独立的单芯片技术。嵌入式系统是“控制、监视或者辅助装 置、机器和设备运行的装置”。特点:(1)嵌入式系统是将先进的计算机技术,半导体技术以及电子技术与各行业的 具体应用相结合的产物,这一点就决定了他必然是一个技术密集,资金密集,高度分散,不断创新的知识集成系统。 (2)系统内核小 (3)专用性强 (4)系统精简 (5)系统软件要求
2、 (6)嵌入式软件开发要走向标准化,需要使用多任务的操作系统。 (7)嵌入式系统本身并不具备在其上进行进一步开发的能力。2、 举例在你的身边常见到的嵌入式系统产品,谈一谈你对“嵌入式系统”的初步理解。答:产品有:洗衣机,空调,手机。嵌入式系统就是内置小计算机系,可以对机器进行智能控制的系统。3、 嵌入式系统的 3 个基本特点?答:(1)专用性 (2)嵌入型 (3)计算机系统4、 什么是嵌入式处理器,嵌入式处理器可以分为几大类?答:嵌入式处理机是嵌入式的核心,是控制,辅助系统运行的硬件单元。分类:四大类(1)嵌入式微处理器 (2)嵌入式微控制器 (3)嵌入式 DSP 处理器(4)SoC 片上系统
3、5、 广泛使用的三种类型的操作系统?答:多道批处理操作系统、分时操作系统以及实时操作系统。6、 列举常见的 4 种嵌入式操作系统?说明你对嵌入式操作系统的基本认识,嵌入式操作系统在嵌入式系统开发中的必要性。答:嵌入式 Linux、Win CE 、VxWorks、C/OS-II没有操作系统的计算机效率十分底下,把操作系统嵌入到计算机中,可以提高 系统的可靠性,开发效率,缩短了开发周期。二、ARM7 体系结构21、 ARM 是什么样的公司?答:它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC 处理器。特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导 体、
4、软件和 OEM 厂商,并提供服务。2、 什么是 RISC?什么是 CISC?答:RISC 是精简指令集计算机的缩写。CISC 是复杂指令集计算机的缩写。3、 举出 2 个 ARM 公司当前应用比较多的 ARM 处理器核?答:ARM7 系列、ARM9 系列、ARM10 系列、ARM11 系列、intel 的 Xscale 系列和MPCore 系列。4、 ARM7TDMI 中的 T、D、S、I 分别表示什么含义?答:T:支持高密度 16 位的 Thumb 指令集D:支持片上调试S:ARM7TDMI 的可综合(synthesizable )版本(软核)I:支持 EmbededICE 观察硬件M:支持
5、 64 位乘法5、 ARM7TDMI 处理器采用什么样的体系结构,其可寻址地址空间多大?答:ARM 处理器使用冯 .诺依曼结构使用单个平面的 232 个 8 位字节地址空间。地址空间可以看作是包含 230 个 32 位字,或 231 个 16 位半字。6、 ARM7TDMI 处理器采用几级流水线处理,使用何种存储器编址方式?答:ARM7TDMI 处理器采用三级流水线。ARM 处理器将存储器看做是一个从 0 开始的线性递增的字节集合。7、 ARM 处理器哪几种状态和模式?答:共 7 种。(1)用户模式 (2)快速中断模式 (3)外部中断模式 (4)管理模式(5)数据访问中断模式 (6)系统模式
6、(7)未定义指令模式8、 简述 ARM 处理器两种状态的应用特点。答:ARM 状态:处理器执行 32 位字对齐方式的 ARM 指令,每条 ARM 指令长度为 32 位,指令的功能强大,处理器默认为此状态。Thumb 状态:处理机执行 16 位半字对齐方式的 Thumb。每条 Thumb 指令长度为 16 位,是 ARM 指令功能的子集。9、 简述 ARM 处理器 7 种模式的应用特点。3答:(1)用户模式:ARM 处理器正常的程序执行模式。(2)快速中断模式:用于高速数据传输或通道处理。(3)外部中断模式:用于通用的中断处理。(4)管理模式:操作系统使用的保护模式。(5)数据访问中断模式:当数
7、据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。(6)系统模式:运行具有特权的操作系统任务。(7)未定义指令模式:当未定义的指令执行时进入该模式,可用于支持硬件处理器的软件仿真。10、 结合 CPSR 的结构,说明其中的 M4:0的作用和 T 位的作用。答:M4:0是模式控制位,这些位决定处理器的工作模式。T 位:T 位标志控制处理器按照 ARM 指令集运行,还是按照 Thumb 指令集运行。M 1I M 0T M 4 M 3 M 2F8 7 6 5 4 3 2 1 02 82 93 03 1 2 7VCZN11、 结合 CPSR 的结构,说明其中的 I 位和 F 位的作用。答:I 位
8、和 F 位都是中断禁止标志位,用来时能或禁止 ARM 的两种外部中断。M 1I M 0T M 4 M 3 M 2F8 7 6 5 4 3 2 1 02 82 93 03 1 2 7VCZN12、 简述 ARM7TDMI 内部有哪些寄存器及特点 。答:分别为 31 个通用 32 位寄存器和 6 个状态寄 存器。它们不能在同一使劲同时被访 问,对其的访问取决于处理器状态和处理器模式。13、 结合下表简述 FIQ 模式下有哪几个私有寄存器,这些私有寄存器有何使用特点?R13_irqR13_irqR14_undR13_undR14_abtR13_abtR14_svcR13_scvSPSR_svcSPS
9、R_abt SPSR_undSPSR_irqSPSR_fiqR14_fiqR13_fiqR12_fiqR1_fiqR10_fiqR9_fiqR8_fiq快 中 断中 断未 定 义中 止管 理系 统用 户SPSR CPSRCPSR状 态寄 存 器 R15R15(PC)R14R14(LR) R13R13(SP) R12R12(IP)R1R1(FP,v8) R10R10(SL,v7) R9R9(SB,v6)R8R8(v5) R7R7(v4) R6R6(v3)R5R5(v2) R4R4(v1) R3R3(a4)R2R2(a3) R1R1(a2) R0R0(a1)通用寄存器和程序计数器各 模 式 下 实
10、 际 访 问 的 寄 存 器寄 存 器 在 汇编 中 的 名 称寄 存 器类 别 快 中 断中 断未 定 义中 止管 理系 统用 户状 态寄 存 器通用寄存器和程序计数器各 模 式 下 实 际 访 问 的 寄 存 器寄 存 器 在 汇编 中 的 名 称寄 存 器类 别4答:FIQ 模式下私有寄存器有 R8-fiq,R9-fiq,R10-fiq,R11-fiq ,R12-fiq,R13-fiq ,R14-fiq,和 SPSR-fiq。这些寄存器使得在发生 FIQ 中断,处理器不必为保护寄存器而浪费时间,从而加速了 FIQ 的处理速度。14、 ARM7TDMI 中的 PC 指向的是下一条将要执行的
11、指令,这句话对吗?为什么?答:不对,PC 中的内容总是指向正在“取指”指令的地址。15、 简述 ARM 处理器的 CPSR 和 SPSR 的功能、作用和工作方式。答:CPSR 是当前状态寄存器,他可以在任何运行模式下被访问,它包括条件标志位,中断标志位,当前处理器模式标志位,以及其他的一些相关的控制盒状态位。ARM 内核就是通过使用 CPSR 来监视和控制内部操作的。SPSR 用于保存 CPSR 的当前值,从异常退出时则可由 SPSR 来恢复 CPSR。16、 简述 ARM7 的内部寄存器 R13、R14、R15 的主要功能、作用和工作方式。答:R13 作为堆栈指针 SP,用于指定堆栈操作出入
12、口的地址。其他 6 个 R13 寄存器为堆栈寄存器。为用户模式和系统模式共用一个。R14 可以用作通用寄存器,也可以用作链接寄存器。链接寄存器用于保存子程序地址或者返回地址。R15:程序寄存器,总是指向正在 “取指”的指令17、 什么是计算机的寻址方式?ARM7TDMI 有几种寻址方式?答:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址。18、 什么是堆栈?ARM 中的堆栈是如何定义和使用的?答:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top) 对数据 项进行插入和删除。ARM 处理器将 RB 作为堆栈指针 SP,用于保存堆
13、栈的出入口处地址。19、 何谓存储的“大端模式”、“ 小端模式”?写出数据 0x12345678 在 0x20000000 字单元中“小端模式”下的存储细节。答:大端模式:按照数据的低字节存放在高地址中的顺序进行存储。小端模式:按照数据的高字节存放在高地址中的顺序进行存储。0x20000000 存放 0x78,0x20000001 存放 0x56,0x 20000002 存放 0x340x20000003 存放 0x12。20、 什么是“字对齐” 和“半字对齐 ”?ARM 指令必须字对齐存放, Thumb 指令必须半字对齐存放,这句话正确吗?答:如果一个字数据的访问存储地址 A 能被 4 整除
14、,即地址的低两位为零,则为字对齐的存储器访问。如果一个半数据的访问的存储地址 A 能被 2 整除,即地址的最低位为零,则为半字对齐的存储器访问,如果 Thumb 状态下将一个非字对齐的地址写入 PC,则数据在写入 PC 时第50 位被忽略,最终 PC 的 bit0 为 0,将会产生不可预料的结果。21、 ARM 指令长度和 Thumb 指令长度固定位长吗?位长分别是多少?答:固定 , ARM 为一个字(32bit),Thumb 为一个半字(16bit)22、 ARM7TDMI 中的中断分为那两类?在 CPU 级别如何分别屏蔽?答:分别为 IRQ,FIQ ,在 cpu 级别通过状态寄存器 CPS
15、R 中的 I 和 F 位置位来屏蔽。23、 什么是 ARM7TDMI 中的异常?简述 ARM7TDMI 中的复位、 IRQ、FIQ 和软中断等几种主要异常的控制原理。答:异常是指正常的程序被暂时中止的状态模式。复位异常时处理器进行管理模式执行相应操作,I 和 F 均为禁止;软中断异常也进入管理模式,I 位禁止;IRQ 异常时进入中断模式,I 位禁止;FIQ 异常进入快速中断模式,I 和 F 位均为禁止,都是通过异常向量表。24、 简述 ARM7TDMI 中产生复位、 IRQ、FIQ 和软中断等几种主要异常的条件,这几种异常会使 ARM 分别进入到哪种模式?ARM 核响应异常的过程,以及这几种异
16、常地返回指令是什么?答:复位异常:当 nRESET 信号被拉低时,ARM 处理器放弃正在执行时的指令,等到 nRESET 下信号再次变高时,ARM 执行下列操作:( 1)强制 M4:0复为 10011,进入管理模式;(2)将 CPSR 中的 I 和 F 置位;(3)将 CPSR 中的 T 位清零(4)强制pc 从地址 0x00 开始对下一条指令进行取值;(5)返回 ARM 状态并回复执行,无返回指令。IRQ:只有 CPSR 中相应的 I 位被清除时,才可能发生 IRQ 异常,进入中断模式,内核自动作如下处理:(1)将异常处理的返回地址保存到 R14-irq 中(2)用户模式的CPSR 被保存到
17、 SPSR-irq 中;(3)修改 CPSR,禁止新的 IRQ 中断产生,进入 ARM 状态,IRQ 模式(4)置 IRQ 模式下的 IRQ 异常处理程序的中断入口地址向量。地址 0x00000018。 返回指令: subspc , R14-irq , #4FIQ:只有 CPSR 中的想用下位被清零时,才发生下 IQ 异常进入 FIQ 模式,FIQ 中的 8个专用寄存器用来保护中断地址。其返回指令: subs pc, R14-fiq , #4软中断 swi:用于进入“管理模式”,通常用于请求一个特定的管理函数。返回指令:movs pc,R14-svc三、ARM7TDMI 指令系统1、 ARM7
18、TDMI 支持哪几种指令集,各有什么特点?答:支持 ARM 指令集和 Thumb 指令集两种。ARM 指令集:指令 32 位,效率高,代码密度低,所有 ARM 指令都是可以有条件 执行的 。Thumb 指令集:指令 16 位,代码密度较高,Thumb 指令仅有一条指令具备条件执行功62、 ARM 汇编指令的基本格式?答:基本指令:在 ARM 指令集中,每条指令占有 4 个字节,即指令长度为 32 位。3、 何谓 ARM 指令的条件码?默认的条件码是什么?举例说明 ARM 指令的条件码对指令执行的影响。答:条件码是按照指定条件执行的操作条件:默认条件码是 AL(无条件执行)例子:比较两值大小,并
19、进行相应加 1 处理:cmp R0,R1;ADDHI R0,R0,#1 ;ADDLS R1,R1,#14、 解释何为“满堆栈” 、 “空堆栈 ”、 “递增堆栈”和“递减堆栈”? ARM 指令系统中是如何支持的?答:满堆栈:堆栈指针指向最后压入栈的有效数据项。空堆栈:堆栈指针指向下一个待压入数据的空位置。递增堆栈:在向堆栈写入数据后,堆栈指针的值变大,即向高地址方向生长。递减堆栈:在想堆栈写入数据后,堆栈指针的值变小,即向低地址方向生长。ARM 指令支持四种对战类型:满递增,空递增,满递减,空递减。5、 请说明 MOV 指令与 LDR 加载指令的区别和用途。答:LDR 的操作数既可以来源于寄存器
20、也可以来源于存储器,MOV 的操作数能来源于寄存器。LDR 指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、程序的跳转、外围部件的控制操作等;MOV 指令将 8 位立即数或寄存器传送到目 标寄存器(Rd) ,可用于移位运算等操作。6、 解释 B 指令、 BL 指令与 BX 指令的功能差别?简述他们的应用场合。答:B 指令:是分支指令,跳转到标号指定的地址程序。Bl 指令:带连接的分支指令,跳转到指定的地址程序,同时还将程序计数器PC 的值保存到 LR 寄存器中。BX 指令:带状态切换的分支指令,跳转到 Rm 指定的地址处执行程序,根据跳转地址的最低位 来切换处理器状态。B/B
21、L 指令跳转范围限制在当前指令的 +-32MB 地址内。7、 解释 SWI(软中断)指令的执行过程和典型应用。答:SWI 指令用于产生软中断,从而实现先从用户模式到管理模式的变换。在切换时,CPSR 寄存器内容将保存到管理模式的 SPSR 中,同时程序跳转到 SWI 异常向量入口处。 SWI 用于系统功能调用。8、 ARM 汇编指令条件码如下表,分析下两段程序片断的功能,写出其等价的类 C 语言功能描述:条件助记符 标志 含义7EQ Z=1 相等NE Z=0 不相等CS/HS C=1 无符号数大于或等于CC/LO C=0 无符号数小于MI N=1 负数PL N=0 正数或零VS V=1 溢出V
22、C V=0 没有溢出HI C=1,Z=0 无符号数大于LS C=0,Z=1 无符号数小于或等于GE N=V 有符号数大于或等于 LT N!=V 有符号数小于 GT Z=0,N=V 有符号数大于 LE Z=1,N!=V 有符号数小于或等于 AL 任何 无条件执行 (指令默认条件) NV 任何 从不执行(不要使用) 程序片断 1:CMP R0, R1 ADDHI R0 , R0 , #1 ADDLS R1 , R1 , #1程序片断 2:CMP R0 , #10 CMPNE R1 , #20 ADDNE R0 , R0 , R1答:if(R0R1) if(R0!=10)R0+; if(R1!=20
23、)else R1+; R0+=R1;9、 结合 ARM7TDMI 结构中的流水线结构,解释 IRQ 中断返回指令:SUBS PC , R14_irq , #4 的原理答:ARMTTDMI 采用三级流水线结构,PC 指向正在取值的指令,产生 IRQ 时,保存在 R14-IRQ 中的是 PC 的值,在返回时为保证正确性应返回到 PC-4 即中断前“正在译码”的指令地址。所以返回指令为:subs pc,R14-irq,#4;四、LPC2000 系列 ARM 硬件资源原理与使用1、 LPC2000 系列器件有几种常见的封装形式和其封装特点?答:常见的封装有 64 脚封装,144 脚封装特点:功耗低,有
24、多个 32 位定时器,多达 9 个外部中断,16K 字节静态 RAM,81/128/256k 字节片 Flash 存储器,128 为宽度接口加速器,4 路 10 位 ADC 或 8 路10 位 ADC(64 脚和 144 脚封装) ,46 或 76112 个 GPIO(64 脚和 144 脚封装) 。2、 简要说明一下 LPC2000 系列器件片内存储器的特点?答:片内存储器分为片内 Flash 和片内静态 RAM。片内 Flash 通过 128 位宽度的总线与 ARM 内核相连,具有很高的速度,特有的存储器加速功能,可以将程序直接放 在 Flash 上运行。SRAM 支持 8 位、16 位和
25、 32 位的读写访问。3、 在 LPC2000 系列 ARM 芯片中,内 Flash 有哪几种写入方式?答:(1)使用 JTAG 仿真 /调试器,通过芯片的 JTAG 借口下载程序。(2)使用在系统编程技术,通过 UART0 接口下载程序。(3)使用在应用编程技术,在用户程序运行时对 Flash 进行擦出和/或编程操作,实现数据的存储和固件的现场升级。4、 ARM 寄存器 PC、CPSR、SPSR 分别有什么用?答:PC 是 CUP 中的程序计数器,内容总是指向正在“取指”指令的地址。CPSR 是当前程序状态寄存器,用来监视和控制内部操作的。SPSR 是物理状态寄存,用于保存 CPSR 的当前
26、值,从异常退出时则由它来恢复CPSR。5、 什么是 ARM 处理器的异常?ARM 处理器是如何处理异常的?答:异常:在执行正常程序过程中,当发生某种异常事件或某种外部请求时,处理器就暂停执行当前的程序,进入异常模式。如何处理异常:1) 保存执行状态:将 CPSR 复制到发生的异常模式下的 SPSR 中。2) 模式切换:将 CPSR 模式位强制设置为与异常类型相对应的值,同时处理器进入到 ARM 执行模式,禁止所有 IRQ 中断,当进入 FIQ 快速中断模式时禁止 FIQ中 断。3) 保存返回地址:将下一条指令的地址(被打断程序)保存在 LR(异常模式下LR_excep)中。4) 跳入异常向量表
27、:强制设置 PC 的值为相应异常向量地址,跳转到异常处理程序中。6、 什么是 ARM 体系结构中的异常向量表?在应用中有何作用?答:处理器规定了异常处理程序入口的地址区间,并规定了地址的存放顺序,一般称为异常向量表。在异常处理过程中,可以加快异常服务的响应速度。7、 在 ARM 体系结构中,异常向量表中存放的是什么内容?答:异常处理程序的程序入口地址。8、 在 ARM 体系结构中,异常向量表中 0x0014(保留字)单元存放的是什么内容?有何用途?9答:保留的异常入口,早期的 ARM 结构中会被用到,而在 ARM7 中是保留的,以确保软件能与不同的 ARM 结构兼容。而在有些处理器芯片中,这
28、4 个字节已经有了非常特殊的用特。9、 什么是 ISP 技术?IAP 技术?在实际应用中有何实际意义?答:ISP :在系统可编程指电路板上的空白器件可以编程写入最终用户代码而不需要 从电路板上取下器件已经编程的器件也可以用 ISP 方式擦除或再编程。IAP:是指在应用编程,即在程序运行中编程,就是片子提供一系列的机制( 硬件/软 件上的)当片子在运行程序的时候可以提供一种改变 flash 数据的方法。10、 LPC2000 系列器件中,许多芯片的引脚具有多种功能,应用中如何使用其特定的功能?答:设置寄存器 PINSEL0、PINSEL1、PINSEL2 为特定功能的值。11、 简述 LPC20
29、00 系列芯片的引脚设置寄存器 PINSEL0、PINSEL1、PINSEL2 的具体功能?答:PINSEL0 控制引脚 P0.0P0.15 的连接状态,每两位控制一个引脚。PINSEL1 控制引脚 P0.16P0.31 的连接状态,每两位控制一个引脚。PINSEL2 控制 P1 端口和 P2 端口。12、 简述 LPC2000 系列芯片内部 GPIO 的功能特点?答:(1)可以独立控制每个 GPIO 口的方向;(2)可以独立设置每个 GPIO 的输出状态;(3)所有 GPIO 口在复位后默认位输入状态。13、 结合 GPIO 结构原理图,简述 GPIO 的工作方式设置内容。P I N S E
30、 L xI O x D I RI O x C L RI O x P I NI O x S E Ti no u t10答:芯片某个管脚首先经过 unix 功能选择,对应 PINSELx 寄存器选择其功能,如果选择 GPIO 功能,在经过 MUX2 中 IOxDIR 寄存器对应位选择,控制管脚输入输 出方向,GPIO 管脚输入时通过 IOxPIN 寄存器读入,输出时通过 IOxSET 或 IOxCLR 寄存器控制输出实现对应 GPIO 管脚的控制。14、 设计编程:LPC2131 的 P0.7 引脚连接了一个蜂鸣器,编程发出等周期的滴滴声。答:#define Void DelayNS( int m
31、) int i;芯片引脚10for(;m0;m-)for(i = 0;i50000;i+)main()PINSEL0 = 0x00000000;IO0DIR = 1 7;while (1)IO0SET = 1 7;DelayNS(50);IO0CLR = 1 7;DelayNS(50);15、 设计编程:LPC2131 的 P01:0 两引脚分别连接了 2 个按键 K1 和 K4;P07:6 两引脚分别连接了 2 个指示灯 LED1 和 LED2;请编制驱动程序,使 Kx 按键时,LEDx 灯亮。答:#define k1 10#define k2 11#define LED1 17#define LED2 18main()PINSEL0=0x00000000;IO0DIR=IO0DIR IO0DIR=IO0DIR IO0DIR=IO0DIR|LED1;IO0DIR=IO0DIR|LED2;IO0CLR=IO0CLR|LED1|LED2;While(1)If(IO0PIN else IO0SET=LED1;If(IO0PIN else IO0SET=LED2;