ARM嵌入式系统习题课1.ppt_第1页
ARM嵌入式系统习题课1.ppt_第2页
ARM嵌入式系统习题课1.ppt_第3页
ARM嵌入式系统习题课1.ppt_第4页
ARM嵌入式系统习题课1.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

ARM嵌入式系统习题课,第二章 ARM7 体系结构,(7) CPSR寄存器中哪些位用来定义处理器状态? 寄存器CPSR为当前程序状态寄存器,当控制位T置位时,处理器处于Thumb状态,执行Thumb指令;当控制位T清零时,处理器处于ARM状态,执行ARM指令。 (8) 描述一下如何禁止IRQ和FIQ的中断? 标志位I和F都是中断禁止标志位,用来使能或禁止ARM的两种外部中断源,具体设置如下: 当控制位I置位时,IRQ 中断被禁止,否则允许IRQ中断使能; 当控制位F置位时,FIQ中断被禁止,否则允许FIQ中断使能。,2、定义R0 =0x12345678,假设使用存储指令将R0的值放在0x4000单元中。如果存储器格式为大端格式,请写出在执行加载指令将存储器0x4000单元内容取出存放到R2寄存器操作后所得R2的值。如果存储器改为小端格式,所得的R2值又为多少?低地址0x4000单元的字节内容分别是多少?,3、请描述一下ARM7TDMI产生异常的条件是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么? (1)只要正常的程序流暂时被中止,处理器就会进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。 (2)软件中断异常(SWI)、未定义的指令、中止(预取中止、数据中止)、快速中断(FIQ)、中断(IRQ)、复位。 (3)a、将异常处理程序的返回地址(加固定的偏移量)保存到相应的异常模式下的LR,异常处理程序完成后的返回可通过将LR的值减去偏移量后写入PC; b、将CPSR的当前值保存到相应异常模式下的SPSR; c、设置CPSR为相应的异常模式 d、设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行。,(4) 中断 SUBS PC,R14_irq,#4 快速中断(FIQ) SUBS PC,R14_fiq,#4 未定义的指令 MOVS PC,R14_und 预取指中止 SUBS PC,R14_abt,#4 数据中止 SUBS PC,R14_abt,#8 软件中断异常 MOVS PC,R14_svc 复位 无 注:“MOVS PC,R14_svc” 是指在管理模式下执行“MOVS PC,R14”,(1)ARM7TDMI(-S)有几种寻址方式?“LDR R1,R0,#0x08”属于哪种寻址方式? 答:有8种寻址方式:1.寄存器寻址 2.立即寻址 3.寄存器移位寻址 4.寄存器间接寻址 5.基址寻址 6.多寄存器寻址 7.堆栈寻址 8.相对寻址;“LDR R1,R0,#0x08”属于基址寻址。 (3) ARM指令中的第2个操作数有哪几种形式?列举5个8位图立即数。 答:a.常数表达式(8位图) b.寄存器方式 c.寄存器移位方式; 八位位图即常熟是由一个八位的常数循环移位偶数位得到的 0x3FC、0、0xF0000000、200、0xF0000001。 (5)请指出MOV指令与LDR加载指令的区别及用途? 答:MOV指令的源操作数是常数或(带偏移量的)寄存器,用于寄存器之间的数据传送;LDR指令的源操作数是地址,用于存储器到寄存器的数据传送。,(6) CMP指令是如何执行的?写一程序,判断R1的值是否大于0x30,是则将R1减去0x30。 答:CMP指令是将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。 比如: CMP cond Rn,operand2 CMP R1,#0x30 ;将R1与常数0x30比较 LDRLE PC,LR;如果小于或等于0x30,则程序返回 SUB R1,R1,#0x30;大于0x30,则将R1减去0x30,结果存回R1 (7)调用子程序是用B指令还是用BL指令?请写出返回子程序的指令。 答:调用子程序是用BL指令; MOV PC,LR 或 BX LR,(8)请指出LDR伪指令的用法。指令格式与LDR加载指令的区别是什么? 答:LDR伪指令用于加载32位的立即数或一个地址值到指定的寄存器,它还常用于加载芯片外围功能部件的寄存器地址(32位立即数),一实现各种控制操作,与ARM指令的LDR相比,伪指令的LDR的参数有“=”号。 比如:LDR R0, =0x12345678 2、(1)0xFFFF000F (A) +0x0000FFF1 (B) - 0x00000000 NZCV=0110 如果两个操作数是有符号的,A是负数,B是正数,和是0,没有溢出,所以V=0。 如果两个操作数是无符号数,和是0,有进位,所以C=1。,(2) 0x7FFFFFFF (A) +0x02345678 (B) - 0x82345677 NZCV=1001 如果两个操作数是有符号数,A是正数,B是正数,和是负数,有溢出,所以V=1。 如果两个操作数是无符号数,没有进位,所以C=0。 (3) 67654321 (A) +23110000 (B) - 0x0568F421 NZCV=0000 如果两个操作数是有符号数,A是正数,B是正数,和是正数,没有溢出,所以V=0。 如果两个操作数是无符号数,没有进位,所以C=0。,第四章 LPC2000系列ARM硬件结构,(2)请描述LPC2210/2200的P0.14、P1.20、P1.26、BOOT1和BOOT0引脚在芯片复位时分别有什么作用?并简单说明LPC2000系列的ARM7微控制器的复位流程 答:P0.14的低电平强制片内引导装载程序复位后控制器件的操作即进入ISP状态 P1.20的低电平使P1.251.26复位后用作跟踪端口 P1.26的低电平使P1.311.26复位后用作一个调试端口 当芯片在复位时,BOOT0与BOOT1引脚决定芯片复位后运行片内还是片外存储器上的用户代。 当引脚为低电平时,器件复位,I/O口和外围功能进入默认状态,处理器从地址零开始执行程序,复位信号是具有迟滞作用的TTL电平。,(3)LPC2000系列ARM7微控制器对向量表有何要求(向量表的保留字)? 答:向量表所有数据32位累加和为零(0x000000000x0000001C的8个字的机器码累加),才能脱机运行用户程序,这是LPC2114/2124/2212/2214的特性 (4)如何启动LPC2000系列ARM7微控制器的ISP功能?相关电路该如何设计? 答:有两种情况可以使用芯片进入ISP状态(1)将芯片的P0.14引脚拉低后,复位芯片,可进入ISP状态;(2)在芯片内部五有效用户代码时,Boot Block自动进入ISP状态。 如果用户需要使用 ISP功能,则可以设计一个跳线将P0.14连接到地,若需要进入 ISP,将此跳线短接即可,若想要脱机运行程序,将此跳线断开即可。 (6)若LPC2210/2220的bank0存储块使用32位总线,访问bank0时,地址线A1、A0是否有效?EMC模块中的BLS0BLS4什么功能? 答:无效( 如果存储器组配置成 16 位宽,则不需要 A0;8 位宽的存储器组需要使用 A0 。);字节定位选择信号。,(7)LPC2000系列ARM7微控制器具有引脚功能复用特性,那么如何设置某个引脚为指定功能?P173 答: (8)FIQ、IRQ有什么不同,向量IRQ和非向量IRQ有什么不同?(P189) 答: 向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类,FIQ,向量IRQ和非向量IRQ。 FIQ(fast interrpt request)快速中断请求要求具有最高优先级。如果分配给FIQ的请求多于一个,VIC将中断请求相或后向ARM处理器产生FIQ信号。当只有一个中断被分配为FIQ时可实现最短的FIQ等待,但如果分配给IFIQ级的中断多于1个,FIQ服务程序需要读取FIQ状态寄存器来识别产生中断请求的FIQ中断源!向量IRQ具有中等优先级。该级别可分别32个请求中断的16个。32个请求种的任意一个都可分配到16个向量IRQ slot中的任意一个,其中slot0具有最高优先级非向量IRQ的优先级最低,(9)在使能、禁止FIQ和IRQ时,为什么操作SPSR寄存器而不操作CPSR寄存器? 答:在用户模式下,无法修改CPSR,只有在特权模式下修改SPSR后,通过退出特权模式,然后恢复SPSR到CPSR,才能实现修改CPSR。 (10)ARM内核对FIQ、向量IRQ和非向量IRQ的响应过程有何不同?,(11)向量中断能嵌套吗?请结合ARM体系进行阐述? 答:能。但需要重新开中断 (13)设置引脚为GPIO功能时,如何控制某个引脚单独输入/输出?当需要知道某个引脚当前的输出状态时,是读取IOPIN寄存器还是读取IOSET寄存器 答:使用GPIO引脚输入/输出方向控制寄存器IOxDIR; 当需要知道某个引脚当前的输出状态时,读取IOPIN寄存器,IOSET是 控制引脚输出搞电平。,(16)LPC2114具有几个UART是符合什么标准?哪一个UART可用作ISP通信?哪一个UART具有MODEM接口? 答:UART0,UART1;UART0用于ISP通信,UART1具有MODEM接口。,二、计算题,假设有一个基于LPC2114的系统,所使用的晶振为11.0592MHz 晶振。请计算出最大的系统时钟为多少MHz?此时PLL的M值和P值 为多少?并编写PLL的程序段 解:LPC2214最大的系统时钟频率是60MHz,FcclkM*Fosc=60MHZ Fosc11.0592MHz所以M=5 FcclkFosc*M=55.296MHz 又156MHzFcco320MHz P=Fcco/(Fcclk*2) 当Fcco取156MHZ时,P=1.3 当个Fcco取最高频率时即320时,P=2.67 所以P=2 程序清单:,Uint8 PLLSet(uint32 Fcclk,uint32 Fosc,uint32 Fcco) Uint8 i; uint32 plldat; i = (Fcco/Fcclk); switch(i) case 2: plldat=(Fcclk/Fosc)-1)|(05); break; case 4: plldat=(Fcclk/Fosc)-1)|(15); break; case 8: plldat=(Fcclk

温馨提示

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

评论

0/150

提交评论