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

下载本文档

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

文档简介

1、嵌入式系统复习题集 、基础知识1、什么是代码的临界区?答:代码的监界区是指处理时不可分割的代码,运行这些代码不允许被打断。一旦这部分代 码开始执行,则不允许任何中断打入。中断不调用任何临界区的代码或不访问任何临界区使 用的共享资源时,这个中断是可能可以执行。为确保临界区代码的执行,在进入临界区之前 要关中断,而临界区代码执行完成以后要立即开中断。2、什么是嵌入式系统?答:嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对 功能、可靠性、成本、体积及功耗严格要求的专用计算机系统,具有完成复杂功能的硬件和 软件且紧密耦合在一起的计算机系统。3、什么是嵌入式操作系统?为何要

2、使用嵌入式操作系统?答:运用在嵌入式系统上的实时操作系统,具有事件驱动和任务(进程)调度功能,且在有 限时隙内能完成事件的响应和任务(进程)的切换,能可靠、实时、灵活地管理嵌入式系统 上的各种资源和任务。使用嵌入式操作系统,能方便实时应用软件的开发和有机地整合,能 有效地管理和协调各项工作,因此是开发和运行非常重要的环境。4、ARM状态与Thumb状态的互换以什么条件来判断?似举出状态从ARM到Thumb或从Thumb至ij ARM切换的例子。答:其互换条件是执行 BXregisters指令时,判断registers的最低一位bo是否为0或为1 来确定的,当bo为0时,则执行的程序是 ARM状

3、态的32位指令程序,当bo为1时,则执行 的程序是Thumb状态的16位指令程序。如下例:;从ARM状态转变为 Thumb状态LDR R0, Lable+1BX R0;从Thumb状态转变为ARM状态LDR R0, LableBX R0ARM体系结构支持多少种处理器模式,分别是什么?答:ARM体系结本支持7种处理器模式,分别是用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。6、子程序利用R14 (LR),获得返回到主程序的下条指令,通常有直接输入法和堆栈方法, 试填写下面两种方法的代码: TOC o 1-5 h z MOV PC,LRSTMFD SR , regist

4、ers, LRLDMFD SP!, registers,PC如果是异常处理后的返回,如IRQ中断返回又如何改写代码?7、在修复产生数据中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行返 回指令:SUBS PC R14_abt,#8 ;而预取中止时为:SUBS PC R14_abt,#4试解释减8原因?而在预取中止中为什么减4 ?答:由于ARM为三级流水,执行段相对取指令段差为 8,产生数据中止是在执行段结束点进入, 此日PC值为数据中止指令地址 +8,即保存当前 PC到R14_abt为数据中止指令地址+8,因此 在修复产生数据中止的原因后,返回地址应为数据中止指令地址本身,处理程序

5、都必须执行返回指令:SUBS PC R14_abt,#8才能实现其目的。而在预取中止中时,出现中止异常是在译码段进入执行段的开始点,此时保存到 R14_abt 值为预取中止指令地址 +4 ,因此要恢复到中止指令地址必为当前保存的R14_abt值减4,即执行SUBS PC R14_abt,#樨作就可。什么是小端存储?什么是大端存储?答: 小端存储就是其存储格式为保存的字最低地址的字节看作是最低位字节, 最高地址字节被看作是最高位字节。因此,存储器系统字节0 连接到数据线7-0。大端存储就是其存储格式为将最高位字节保存在最低地址字节,最低位字节保存在最高地址字节。因此存储器系统字节0 连接到数据线

6、31-24 。ARM7TDMI 中 T、 D、 M 、 I 的含义是什么?答:T表示具有高密度16位白Thumb指令机扩展功能;D表示具有支持片上调试功能;M表示具有64位乘法指令;I表示增加了 EmbededICE观察点硬件。ARM7TDMI 采用几级流水线?使用何种存储器编址方式?答: ARM7TDMI 采用三级流水段,分别为取指段、译码段和执行段。使用字节编址方式。ARM处理器模式和 ARM处理器状态有何区别?答: ARM 处理器模式是指用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。每种模式都表明一种程序使用内部寄存器和一些片内外的硬件设备权利。而 ARM 处

7、理器状态是指Thumb 状态和 ARM 状态, 即程序指令的执行译码按 16 位 Thumb 指令集还是按32 位 ARM 指令集译码执行。分别列举 ARM 的处理器模式和状态。答: ARM 处理器模式分别是用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。 ARM 处理器状态是指16 位 Thumb 指令集运行的 Thumb 状态和 32 位 ARM指令集运行的 ARM 状态。PC 和 LR 分别使用哪个寄存器?答:PC使用R15; LR使用R14。14、R13寄存器的通用功能是什么?答: R13 寄存器在 ARM 状态时, 可用作通用寄存器功能, 但通常为堆栈指针S

8、P, 但在 Thumb状态时,其压栈 PUSH和弹栈POP指令都要用到 R13 (SP)O15、CPSRt存器中哪些位用来定义处理器状态?答:在CPSRt存器中b5位T定义处理器状态,T=0为ARM状态,T=1为Thumb状态。ARM 和 Thumb 指令的边界对齐有何不同?答: ARM 指令长度为 32 位,其边界对齐存取地址位都是按b1:0=00 方式进行,而Thumb指令长度为 16 位,其边界对齐存取地址位都是按b0=0 方式进行。描述一下如何禁止IRQ和FIQ的中断?答:对CPSR中白b7 (I位)和b6 (F位)标志位置位时,可分别来禁止 IRQ和FIQ中断。定义R0=0 x123

9、45678,假设使用存储指令将R0的值存放在0 x4000单元中。如果存储器格式为大端格式,请写出在执行加载指令将存储器0 x4000 单元的内容取出存放到 R2寄存器操作后得R2 的值;如果存储器格式改为小端格式,所得的 R2 值又为多少?低地址 0 x4000 单元的字节内容分别是多少?答:按大端格式和小端格式存储,从存储器中读出的值是不变的,R2=0 x12345678o按大端格式从 0 x4000 单元读出的值为 0 x12, 按小端格式从0 x4000 单元读出的值为0 x78 。请描述进入内核时异常操作步骤?答:在LR 中保存下一条指令的地址;2)将CPS或制到适当的 SPSR3)

10、根据异常将CPSR莫式强制设为某一值;4)强制PC从相关的异常处取指。异常结束时,异常处理程序必须将LR 中的值减去偏移量后移入PC。6)将SPSR勺值复制回CPSR清零在入口置位的中断禁止标志。请描述一下ARM7TDMI 产生异常的条件分别是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?模式 快中断模式 中断模式 中止模式中止模式 未定义指令模式管理模式返回指令SUBS PC,R14_fiq,#4SUBS PC, R14_irq,#4SUBS PC, R14_abt,#4SUBS PC, R14_abt,#8MOVS PC, R14_undMOVS

11、 PC, R14_svc答: ARM7TDMI 产生异常:异常条件快速中断请求中断请求预取中止请求数据中止请求未定义指令中断请求软件中断请求进入内核时异常操作是:1 ) 将 LR 中保存下一条指令的地址;2)将CPS限制到适当的 SPSR3)根据异常将CPSR莫式强制设为某一值;4)强制PC从相关的异常处取指。5 ) 异常结束时,异常处理程序必须将LR 中的值减去偏移量后移入PC。6)将SPSR勺值复制回CPSR 7 ) 清零在入口置位的中断禁止标志。简单描述一下ARM7 的三级流水线,并说明其对程序设计的影响。答: ARM7 的三级流水分为取指段、分析段和执行段。对程序设计的影响:提高指令执

12、行的速度,并使处理和存储系统连续操作。ARMThumbPCPC取指PC-4PC-2译码PC-8PC-4执行由此看出,它对子程序调用返回、异常恢复返回, LR 值需减一个常数值作为返回地址。ARM7TDMI(-S)有几种寻址方式?LDR R1, R0, #0 x08属于哪种寻址方式?答:有 9 种,分别是:寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址。其中:LDR R1, R0, #0 x08属于基址寻址。ARM 指令的条件码有多少个?默认条件码是什么?答: ARM 指令的条件码有16 个,默认条件码是: AL 编码为 1110 即

13、无条件执行。ARM 指令中第二个操作数有哪几种形式?列举5 个 8 位图立即数。答: ARM 指令中第2 个操作数有3 种形式:#immed_8r 常数表达式;Rm寄存器方式;Rm,shift 寄存器移位方式。例如:0 x3FC、 0、 0 xF0000000、 200、 0 xF0000001。将ARM指令中,使用第2个操作数时,第2操作数的形式可为常数表达式#immed_8r,这种常数的合理表达方式是什么?答:这种常数须对应 8 位位图数据的循环移位偶数位得到的任何 32 位数据。将ARM指令中,使用第2个操作数时,第2操作数的形式可为常数表达式#immed_8r,请说明下面常数哪些合理,

14、哪些非法?0 x3FC,0 x1F,0 x1FE,0,0 xF0000000,511,0 xFFFF,0 x1010,0 xF0000010,200,0 xF000000,1 0 x12800000 ,0 x4000003B, 0 x0016C000答: 合法常量:0 x3FC/0/0 xF0000000/200/0 xF0000001/0 x1F, 0 x12800000 , 0 x4000003B , 0 x0016C000;非法常量:0 x1FE/511/0 xFFFF0/x1010/0 xF0000010。将比较两个值大小,并进行相应加1 处理, C 代码为:if(ab) a+;els

15、e b+;写出对应的ARM指令程序(其中设 R0为a, R1为b) ?答: CMPR0, R1ADDHIR0, R0, #1;若 R0R1 则 R0=R0+1ADDLS R1, R1, #1;若 R0?R1,贝U R1=R1 + 1将 C 代码:if(a!=10)&(b!=20) a=a+b 转化为 ARM 指令程序?答: CMP R0, #10;比较 R0是否为10CMPNE R1, #20;若R0不为10,则比较 R1是否为20CMPNE R0, R0, R1 ;若 R0 不为 10 且 R1 不为 20,指令执行, R0=R0+R1LDR/STR旨令的偏移形式有哪 4种? LDRB和LD

16、RSBf何区另答: LDR/STR 指令的偏移形式有:1)零偏移;2)前索引偏移;3)程序相对偏移;4)后索引偏移。LDRB仅为无符号字节数据装载,其装载后的高24位为0,而LDRSB为有符号字节数据装载,高24 位为符号位的扩展。请指出MOV指令与LDR加载指令的区别及用途。答: MOV 指令是数据处理过程中的操作,可以传递立即数和寄存器到另一个寄存器的操作,而LDR加载指令用于将存储器单元数据装载到寄存器的操作。CMP 指令的操作是什么?写一个程序, 判断 R1 的值是否大于0 x30, 是则将 R1 减去0 x30。答:CMP指令操作是比较操作;判断R1的值是否大于0 x30,是则将R1

17、减去0 x30程序如下:CMP R1, #0 x30SUBGT R1,R1,#0 x30 OrCMP R1, #0 x30SUBHI R1,R1,#0 x30调用子程序是用 B还是用BL指令?请写出返回子程序的指令?答:调用子程序是用BL 指令。返回子程序的指令:BL lableMOV PC,LRLDR伪指令用途?其指令格式与LDR装载指令的差别?答:LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器,映射真正指令类型由编译程序决定;LDR伪指令指令格式为 LDR Rn,=expr LDR加载指令为LDR Rn,地址值。ARM 状态与 Thumb 状态的切换指令是什么?请举例说明。答:

18、ARM状态与Thumb状态的切换指令是 BX Rm=例如:ARM_CODE ADR R0,THUMB_CODE+1BX R0CODE 16THUMB_CODE MOV R0,#10 MOV R1,#20 ADD R0,R1 B THUM_CODE ENDThumb状态与ARM状态的寄存器有区别吗?Thumb指令对哪些寄存器访问受到一定限制?答:Thumb状态与ARM状态的寄存器本身并无区别,都是32位寄存器。但Thumb指令仅对R8-R15受到一定限。Thumb指令集的堆栈入栈、出栈指令是哪两条?答:压栈指令:PUSH reglist,LR;弹栈指令:POP reglist,PCThumb指令

19、集的BL指令转移范围为何能达到 ?4MB?其指令编码是怎样的?答:Thumb指令集的BL采用2条这样的指令组合成 22位半字偏移(符号扩展为32位),使指 令转移范围为?4MB。其指令编码为:1111+H+offset11共16位。其中H为1位,offset11为 了 11 位。在中断向量中转移指令为什么没有用B指令?而是用什么指令实现跳转的?答:在中断向量中车t移指令没有用B指令是由于B指令转移范围仅在?32MB内,因此满足不了中断向量的全地址范围内的转移。实际中断向量中转移指令是用LDR PC ,addr,和文字池(DCD伪指令)来实现的,它可以实现4GB范围内跳转。LPC2114可使用的

20、外部晶振频率范围是多少(使用/不使用PLL功能时)?描述一下LPC2210的P0.14、P1.20、P1.26、BOOT1和BOOT0弓I脚在芯片复位时分另有什么作用?并简单说明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引脚在芯片复

21、位时决定复位后存储器的来源以及存储器的宽度。LPC2000系歹U ARM7微控制器的复位处理流程: 流程略。LPC2000系列ARM7微控制器对向量表有何要求(向量表中的保留字)?答:LPC2000系歹U ARM7微控制器要求:在向量表中所有32位向量按有符合数据累加之和为0,这时向量表才有效,且芯片复位后,能脱机独立运行。因此向量表中的保留字是配置数据 累加和为0而留着的。如何启动LPC2000系列ARM7微控制器的ISP功能?相关电路应该如何设计?答:微控制器在复位后可能有多种初始状态,决定于引脚状态和只读存储器的数据。当有外 部复位信号?Reset , P0.14低电平时,进入ISP状态

22、,当P0.14为高电平时,同时 BOOT0和 BOOT1为高电平时,进入 ISP状态。LPC2000系歹U ARM7微控制器片内Flash是多少位宽度的接口?它是通过哪个功能模块来提高 Flash 的访问速度?答:LPC2000系列ARM7微控制器片内Flash是128位宽度的接口,是通过数据缓冲模块、预 取缓冲模块、分支跟踪缓存模块、两Flash存储模块来提高 Flash的访问速度。LPC2210的BANK0存储块使用 32位总线,访问BANK0时,地址线 A1、A0是否有效?EMC模块中的BLSO-BLS3具有什么功能?答:如果存储器组配置成32 位宽度,地址线 A0 和 A1 无用,这是

23、由于地址位的增减与存储器数据增减同步,此日A0和A1可作为GPIO使用(由PINSEL皴置)。EMC模块中的BLSO-BLS3具有字节定位的选择信号功能,当BLSO 为低时,存取定位到低8 位字节上,当 BLS1 为低时,存取定位次到低8位字节上,当BLS2为低时,存取定位到次高字节,当BLS3为低时,存取定位到高位字节上。如果存储器组配置寄存器中 RBLE 位置 1 ,表示按字节区分存储器组,现有程序:LDR R0, =0X80000001MOV R1,0X55STR R1,R0请问执行STR指令后,存储器地址线上的地址应为0X80000000,数据线的前16位数据中,低8位为 无效 ,高8

24、位为 0X55 。EMC模块中的引脚线 BLS0和BLS1电平分另 为 高电平 和 低电平 。 (填高低电平)在startup.s启动代码中,设置异常向量表时,IRQ入口处为什么放置LDR PC, PC, # -0 x0f0指令而非 LDR PC IRQ_Addr。答:这是由于LDR PC, IRQ_Addr 指令不能提供灵活的转移地址,在处理时就要耗费大量的时间解决IRQ转移分类问题。 而LDR PC, PC, # -0f0指令转移地址来源于完部的VICVectAddr寄存器保存的地址值。 不同的中断异常,其VICVectAddr 的值不同, 可通过初始配置, 节省了软件的转移选择开销。在s

25、tartup.s启动代码中,设置异常向量表时,IRQ入口处放置LDR PC PC, # -0 x0f0指令中PC-0 x0FF0地址单元是指向VICVectAddr寄存器的地址。BOOT0和BOOT1与BCFG029: 28的关系和区别是什么?答:Bank0用于引导程序运行, BCFG029: 28的复位值与BOOT0和BOOT1设定有关。BOOT0和 BOOT1 与 BCFG029: 28的关系:Bank复位时BOOT1:0的状态BCFG29: 28存储器宽度0LL008位0LH0116位0HL1032 位0HH1032 位1xx1032 位2xx0116位3xx008位而对 Bank1、B

26、ank2 和 Bank3 而言,BCFG29:28决定存储器宽度,与 BOOT1:0设定无关。对Bank0而言,BCFG29: 28的复位值由BOOT1:0设定决定,且存储器宽度也由 BOOT1:0 决定。请问引脚连接模块选择寄存器有哪些?请举一个例子说明选择寄存器的功能?答:引脚连接模块选择寄存器有PINSEL0 PINSEL1和PINSEL2如设定:PINSEL0 &= 0 x00000001则选择 P0.0 脚,功能为 TxD(UART0)启动代码中总线引脚设置为:ResetInit LDR R0,=PINSEL2IF : DEF:EN_CRPLDR R1,=0 x0f814910ELS

27、ELDR R1,=0 x0f814914ENDIFSTR R1,R0分析每条代码的含义,并说明PINSEL2配置0 x0f814910和配置0 x0f814914的区别?答:程序清单中,当预定义有EN_CR际时,将会编译程序清单LDR R1,=0 x0f814910语句,并将PINSEL2寄存器设置为 0 x0f814910 ,否则编译 LDR R1,=0 x0f814914语句,并将PINSEL2 寄存器设置为0 x0f814914。区别:前一种执行禁止使用JTAG口调试,起到加密作用。后一种使用JTAG 口调试。LPC2000 系列 ARM7 微控制器具有引脚功能复用特性,那么如何设置某个

28、引脚为指定功能?答:例如通过设置 PINSEL01:0=00时,引脚为 GPIO功能;设置为01时,引脚为 UART0的 TxD功能。设置为10时,引脚为PWM1功能脚。设置引脚为 GPIO 功能时,如何控制某个引脚单独输入 /输出?当需要知道某个引脚当前的输出状态时,是读取IOPIN寄存器还是读取IOSET寄存器?答:设置引脚为GPIO功能时,控制某个引脚单独输入/输出是用IODIR方向控制寄存器控制,寄存器中每位对应控制着I/O位,如IODIR0对应PX.0脚,IODIR31对应PX.31脚,写入1时对应引脚作为输出功能,写入 0 时作为输入功能。当需要知道某个引脚当前的输出状态时, 是读

29、取IOPIN寄存器。P0.2和P0.3 口是I2C接口,当设置它们为 GPIO时,是否需要外接上拉电阻才能输出高电平?答:需要外接上拉电阻1-10K?,这是因此I2C接口两根线都开漏输出。使用SPI主模式时,SSEL3I脚是否可以作为 GPIO?若不能,SSEL引脚应如何处理?答:使用SPI主模式时,SSEL3I脚不可以作为 GPIO,对SSEL弓唧的处理,使用SPI主模式时, 必须选择相应的引脚用作SSE能并使其保持高电平。LPC2114的两个UART是符合什么标准?哪一个 UART可用ISP通信?哪一个 UART具有 MODEM 接口?答:必须符合 16C550 工业标准;UART0可用I

30、SP通信,UART1具有MODEM接口功能。LPC2114具有几个32位定时器? PWM定时器是否可以作通用定时器使用?答:LPC2114具有2个32位定时器,定时器 0和定时器1, PWM定时器是专用定时器,不可 作通用定时器使用。LPC2000 系列ARM7 微控制器具有哪两种低耗模式?如何降低系统的功耗?答: LPC2000 系列 ARM7 微控制器具空闲模式和掉电模式的低耗模式。在空闲模式下,处理器、存储器系统和相关控制器以及内部总线不再消耗功率,但外设继续保持并可产生中断使处理器恢复运行。在掉电模式下,振荡器关闭,芯片没有任何内部时钟,处理器状态和寄存器、外设寄存器以及内部SRAM

31、值在掉电模式下被保持。芯片的逻辑电平保持静态。复位或特定的不需要时钟仍能工作的中断可终止掉模式,并使芯片恢复正常运行。有符号和无符号加法下面给出A和B的值,可先手动计算 A+B,并预测N、Z、V和C标志位的值。其中(A, B)值分别为(0 xFFFF000F 0X0000FFF1)或(0 x7FFFFFFF,0 x02345678或(67654321、23110000 ), 将三组用分别用LDR伪指令向寄存器(R0, R1)附值。其程序如下:START LDR R0, =ALDR R1, =BLOOP BL ADD_SUBB LOOPADD_SUB ADDS R0,R0,R1MOV PC,LR

32、END试判断如果A 和 B 为有符号数时,计算结果和标志位的状态?如果为无符号数时,计算结果和标志的状态?答:0 xFFFF000F0 x7FFFFFFF+0 x0000FFF10 x02345678结果: 0 x1000000000 x82345677N=0;Z=1;V=0;C=1N=1;Z=0;V=1;C=058、把下面的C代码转换成汇编代码。数组始地址的存储区内,类型为10ng(即32位)。67654321 A23110000 B90764321N=0 ;Z=0;V=O ;C=0a 和 b 分别存放在以 0 x4000 和 0 x5000 为起F0r(I=0;I8;I+)答:LDRLDR

33、MOVLOOPLDRSTRSUBSBPLAI=b7-I;R0, =0 x3FFCR1, =0 x5028R2, 0 x0008R3,R1,# -4 R3, R0,#4 R2,R2,#1 LOOP59、60、假设有一个基于FACTORIALLOOPMOVR6, #10MOVR4, R6SUBS R6,R6,#1MULNE R4,R4,R6BNE LOOPLPC2114 的系统,所使用的晶振为11.0592MHz 石英晶振。请计算计算一个数 n 的阶乘,即 n!=n*(n-1)*(n-2) (1)。解:由公式:件,因出最大的系统时钟(cclk)频率为多少MHz?此时PLL的M值和P值各为多少?请列

34、出计算 公式,并编写设置 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 内,因此:158 (11.0592*5*2 ) ?1.4 P320/ (11.0592*5*2 ) ? 2.8

35、9 故:P取 2。PSEL=1设置PLL的程序段:PLLCON=1PLLCFG = 60/Fosc -1PLLCFG=(PLLCFG&0 x1F) | (320(/ 11.0592*5*2 ) -1)5)PLLFEED = 0 xaa;PLLFEED = 0 x55;存储器重映射:LPC2210具有(D )种存储映射模式。A 3; B 5 ; C 1; D 4 ;当程序已固化到片内Flash,向量表保存在 0 x00000000起始处,则 MAP1:0的值应该为 ( B ) 。A 00; B 01; C 10 ; D 11;LPC2000系列ARM7微控制器存储器重映射的目标起始地址为(0 x

36、00000000 ),共有( 16 ) 个字。A0 x00000000,8B0 x40000000,8C0 x00000000,16D0 x7FFFE000,8外部中断唤醒掉电设计:以下代码是初始化部中断0,用它来唤醒掉电的LPC2114,请填空。PINSEL0 = 0 x00000000;PINSEL1 = (PINSEL1& 0 xFFFFFFFC)|0 x00000001;设置 I/O 口连接,P0.16 设置为 EINT0EXTMODE = EXTMODE & 0 xFE ;设置EINT0为电平触发模式EXTPOLAR = EXTPOLAR & 0 xFE ;设置 EINT0为低电平触

37、发EXTWAKE = EXTWAKE | 0 x01 ;/ 允许外部中断0 唤醒掉电的 CPUEXTINT = 0 x0F ;/ 清除外部中断标志。使用定时器时脉宽测量: 脉冲从 P0.0 口输入, 程序等待 P0.0 口变为低电平后启动定时器测量,当P0.0 口变为高电平时,停止定时器,然后从T0TC寄存器读取定时计数值。编写程序代码?答:TOPR = 0;while(IO0PIN & 0 x01) != 0);TOTCR = 0 x01;While (IO0PIN & 0 x01) = = 0);TOTCR = 0 x00;Time = TOTC;U0RBR寄存器和U0THR寄存器的地址是

38、完全一样的,是不是说明接收寄存器和发送寄存器是同一物理寄存器?它们是怎样区分的?答:虽然U0RBR寄存器和U0THR寄存器的地址是完全一样,但接收寄存器和发送寄存器不是同 一物理寄器。它们是通过读写信号线来区分的,当为 WE操作时,选择U0THR寄存器;当为 RD操作时,选择U0RBR寄存器。改错:ARM 状态与 Thumb 状态的切换是要影响处理器的模式或寄存器的内容的。 ( X )特权模式是哪些模式?为什么叫特权模式?答:特权模式除了用户模式外,其它模式均为特权模式,即:系统模式、快中断模式、中断模式、管理模式、中止模式、未定义模式。之所以称为特权模式是因为ARM内部寄存器和一些片内外设在

39、硬件设计上只允许这些模式访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。异常模式是哪些模式?答:异常模式由快中断模式、中断模式、管理模式、中止模式、未定义模式。判错:进入异常模式可以通过程序切换进入,也可以由特定的异常进入。(V)在ARM7TDMI处理器内部有37 个用户可见的寄存器,这些寄存器分成两大类:一类为通用32位寄存器,有 31 个,另一类为状态寄存器,有 6 个。未分组的寄存器有 R0-R7共8个。在任何模式下,这些寄存器都对应于相同的32位物理寄存器。寄存器R8 R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于 F

40、IQ模式。这样在发生 FIQ中断后,可以加速 FIQ的处理速度。当使用STR或STM指令保存R15时,保存值与 R15值是不一致的,为什么?答:这是由于 R15是当前指令的地址,而 ARM为多级流指令操作,当在执行段执行保存PC时,此时的PC值已不是当前指令的 PC值,而是当前地址的加一个偏移常量,如 8或12。判错:ARM执行STR或STM指令保存R15时,其保存的值与当前指令地址PC 一致的。(X)请判断下面程序段的作用是获取常量值,即跳转时地址 =PC+常量+偏移地址中的常量,通常为 8。 TOC o 1-5 h z SUBR1,PC,#4STRPC,R0LDRR0,R0SUBR0,R0

41、,R1如果异常处理程序已经把返回的地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。SUB LR,LR,#4STMFD SP!,R0-R3,LRLDMFD SP!,R0-R3,PCA请解释“! ”和“人”的含义?答:“一表示最后的地址值要写回SR表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时( PC是最 后恢复的),SPS他恢复到CPSRARM7TDMI处理器采用是“哈佛结构”而非冯诺依曼(Von Neumann)结构。(X)ARM7TDMI处理器指令和数据共用一条 32位数据总线。只有装载、保存和交换指令可访问存储器中的数据。(V)ARM指令集哪几大

42、类指令?答:ARM指令集5大类指令,它们是:分支指令;数据处理指令;加载和存储指令;协处理 器指令;杂项指令。从寻址方式的地址计算方法分,加载/存储指令有4种格式。零偏移、前索引偏移、程序相对偏移、后索引偏移,请标出下面指令属于哪一种:LDR R0,R1,#0 x04; LDRR0,R1,#0 x04LDRR0,label ;LDR R0,R1 ;在多寄存器加载指令 LDMIA R0!, R1-R4,LR人中,请解释“! ”和“人”的作用?答:“一表示在操作结束后,将最后的地址写回R0中;表示两方面,一方面进行数据传送且寄存器列表不包含PC时,加载/存储的寄存器是用户模式下的,而不是当前模式的

43、寄存器。另一方面,若在LDM指令且寄存器列表中包含有PC时使用,那么除了正常的多寄存器传送外,还将SPS他拷贝到CPSR中,这可用于异常处理返回。该后缀不允许在用户模式或系统模式下使用。ARM状态下的压栈和出栈操作可以用数据块传送指令完成,为什么还要用堆栈指令进行堆栈操作?答:如STMDA R0!,R5-R6 LDMIB R0!,R5-R6的数据块传送指令进行堆栈操作,也可用STMED R0!,R5-R6 LDMED R0!,R5-R6的堆栈指令进行堆栈操作。两段代码的执行结果 是一样的,但是使用堆栈指令的压栈和出栈操作编程很简单,前后模式一致即可,而使用数 据块指令进行压栈和出栈操作则需要考

44、虑空与满、加与减对应的问题。LPC2000系列微控制器包含四大部分:ARM7TDMI-S CPC ARM7局夸B总线及相关夸B件、AHB高性能总线及相关部件、VLSI外设总线及相关部件。AHB外设分配了8 M字节的地十范围, 它位于4G字节ARM寻址空间的最顶端。AHB可接外设12 8 个,每个分配 16KB 的地址空间。VPB外设分配了2M字节的地址范围.从3.5GB地址点开始,VPB可分配128个外设,每个 VPB外设都分配了 16KB的地址空间。向量中断控制器(VIC)最多可以管理32个中断请求,LPC2000实际管理了 19个中断请求。外部存储器控制器(EMC)支持4个BANK的外部S

45、RAM或Flash,每个BANK最多名MB 容量。对SRAM的写入一次操作后,如果发生芯片复位,实际的SRAM内容将不会反映最近一次的写操作。(V)在LPC2000系列芯片中,对 SRAM执行一次写入操作,此时芯片复位,为什么实际的SRAM内容将不会反映最近一次的写操作?答:由于SRAM控制器包含一个回写缓冲区,它总是保存着软件发送到SRAM的最后一个字数据。该数据只有在软件请求下一次写操作时才写入SRAM。如果发生芯片复位,实际的SRAM内容将不反映最近一次的写操作。为什么整个BootBlock块被映射到片内存储器空间的顶端?答:这是为了兼容将来的器件,以便将来的芯片内置不同的RAM和FAL

46、SH都不会影响BootBlock 的位置。实现掉电唤醒不需要在向量中断控制器VIC中使能相应的中断。(X)异常向量表可能来源于内部Flash、内部SRAM内部BootBlock、外部存储器。(V)对LPC2210来说,当 MEMMAP寄存器的MAP1:0=11时,当引脚BOOT1和BOOT0全为高电平,复位后从外部Flash执行程序。(X)对LPC2210来说,当 MEMMAP寄存器的MAP1:0=11时,当引脚BOOT1和BOOT0不全为高电平但芯片加密,复位后从外部Flash执行程序。(X)与外部存储器的连接时,如果存储器组配置成32位宽度,地址线A0和A1为什么无用,且可作为GPIO使用

47、?答:与外部存储器的连接时,如果存储器组配置成32位宽度,则寻址是按字(4字节)操作,但存储器地址是按字节编址,因此只有当A0和A1不参与寻址时才是按字操作,因此 A0和A1这两根线可用作 GPIO而不影响寻址。与外部存储器的连接时, 如果存储器组配置成 16位宽度,地址线 A0为什么无用?同一寄存器组的器件宽度可以不一致。 (X)与外部存储器连接的是32位宽度,请画出4片8位存储器芯构成32位存储器的连接示意图?中断控制器将32个中断输入进行分配,可转向的中断类型是FRQ、向量IRQ 和 非向量IRQ。请描述ARM内核是如何通过向量中断控制器VIC获取中断服务程序地址的?答:在发生向量IRQ

48、中断后,VIC能将对应中断的服务程序地址保存的寄存器VICVectAddr0-15中按对应VICVectCntl0-15的优先级顺序选取级别最高的地址,并送入 VICVectAddr寄存器中, 而非向量中断是将 VICDefVectAddr送入VICVectAddr寄存器中,在异常向量表的IRQ异常入口 处放置一条指令,将 VICVectAddr寄存器的内容装入程序计数器PC,就可以跳转到当前中断的服务函数。请编写一段C代码。要求设置外部中断0产生向量IRQ中断后执行中断服务程序IRQ_Eint0()。答:PINSEL1 = (PINSEL1&0XFFFFFFFC) | 0 x0绿置 P0.1

49、6 为外部中断VICIntSelect = 0 x00000000; 设置所有中断为IRQ中断 VICVectCntl0 = (0 x20 | 14);将EINT0设置为优先级 0,使能IRQ中断 VICVectAddr。= (int)IRQ_Eint0;EXTINT = 0 x01;清除外部中断0的标志后使能外部中断0 VICIntEnable = (114);简述向量IRQ的中断入口地址的形成过程?答:初始化时,向量IRQ的入口地址保存在 VICVectAddrx寄存器中,通过 VICVectCntlx保存 中断源类型,当有所设置的IRQ中断源发生中断时,中断控制器(VIC)将中断源所对应

50、的向量IRQ入口地址寄存器 VICVectAddrx内容保存到 VICVectAddr并由ARM通过异常向量表所对 应的入口地址 0 x00000018执行LDR PC PC, # -0 xFF0指令就完成将 VICVectAddr地址内容装 载到PC中形成中断入口地址跳转,进入中断服务程序。简述非向量IRQ的中断入口地址的形成过程?答:初始化时,非向量 IRQ的入口地址保存在 VICDefVectAddr,当有所设置的非向量IRQ中断源发生中断时,中断控制器( VIC)将中断源所对应的非向量IRQ入口地址寄存器VICDefVectAddr内容保存到VICVectAddr,并由 ARM通过异常

51、向量表所对应的入口地址0 x00000018执行LDR PC PC, # -0 xFF0脂令就完成将 VICVectAddr地址内容装载到 PC中形成 中断入口地址跳转,进入中断服务程序。简述向量IRQ和非向量IRQ的中断入口地址形成异同?答:相同点:同为IRQ中断,ARM通过异常向量表所对应的入口地址 0 x00000018执行LDR PC PC, # -0 xFF0俏令就完成将 VICVectAddr地址内容装载到 PC中形成中断入口地址跳转 ,进入中 断服务程序。不同点:VIC形成VICVectAddr地址,一个是从向量地址寄存器VICVectAddrx读取,一个是从寄存器VICDefVectAddr读取。设置引脚为GPIO为输出模式时,向IOxSET寄存器对应位写1时输出高电平,写0时输出低电平。(X)VIC寄存器 VICIntSelect 的作用。VIC寄存器 VICVectCntlx 的作用 。VIC寄存器 VICVectAddrx 的作用 。VIC寄存器 VICVectAddr 的作用。VIC寄存器 VICDefVectAddr 的作用LPC2000型中的定时器功能除了可作计数操作外,还可作:信号捕获和信号匹配发生。I2C的2根线分别是串行数据SDA和串行时钟 SCL简述

温馨提示

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

评论

0/150

提交评论