嵌入式系统习题汇总new.doc_第1页
嵌入式系统习题汇总new.doc_第2页
嵌入式系统习题汇总new.doc_第3页
嵌入式系统习题汇总new.doc_第4页
嵌入式系统习题汇总new.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统复习题集 一、基础知识 1、 什么是代码的临界区? 答:代码的监界区是指处理时不可分割的代码,运行这些代码不允许被打断。一旦这部分代 码开始执行,则不允许任何中断打入。中断不调用任何临界区的代码或不访问任何临界区使 用的共享资源时,这个中断是可能可以执行。为确保临界区代码的执行,在进入临界区之前 要关中断,而临界区代码执行完成以后要立即开中断。 2、 什么是嵌入式系统? 答:嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对 功能、可靠性、成本、体积及功耗严格要求的专用计算机系统,具有完成复杂功能的硬件和 软件且紧密耦合在一起的计算机系统。 3、 什么是嵌入式操作系统?为何要使用嵌入式操作系统? 答:运用在嵌入式系统上的实时操作系统,具有事件驱动和任务(进程)调度功能,且在有 限时隙内能完成事件的响应和任务(进程)的切换,能可靠、实时、灵活地管理嵌入式系统 上的各种资源和任务。使用嵌入式操作系统,能方便实时应用软件的开发和有机地整合,能 有效地管理和协调各项工作,因此是开发和运行非常重要的环境。 4、 ARM 状态与 Thumb 状态的互换以什么条件来判断?似举出状态从 ARM 到 Thumb 或从 Thumb 到 ARM 切换的例子。 答:其互换条件是执行 BX 指令时,判断的最低一位 b0是否为 0 或为 1 来确定的,当 b0为 0 时,则执行的程序是 ARM 状态的 32 位指令程序,当 b0为 1 时,则 执行的程序是 Thumb 状态的 16 位指令程序。如下例: ;从 ARM 状态转变为 Thumb 状态 LDR R0,Lable+1 BX R0 ;从 Thumb 状态转变为 ARM 状态 LDR R0, Lable BX R0 5、ARM 体系结构支持多少种处理器模式,分别是什么? 答:ARM 体系结构支持 7 种处理器模式,分别是用户模式、快中断模式、中断模式、管理 模式、中止模式、未定义模式和系统模式。 6、 子程序利用 R14(LR) ,获得返回到主程序的下条指令,通常有直接输入法和堆栈方法, 试填写下面两种方法的代码: MOV PC, LR 或 STMFD SP!,, LR LDMFD SP!, , PC 如果是异常处理后的返回,如 IRQ 中断返回又如何改写代码? 7、 在修复产生数据中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行返 回指令:SUBS PC R14_abt,#8 ;而预取中止时为:SUBS PC R14_abt,#4 试解释减 8 原因?而在预取中止中为什么减 4 ? 答:由于 ARM 为三级流水,执行段相对取指令段差为 8,产生数据中止是在执行段结束点进 入,此时 PC 值为数据中止指令地址+8,即保存当前 PC 到 R14_abt 为数据中止指令地址 +8,因此在修复产生数据中止的原因后,返回地址应为数据中止指令地址本身,处理程序都 必须执行返回指令:SUBS PC R14_abt,#8,才能实现其目的。而在预取中止中时,出现中止 异常是在译码段进入执行段的开始点,此时保存到 R14_abt 值为预取中止指令地址+4,因此 要恢复到中止指令地址必为当前保存的 R14_abt 值减 4,即执行 SUBS PC R14_abt,#4 操作就 可。 8、 什么是小端存储?什么是大端存储? 答:小端存储就是其存储格式为保存的字最低地址的字节看作是最低位字节,最高地址字 节被看作是最高位字节。因此,存储器系统字节 0 连接到数据线 7-0。 大端存储就是其存储格式为将最高位字节保存在最低地址字节,最低位字节保存在最 高地址字节。因此存储器系统字节 0 连接到数据线 31-24。 9、 ARM7TDMI 中 T、D、M、I 的含义是什么? 答:T 表示具有高密度 16 位的 Thumb 指令机扩展功能;D 表示具有支持片上调试功能;M 表示具有 64 位乘法指令;I 表示增加了 EmbededICE 观察点硬件。 10、ARM7TDMI 采用几级流水线?使用何种存储器编址方式? 答:ARM7TDMI 采用三级流水段,分别为取指段、译码段和执行段。使用字节编址方式。 11、ARM 处理器模式和 ARM 处理器状态有何区别? 答:ARM 处理器模式是指用户模式、快中断模式、中断模式、管理模式、中止模式、未定 义模式和系统模式。每种模式都表明一种程序使用内部寄存器和一些片内外的硬件设备权利。 而 ARM 处理器状态是指 Thumb 状态和 ARM 状态,即程序指令的执行译码按 16 位 Thumb 指令集还是按 32 位 ARM 指令集译码执行。 12、 分别列举 ARM 的处理器模式和状态。 答:ARM 处理器模式分别是用户模式、快中断模式、中断模式、管理模式、中止模式、未 定义模式和系统模式。ARM 处理器状态是指 16 位 Thumb 指令集运行的 Thumb 状态和 32 位 ARM 指令集运行的 ARM 状态。 13、 PC 和 LR 分别使用哪个寄存器? 答:PC 使用 R15;LR 使用 R14。 14、 R13 寄存器的通用功能是什么? 答:R13 寄存器在 ARM 状态时,可用作通用寄存器功能,但通常为堆栈指针 SP,但在 Thumb 状态时,其压栈 PUSH 和弹栈 POP 指令都要用到 R13(SP) 。 15、 CPSR 寄存器中哪些位用来定义处理器状态? 答:在 CPSR 寄存器中 b5 位 T 定义处理器状态,T=0 为 ARM 状态,T=1 为 Thumb 状态。 16、 ARM 和 Thumb 指令的边界对齐有何不同? 答:ARM 指令长度为 32 位,其边界对齐存取地址位都是按 b1:0=00 方式进行,而 Thumb 指令长度为 16 位,其边界对齐存取地址位都是按 b0=0 方式进行。 17、描述一下如何禁止 IRQ 和 FIQ 的中断? 答:对 CPSR 中的 b7(I 位)和 b6(F 位)标志位置位时,可分别来禁止 IRQ 和 FIQ 中断。 18、定义 R0=0x12345678,假设使用存储指令将 R0 的值存放在 0x4000 单元中。如果存 储器格式为大端格式,请写出在执行加载指令将存储器 0x4000 单元的内容取出存放到 R2 寄存器操作后得 R2 的值;如果存储器格式改为小端格式,所得的 R2 值又为多少? 低地址 0x4000 单元的字节内容分别是多少? 答:按大端格式和小端格式存储,从存储器中读出的值是不变的,R2=0x12345678。按大端 格式从 0x4000 单元读出的值为 0x12, 按小端格式从 0x4000 单元读出的值为 0x78。 19、请描述进入内核时异常操作步骤? 答: 1)在 LR 中保存下一条指令的地址; 2)将 CPSR 复制到适当的 SPSR; 3)根据异常将 CPSR 模式强制设为某一值; 4)强制 PC 从相关的异常处取指。 5)异常结束时,异常处理程序必须将 LR 中的值减去偏移量后移入 PC。 6)将 SPSR 的值复制回 CPSR。 7)清零在入口置位的中断禁止标志。 20、 请描述一下 ARM7TDMI 产生异常的条件分别是什么?各种异常会使处理器进入哪种模 式?进入异常时内核有何操作?各种异常的返回指令又是什么? 答:ARM7TDMI 产生异常: 异常条件 模式 返回指令 快速中断请求 快中断模式 SUBS PC,R14_fiq,#4 中断请求 中断模式 SUBS PC,R14_irq,#4 预取中止请求 中止模式 SUBS PC,R14_abt,#4 数据中止请求 中止模式 SUBS PC,R14_abt,#8 未定义指令中断请求 未定义指令模式 MOVS PC,R14_und 软件中断请求 管理模式 MOVS PC,R14_svc 进入内核时异常操作是: 1) 将 LR 中保存下一条指令的地址; 2) 将 CPSR 复制到适当的 SPSR; 3) 根据异常将 CPSR 模式强制设为某一值; 4) 强制 PC 从相关的异常处取指。 5) 异常结束时,异常处理程序必须将 LR 中的值减去偏移量后移入 PC。 6) 将 SPSR 的值复制回 CPSR。 7) 清零在入口置位的中断禁止标志。 21、简单描述一下 ARM7 的三级流水线,并说明其对程序设计的影响。 答:ARM7 的三级流水分为取指段、分析段和执行段。对程序设计的影响:提高指令执行的 速度,并使处理和存储系统连续操作。 ARM Thumb PC PC 取指 PC-4 PC-2 译码 PC-8 PC-4 执行 由此看出,它对子程序调用返回、异常恢复返回,LR 值需减一个常数值作为返回地址。 22、ARM7TDMI(-S)有几种寻址方式?LDR R1,R0,#0x08属于哪种寻址方式? 答:有 9 种,分别是:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻 址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址。其中:LDR R1,R0,#0x08属 于基址寻址。 23、ARM 指令的条件码有多少个?默认条件码是什么? 答:ARM 指令的条件码有 16 个,默认条件码是:AL 编码为 1110 即无条件执行。 24、ARM 指令中第二个操作数有哪几种形式?列举 5 个 8 位图立即数。 答:ARM 指令中第 2 个操作数有 3 种形式: 1)#immed_8r 常数表达式; 2)Rm 寄存器方式; 3)Rm,shift 寄存器移位方式。 例如:0x3FC、0、0xF0000000、200、0xF0000001。 25、将 ARM 指令中,使用第 2 个操作数时,第 2 操作数的形式可为常数表达式 #immed_8r,这种常数的合理表达方式是什么? 答:这种常数须对应 8 位位图数据的循环移位偶数位得到的任何 32 位数据。 26、将 ARM 指令中,使用第 2 个操作数时,第 2 操作数的形式可为常数表达式 #immed_8r,请说明下面常数哪些合理,哪些非法? 0x3FC,0x1F,0x1FE,0,0xF0000000,511,0xFFFF,0x1010,0xF0000010,200,0xF0000001,0x12800000, 0x4000003B,0x0016C000 答:合法常量: 0x3FC/0/0xF0000000/200/0xF0000001/0x1F,0x12800000,0x4000003B,0x0016C000; 非法常量:0x1FE/511/0xFFFF/0x1010/0xF0000010。 27、将比较两个值大小,并进行相应加 1 处理,C 代码为: if(ab) a+; else b+;写出对应的 ARM 指令程序(其中设 R0 为 a,R1 为 b)? 答:CMP R0,R1 ADDHI R0,R0,#1 ;若 R0R1,则 R0=R0+1 ADDLS R1,R1,#1 ;若 R0R1,则 R1=R1+1 28、将 C 代码:if(a!=10)弹栈指令:POP reglist,PC 37、Thumb 指令集的 BL 指令转移范围为何能达到4MB?其指令编码是怎样的? 答:Thumb 指令集的 BL 采用 2 条这样的指令组合成 22 位半字偏移(符号扩展为 32 位),使 指令转移范围为4MB。其指令编码为:1111+H+offset11 共 16 位。其中 H 为 1 位,offset11 为了 11 位。 38、在中断向量中转移指令为什么没有用 B 指令?而是用什么指令实现跳转的? 答:在中断向量中转移指令没有用 B 指令是由于 B 指令转移范围仅在32MB 内,因此满足 不了中断向量的全地址范围内的转移。实际中断向量中转移指令是用 LDR PC ,addr,和文字 池(DCD 伪指令)来实现的,它可以实现 4GB 范围内跳转。 39、LPC2114 可使用的外部晶振频率范围是多少(使用/不使用 PLL 功能时)? 描述一下 LPC2210 的 P0.14、P1.20、P1.26、BOOT1 和 BOOT0 引脚在芯片复位时分别有什 么作用?并简单说明 LPC2000 系列 ARM7 微控制器的复位处理流程。 答:使用 PLL 功能时,外部晶振频率范围为 10-25MHZ;不使用 PLL 功能时为 1-30MHZ。 在复位时, LPC2210 的 P0.14 决定外部复位后是否进入 ISP 状态,如为低电平则进入 ISP 状态。 P1.20 决定复位后是否使用 P1.16-P1.25 作为跟踪端口进行跟踪同步。 P1.26 决定复位后是否使用 P1.31-P1.26 作为调试端口。 BOOT1 和 BOOT0 引脚在芯片复位时决定复位后存储器的来源以及存储器的宽度。 LPC2000 系列 ARM7 微控制器的复位处理流程: 流程略。 40、LPC2000 系列 ARM7 微控制器对向量表有何要求(向量表中的保留字)? 答:LPC2000 系列 ARM7 微控制器要求:在向量表中所有 32 位向量按有符合数据累加之和 为 0,这时向量表才有效,且芯片复位后,能脱机独立运行。因此向量表中的保留字是配置数 据累加和为 0 而留着的。 41、如何启动 LPC2000 系列 ARM7 微控制器的 ISP 功能?相关电路应该如何设计? 答:微控制器在复位后可能有多种初始状态,决定于引脚状态和只读存储器的数据。当有外 部复位信号Reset ,P0.14 低电平时,进入 ISP 状态,当 P0.14 为高电平时,同时 BOOT0 和 BOOT1 为高电平时,进入 ISP 状态。 相关电路应该为: 42、LPC2000 系列 ARM7 微控制器片内 Flash 是多少位宽度的接口?它是通过哪个功能 模块来提高 Flash 的访问速度? 答:LPC2000 系列 ARM7 微控制器片内 Flash 是 128 位宽度的接口,是通过数据缓冲模块、 预取缓冲模块、分支跟踪缓存模块、两 Flash 存储模块来提高 Flash 的访问速度。 43、LPC2210 的 BANK0 存储块使用 32 位总线,访问 BANK0 时,地址线 A1、A0 是 否有效?EMC 模块中的 BLS0BLS3 具有什么功能? 答:如果存储器组配置成 32 位宽度,地址线 A0 和 A1 无用,这是由于地址位的增减与存储 器数据增减同步,此时 A0 和 A1 可作为 GPIO 使用(由 PINSEL2 设置) 。EMC 模块中的 BLS0BLS3 具有字节定位的选择信号功能,当 BLS0 为低时,存取定位到低 8 位字节上, 当 BLS1 为低时,存取定位次到低 8 位字节上,当 BLS2 为低时,存取定位到次高字节,当 BLS3 为低时,存取定位到高位字节上。 44、如果存储器组配置寄存器中 RBLE 位置 1,表示按字节区分存储器组,现有程序: LDR R0,=0X80000001 MOV R1,0X55 STR R1,R0 请问执行 STR 指令后,存储器地址线上的地址应为 0X80000000,数据线的前 16 位 数据中,低 8 位为 无效 ,高 8 位为 0X55 。EMC 模块中的引脚线 BLS0 和 BLS1 电平分 别为 高电平 和 低电平 。 (填高低电平) 45、在 startup.s 启动代码中,设置异常向量表时,IRQ 入口处为什么放置 LDR PC,PC,# -0x0ff0指令而非 LDR PC,IRQ_Addr。 答:这是由于 LDR PC,IRQ_Addr 指令不能提供灵活的转移地址,在处理时就要耗费大量 的时间解决 IRQ 转移分类问题。而 LDR PC,PC,# -0ff0指令转移地址来源于完部的 VICVectAddr 寄存器保存的地址值。不同的中断异常,其 VICVectAddr 的值不同,可通过初 始配置,节省了软件的转移选择开销。 46、在 startup.s 启动代码中,设置异常向量表时,IRQ 入口处放置 LDR PC,PC,# -0x0ff0指令中 PC-0x0FF0 地址单元是指向 VICVectAddr 寄存器的地址。 47、BOOT0 和 BOOT1 与 BCFG029:28的关系和区别是什么? 答:Bank0 用于引导程序运行,BCFG029:28的复位值与 BOOT0 和 BOOT1 设定有关。 BOOT0 和 BOOT1 与 BCFG029:28的关系: Bank 复位时 BOOT1:0的状态 BCFG29:28 存储器宽度 0 LL 00 8 位 0 LH 01 16 位 0 HL 10 32 位 0 HH 10 32 位 1 xx 10 32 位 P2.26 P0.14 RST P2.27 P2.26 P0.14 RST +3.3V +3.3V P2.27 2 xx 01 16 位 3 xx 00 8 位 而对 Bank1、Bank2 和 Bank3 而言, BCFG29:28决定存储器宽度,与 BOOT1:0设 定无关。对 Bank0 而言,BCFG29:28的复位值由 BOOT1:0设定决定,且存储器宽度也 由 BOOT1:0决定。 48、请问引脚连接模块选择寄存器有哪些?请举一个例子说明选择寄存器的功能? 答:引脚连接模块选择寄存器有 PINSEL0、PINSEL1 和 PINSEL2。如设定: PINSEL0 则选择 P0.0 脚,功能为 TxD(UART0)。 49、启动代码中总线引脚设置为: ResetInit LDR R0,=PINSEL2 IF : DEF:EN_CRP LDR R1,=0x0f814910 ELSE LDR R1,=0x0f814914 ENDIF STR R1,R0 分析每条代码的含义,并说明 PINSEL2 配置 0x0f814910 和配置 0x0f814914 的区别? 答:程序清单中,当预定义有 EN_CRP 宏时,将会编译程序清单 LDR R1,=0x0f814910 语 句,并将 PINSEL2 寄存器设置为 0x0f814910,否则编译 LDR R1,=0x0f814914 语句,并 将 PINSEL2 寄存器设置为 0x0f814914。区别:前一种执行禁止使用 JTAG 口调试,起到加 密作用。后一种使用 JTAG 口调试。 50、LPC2000 系列 ARM7 微控制器具有引脚功能复用特性,那么如何设置某个引脚为 指定功能? 答:例如通过设置 PINSEL01:0=00 时,引脚为 GPIO 功能;设置为 01 时,引脚为 UART0 的 TxD 功能。设置为 10 时,引脚为 PWM1 功能脚。 51、设置引脚为 GPIO 功能时,如何控制某个引脚单独输入/输出?当需要知道某个引脚 当前的输出状态时,是读取 IOPIN 寄存器还是读取 IOSET 寄存器? 答:设置引脚为 GPIO 功能时,控制某个引脚单独输入/输出是用 IODIR 方向控制寄存器控 制,寄存器中每位对应控制着 I/O 位,如 IODIR0对应 PX.0 脚,IODIR31对应 PX.31脚,写 入 1 时对应引脚作为输出功能,写入 0 时作为输入功能。当需要知道某个引脚当前的输出状 态时,是读取 IOPIN 寄存器。 52、P0.2 和 P0.3 口是 I2C 接口,当设置它们为 GPIO 时,是否需要外接上拉电阻才能输 出高电平? 答:需要外接上拉电阻 1-10K,这是因此 I2C 接口两根线都开漏输出。 53、使用 SPI 主模式时,SSEL 引脚是否可以作为 GPIO?若不能,SSEL 引脚应如何处 理? 答:使用 SPI 主模式时,SSEL 引脚不可以作为 GPIO,对 SSEL 引脚的处理,使用 SPI 主模 式时,必须选择相应的引脚用作 SSEL 功能并使其保持高电平。 54、LPC2114 的两个 UART 是符合什么标准?哪一个 UART 可用 ISP 通信?哪一个 UART 具有 MODEM 接口? 答:必须符合 16C550 工业标准; UART0 可用 ISP 通信,UART1 具有 MODEM 接口功能。 55、LPC2114 具有几个 32 位定时器?PWM 定时器是否可以作通用定时器使用? 答:LPC2114 具有 2 个 32 位定时器,定时器 0 和定时器 1,PWM 定时器是专用定时器,不 可作通用定时器使用。 56、LPC2000 系列 ARM7 微控制器具有哪两种低耗模式?如何降低系统的功耗? 答:LPC2000 系列 ARM7 微控制器具空闲模式和掉电模式的低耗模式。在空闲模式下,处 理器、存储器系统和相关控制器以及内部总线不再消耗功率,但外设继续保持并可产生中断 使处理器恢复运行。在掉电模式下,振荡器关闭,芯片没有任何内部时钟,处理器状态和寄 存器、外设寄存器以及内部 SRAM 值在掉电模式下被保持。芯片的逻辑电平保持静态。复 位或特定的不需要时钟仍能工作的中断可终止掉模式,并使芯片恢复正常运行。 57、有符号和无符号加法 下面给出 A 和 B 的值,可先手动计算 A+B,并预测 N、Z、V 和 C 标志位的值。其中 (A,B)值分别为(0xFFFF000F,0x0000FFF1)或(0x7FFFFFFF,0x02345678)或 (67654321、23110000) ,将三组用分别用 LDR 伪指令向寄存器(R0,R1)附值。其程序 如下: START LDR R0,=A LDR R1, =B LOOP BL ADD_SUB B LOOP ADD_SUB ADDS R0,R0,R1 MOV PC,LR END 试判断如果 A 和 B 为有符号数时,计算结果和标志位的状态?如果为无符号数时,计算结 果和标志的状态? 答: 0xFFFF000F 0x7FFFFFFF 67654321 A + 0x0000FFF1 0x02345678 23110000 B 结果: 0x100000000 0x82345677 90764321 N=0;Z=1;V=0;C=1 N=1;Z=0;V=1;C=0 N=;Z=0;V=;C=0 58、把下面的 C 代码转换成汇编代码。数组 a 和 b 分别存放在以 0x4000 和 0x5000 为起 始地址的存储区内,类型为 long(即 32 位)。 For(I=0;I8;I+) AI=b7-I; 答: LDR R0,=0x3FFC LDR R1,=0x5028 MOV R2,0x0008 LOOP LDR R3,R1,# -4 STR R3, R0,#4 SUBS R2,R2,#1 BPL LOOP 59、计算一个数 n 的阶乘,即 n!=n*(n-1)*(n-2)(1)。 FACTORIAL MOV R6,#10 MOV R4,R6 LOOP SUBS R6,R6,#1 MULNE R4,R4,R6 BNE LOOP 60、假设有一个基于 LPC2114 的系统,所使用的晶振为 11.0592MHz 石英晶振。请计 算出最大的系统时钟(cclk)频率为多少 MHz?此时 PLL 的 M 值和 P 值各为多少?请列出 计算公式,并编写设置 PLL 的程序段。 解:由公式:Fcclk = M*Fosc ,要使 Fcclk 最大,Fosc 为 11.0592MHz,必 M 为最大时满足 条件,因 LPC2114 的 Fcclk 最大值为 60MHZ,而 60/11.0592 5.4 Mmax 仅能设置为 5 当前条件下的最大的系统时种 Fcclk =5*11.0592=55.296MHZ,此时 M 值为 5,写入 MSEL 的值 为 4;又由公式:Fcco=Fosc * M * 2 * P ;而 Fcco 在 156-320MHZ 内,因此: 156/(11.0592*5*2)1.4 P320/(11.0592*5*2) 2.89 故:P 取 2。PSEL=1 设置 PLL 的程序段: PLLCON=1 PLLCFG = 60/Fosc -1 PLLCFG=(PLLCFG PLLFEED = 0x55; 61、存储器重映射: (1)LPC2210 具有( D )种存储映射模式。 A 3 ; B 5 ; C 1 ; D 4 ; 62、当程序已固化到片内 Flash,向量表保存在 0x00000000 起始处,则 MAP1:0的值 应该为( B )。 A 00 ; B 01 ; C 10; D 11 ; 63、LPC2000 系列 ARM7 微控制器存储器重映射的目标起始地址为(0x00000000 ),共 有( 16 )个字。 A 0x00000000,8 B 0x40000000,8 C 0x00000000,16 D 0x7FFFE000,8 64、外部中断唤醒掉电设计: 以下代码是初始化部中断 0,用它来唤醒掉电的 LPC2114,请填空。 PINSEL0 = 0x00000000; PINSEL1 = (PINSEL1 /设置 I/O 口连接,P0.16 设置为 EINT0 EXTMODE = EXTMODE /清除外部中断标志。 65、使用定时器时脉宽测量:脉冲从 P0.0 口输入,程序等待 P0.0 口变为低电平后启动 定时器测量,当 P0.0 口变为高电平时,停止定时器,然后从 T0TC 寄存器读取定时计数 值。编写程序代码? 答: TOPR = 0; while(IO0PIN TOTCR = 0x01; While (IO0PIN TOTCR = 0x00; Time = TOTC; 66、U0RBR 寄存器和 U0THR 寄存器的地址是完全一样的,是不是说明接收寄存器和发 送寄存器是同一物理寄存器?它们是怎样区分的? 答:虽然 U0RBR 寄存器和 U0THR 寄存器的地址是完全一样,但接收寄存器和发送寄存器不是 同一物理寄器。它们是通过读写信号线来区分的,当为 WE 操作时,选择 U0THR 寄存器; 当为 RD 操作时,选择 U0RBR 寄存器。 67、改错: ARM 状态与 Thumb 状态的切换是要影响处理器的模式或寄存器的内容的。 ( X ) 68、特权模式是哪些模式?为什么叫特权模式? 答:特权模式除了用户模式外,其它模式均为特权模式,即:系统模式、快中断模式、中断 模式、管理模式、中止模式、未定义模式。之所以称为特权模式是因为 ARM 内部寄存器和 一些片内外设在硬件设计上只允许这些模式访问。此外,特权模式可以自由的切换处理器模 式,而用户模式不能直接切换到别的模式。 69、异常模式是哪些模式? 答:异常模式由快中断模式、中断模式、管理模式、中止模式、未定义模式。 70、判错: 进入异常模式可以通过程序切换进入,也可以由特定的异常进入。 (V) 71、在 ARM7TDMI 处理器内部有 37 个用户可见的寄存器,这些寄存器分成两 大类:一类为通用 32 位寄存器,有 31 个,另一类为状态寄存器,有 6 个。 72、未分组的寄存器有 R0-R7 共 8 个。在任何模式下,这些寄存器都对应于相同的 32 位物理寄存器。 73、寄存器 R8R12 有两个分组的物理寄存器。一个用于除 FIQ 模式之外的所有寄存 器模式,另一个用于 FIQ 模式。这样在发生 FIQ 中断后,可以加速 FIQ 的处理速度。 74、当使用 STR 或 STM 指令保存 R15 时,保存值与 R15 值是不一致的,为什么? 答:这是由于 R15 是当前指令的地址,而 ARM 为多级流指令操作,当在执行段执行保存 PC 时,此时的 PC 值已不是当前指令的 PC 值,而是当前地址的加一个偏移常量,如 8 或 12。 75、判错: ARM 执行 STR 或 STM 指令保存 R15 时,其保存的值与当前指令地址 PC 一致的。 (X) 76、请判断下面程序段的作用是 获取常量值,即跳转时地址=PC+常量+偏移地址中的 常量,通常为 8。 SUB R1,PC,#4 STR PC,R0 LDR R0,R0 SUB R0,R0,R1 77、如果异常处理程序已经把返回的地址拷贝到堆栈,那么可以使用一条多寄存器传送 指令来恢复用户寄存器并实现返回。 SUB LR,LR,#4 STMFD SP!,R0-R3,LR LDMFD SP!,R0-R3,PC 请解释“!”和“”的含义? 答:“!”表示最后的地址值要写回 SP。 “”表示这是一条特殊形式的指令。这条指令在从存储器中装载的同时(PC 是最 后恢复的) ,SPSR 也恢复到 CPSR。 78、ARM7TDMI 处理器采用是“哈佛结构”而非冯.诺依曼(Von Neumann)结构。 () 79、ARM7TDMI 处理器指令和数据共用一条 32 位数据总线。只有装载、保存和交换指 令可访问存储器中的数据。 () 80、ARM 指令集哪几大类指令? 答:ARM 指令集大类指令,它们是:分支指令;数据处理指令;加载和存储指令;协处 理器指令;杂项指令。 81、从寻址方式的地址计算方法分,加载存储指令有种格式。零偏移、前索引偏移、 程序相对偏移、后索引偏移,请标出下面指令属于哪一种: LDR R0,R1,#0x04 ; LDR R0,R1,#0x04 ; LDR R0,label ; LDR R0,R1 ; 82、在多寄存器加载指令 LDMIA R0!,R1-R4,LR中,请解释“!”和“”的 作用? 答:“!”表示在操作结束后,将最后的地址写回 R0 中; “”表示两方面,一方面进行数据传送且寄存器列表不包含 PC 时,加载存储的寄存 器是用户模式下的,而不是当前模式的寄存器。另一方面,若在 LDM 指令且寄存器列表中 包含有 PC 时使用,那么除了正常的多寄存器传送外,还将 SPSR 也拷贝到 CPSR 中,这可 用于异常处理返回。该后缀不允许在用户模式或系统模式下使用。 83、ARM 状态下的压栈和出栈操作可以用数据块传送指令完成,为什么还要用堆栈指 令进行堆栈操作? 答:如 STMDA R0!,R5-R6 LDMIB R0!,R5-R6的数据块传送指令进行堆栈操作, 也可用 STMED R0!,R5-R6 LDMED R0!,R5-R6的堆栈指令进行堆栈操作。两段 代码的执行结果是一样的,但是使用堆栈指令的压栈和出栈操作编程很简单,前后模式一致 即可,而使用数据块指令进行压栈和出栈操作则需要考虑空与满、加与减对应的问题。 84、LPC2000 系列微控制器包含四大部分:ARM7TDMI-S CPU、ARM7 局部总线及相 关部件、AHB 高性能总线及相关部件、VLSI 外设总线及相关部件。 85、AHB 外设分配了 M 字节的地十范围,它位于 4G 字节 ARM 寻址空间的 最顶端。AHB 可接外设 个,每个分配 的地址空间。 86、VPB 外设分配了 2 M 字节的地址范围,从 3.5GB 地址点开始,VPB 可 分配 128 个外设,每个 VPB 外设都分配了 16KB 的地址空间。 87、向量中断控制器(VIC)最多可以管理 32 个中断请求,LPC2000 实际管理了 19 个中断请求。 88、外部存储器控制器(EMC)支持 4 个 BANK 的外部 SRAM 或 Flash,每个 BANK 最 多 16 容量。 89、对 SRAM 的写入一次操作后,如果发生芯片复位,实际的 SRAM 内容将不会反映 最近一次的写操作。 () 90、在 LPC2000 系列芯片中,对 SRAM 执行一次写入操作,此时芯片复位,为什么实 际的 SRAM 内容将不会反映最近一次的写操作? 答:由于 SRAM 控制器包含一个回写缓冲区,它总是保存着软件发送到 SRAM 的最后一个 字数据。该数据只有在软件请求下一次写操作时才写入 SRAM。如果发生芯片复位,实际的 SRAM 内容将不反映最近一次的写操作。 91、为什么整个 BootBlock 块被映射到片内存储器空间的顶端? 答:这是为了兼容将来的器件,以便将来的芯片内置不同的 RAM 和 FALSH 都不会影响 BootBlock 的位置。 92、实现掉电唤醒不需要在向量中断控制器 VIC 中使能相应的中断。 () 93、异常向量表可能来源于内部 Flash、内部 SRAM、内部 BootBlock、外部存储器。 (V) 94、对 LPC2210 来说,当 MEMMAP 寄存器的 MAP1:0=11 时,当引脚 BOOT1 和 BOOT0 全为高电平,复位后从外部 Flash 执行程序。 () 95、对 LPC2210 来说,当 MEMMAP 寄存器的 MAP1:0=11 时,当引脚 BOOT1 和 BOOT0 不全为高电平但芯片加密,复位后从外部 Flash 执行程序。 () 96、与外部存储器的连接时,如果存储器组配置成 32 位宽度,地址线 A0 和 A1 为什 么无用,且可作为 GPIO 使用? 答:与外部存储器的连接时,如果存储器组配置成 32 位宽度,则寻址是按字(4 字节) 操作,但存储器地址是按字节编址,因此只有当 A0 和 A1 不参与寻址时才是按字操作,因此 A0 和 A1 这两根线可用作 GPIO 而不影响寻址。 97、与外部存储器的连接时,如果存储器组配置成 16 位宽度,地址线 A0 为什么无用? 98、同一寄存器组的器件宽度可以不一致。 () 99、与外部存储器连接的是 32 位宽度,请画出片位存储器芯构成 32 位存储器的连 接示意图? 100、中断控制器将 32 个中断输入进行分配,可转向的中断类型是 FRQ 、 向量 IRQ 和 非向量 IRQ 。 101、请描述 ARM 内核是如何通过向量中断控制器 VIC 获取中断服务程序地址的? 答:在发生向量 IRQ 中断后,VIC 能将对应中断的服务程序地址保存的寄存器 VICVectAddr0-15 中按对应 VICVectCntl0-15 的优先级顺序选取级别最高的地址,并送入 VICVectAddr 寄存器中,而非向量中断是将 VICDefVectAddr 送入 VICVectAddr 寄存器中, 在异常向量表的 IRQ 异常入口处放置一条指令,将 VICVectAddr 寄存器的内容装入程序计 数器 PC,就可以跳转到当前中断的服务函数。 102、请编写一段代码。要求设置外部中断 0 产生向量 IRQ 中断后执行中断服务程序 IRQ_Eint0( )。 答: PINSEL1 = (PINSEL1 设置 P0.16 为外部中断 VICIntSelect = 0x00000000; 设置所有中断为 IRQ 中断 VICVectCntl0 = (0x20 | 14); 将 EINT0 设置为优先级 0,使能 IRQ 中断 VICVectAddr0 = (int)IRQ_Eint0; EXTINT = 0x01;清除外部中断 0 的标志后使能外部中断 VICIntEnable = (114); 103、简述向量 IRQ 的中断入口地址的形成过程? 答:初始化时,向量 IRQ 的入口地址保存在 VICVectAddrx 寄存器中,通过 VICVectCntlx 保存中断源类型,当有所设置的 IRQ 中断源发生中断时,中断控制器(VIC)将中断源所对 应的向量 IRQ 入口地址寄存器 VICVectAddrx 内容保存到 VICVectAddr,并由 ARM 通过异常 向量表所对应的入口地址 0x00000018 执行 LDR PC,PC,# -0xFF0指令就完成将 VICVectAddr 地址内容装载到 PC 中形成中断入口地址跳转,进入中断服务程序。 104、简述非向量 IRQ 的中断入口地址的形成过程? 答:初始化时,非向量 IRQ 的入口地址保存在 VICDefVectAddr,当有所设置的非向量 IRQ 中断源发生中断时,中断控制器(VIC)将中断源所对应的非向量 IRQ 入口地址寄存器 VICDefVectAddr 内容保存到 VICVectAddr,并由 ARM 通过异常向量表所对应的入口地址 0x00000018 执行 LDR PC,PC,# -0xFF0指令就完成将 VICVectAddr 地址内容装载到 PC 中形成中断入口地址跳转,进入中断服务程序。 105、简述向量 IRQ 和非向量 IRQ 的中断入口地址形成异同? 答:相同点:同为 IRQ 中断,ARM 通过异常向量表所对应的入口地址 0x00000018 执行 LDR PC,PC,# -0xFF0指令就完成将 VICVectAddr 地址内容装载到 PC 中形成中断入口地 址跳转,进入中断服务程序。 不同点:VIC 形成 VICVectAddr 地址,一个是从向量地址寄存器 VICVectAddrx 读取, 一个是从寄存器 VICDefVectAddr 读取。 106、设置引脚为 GPIO 为输出模式时,向 IOxSET 寄存器对应位写时输出高电平,写 时输出低电平。 () 107、VIC 寄存器 VICIntSelect 的作用 。 108、VIC 寄存器 VICVectCntlx 的作用 。 109、VIC 寄存器 VICVectAddrx 的作用 。 110、VIC 寄存器 VICVectAddr 的作用 。 111、VIC 寄存器 VICDefVectAddr 的作用 。 112、LPC2000 型中的定时器功能除了可作计数操作外,还可作:信号捕获和信号匹配发 生。 113、I2C 的根线分别是串行数据 SDA 和串行时钟 SCL。 114、简述 PWM 基本操作方法? 答:(1)连接 PWM 功能引脚输出,即

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论