ARM嵌入式系统设计习题课

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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单元的字节内容分别是多少?地址大端模式小端模式0x400378120x400256340x400134560x400012783、请描述一下ARM7TDMI产生异常的条件是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?(1)只要正常的程序流暂时被中止,处理器就会进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。(2)软件中断异常(SWI)、未定义的指令、中止(预取中止、数据中止)、快速中断(FIQ)、中断(IRQ)、复位。(3)a、将异常处理程序的返回地址(加固定的偏移量)保存到相应的异常模式下的LR,异常处理程序完成后的返回可通过将LR的值减去偏移量后写入PC;b、将CPSR的当前值保存到相应异常模式下的SPSR;c、设置CPSR为相应的异常模式d、设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行。(4)中断SUBSPC,R14_irq,#4快速中断(FIQ)SUBSPC,R14_fiq,#4未定义的指令MOVSPC,R14_und预取指中止SUBSPC,R14_abt,#4数据中止SUBSPC,R14_abt,#8软件中断异常MOVSPC,R14_svc复位无注:“MOVSPC,R14_svc”是指在管理模式下执行“MOVSPC,R14”第三章ARM7TDMI(-S)指令系统(1)ARM7TDMI(-S)有几种寻址方式?“LDRR1,[R0,#0x08]”属于哪种寻址方式?答:有8种寻址方式:1.寄存器寻址2.立即寻址3.寄存器移位寻址4.寄存器间接寻址5.基址寻址6.多寄存器寻址7.堆栈寻址8.相对寻址;“LDRR1,[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,operand2CMPR1,#0x30;将R1与常数0x30比较LDRLEPC,LR;如果小于或等于0x30,则程序返回SUBR1,R1,#0x30;大于0x30,则将R1减去0x30,结果存回R1(7)调用子程序是用B指令还是用BL指令?请写出返回子程序的指令。答:调用子程序是用BL指令;MOVPC,LR或BXLR(8)请指出LDR伪指令的用法。指令格式与LDR加载指令的区别是什么?答:LDR伪指令用于加载32位的立即数或一个地址值到指定的寄存器,它还常用于加载芯片外围功能部件的寄存器地址(32位立即数),一实现各种控制操作,与ARM指令的LDR相比,伪指令的LDR的参数有“=”号。比如:LDRR0,=0x123456782、(1)0xFFFF000F(A)+0x0000FFF1(B)--------------------0x00000000NZCV=0110如果两个操作数是有符号的,A是负数,B是正数,和是0,没有溢出,所以V=0。如果两个操作数是无符号数,和是0,有进位,所以C=1。(2)0x7FFFFFFF(A)+0x02345678(B)---------------------0x82345677NZCV=1001如果两个操作数是有符号数,A是正数,B是正数,和是负数,有溢出,所以V=1。如果两个操作数是无符号数,没有进位,所以C=0。(3)67654321(A)+23110000(B)-------------------0x0568F421NZCV=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.25~1.26复位后用作跟踪端口P1.26的低电平使P1.31~1.26复位后用作一个调试端口当芯片在复位时,BOOT0与BOOT1引脚决定芯片复位后运行片内还是片外存储器上的用户代。当引脚为低电平时,器件复位,I/O口和外围功能进入默认状态,处理器从地址零开始执行程序,复位信号是具有迟滞作用的TTL电平。(3)LPC2000系列ARM7微控制器对向量表有何要求(向量表的保留字)?答:向量表所有数据32位累加和为零(0x00000000~0x0000001C的8个字的机器码累加),才能脱机运行用户程序,这是LPC2114/2124/2212/2214的特性(4)如何启动LPC2000系列ARM7微控制器的ISP功能?相关电路该如何设计?答:有两种情况可以使用芯片进入ISP状态(1)将芯片的P0.14引脚拉低后,复位芯片,可进入ISP状态;(2)在芯片内部五有效用户代码时,BootBlock自动进入ISP状态。如果用户需要使用ISP功能,则可以设计一个跳线将P0.14连接到地,若需要进入ISP,将此跳线短接即可,若想要脱机运行程序,将此跳线断开即可。(6)若LPC2210/2220的bank0存储块使用32位总线,访问bank0时,地址线A1、A0是否有效?EMC模块中的BLS0~BLS4什么功能?答:无效(如果存储器组配置成16位宽,则不需要A0;8位宽的存储器组需要使用A0。);字节定位选择信号。(7)LPC2000系列ARM7微控制器具有引脚功能复用特性,那么如何设置某个引脚为指定功能?P173答:(8)FIQ、IRQ有什么不同,向量IRQ和非向量IRQ有什么不同?(P189)答:向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类,FIQ,向量IRQ和非向量IRQ。FIQ(fastinterrptrequest)快速中断请求要求具有最高优先级。如果分配给FIQ的请求多于一个,VIC将中断请求相或后向ARM处理器产生FIQ信号。当只有一个中断被分配为FIQ时可实现最短的FIQ等待,但如果分配给IFIQ级的中断多于1个,FIQ服务程序需要读取FIQ状态寄存器来识别产生中断请求的FIQ中断源!向量IRQ具有中等优先级。该级别可分别32个请求中断的16个。32个请求种的任意一个都可分配到16个向量IRQslot中的任意一个,其中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,Fcclk=M*Fosc=60MHZFosc=11.0592MHz所以M=5Fcclk=Fosc*M=55.296MHz又156MHzFcco320MHzP=Fcco/(Fcclk*2)当Fcco取156MHZ时,P=1.3当个Fcco取最高频率时即320时,P=2.67所以P=2程序清单:Uint8PLLSet(uint32Fcclk,uint32Fosc,uint32Fcco){Uint8i;uint32plldat;i=(Fcco/Fcclk);switch(i){case2:plldat=((Fcclk/Fosc)-1)|(05);break;case4:plldat=((Fcclk/Fosc)-1)|(15);break;case8:plldat=((Fcclk/Fosc)-1)|(25);break;case16:plldat=((Fcclk/Fosc)-1)|(35);break;default:return(FALSE);break;}PLLCON=1;PLLCFG=plldat;PLLFEED=0xaa;PLLFEED=0x55;while((PLLSTAT&(110))==0);PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;return(TRUE);}4、填空PINSEL0=0x00000000;PINSEL1=(PINSEL1&0XFFFFFFFC)|0x01;//设置I/O口连接。P0.16设置为EINT0EXTMODE=EXTMODE&0x0E;//设置EINT0为电平触发模式EXTPOLAR=EXTPOLAR&0x0E;//设置EINT0为低电平触发EXTWAKE=0x01;//允许外部中断0唤醒掉电的CPUEXTINT=0x0F;//消除外部中断标志

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功