首页 ARM复习课后题答案

ARM复习课后题答案

举报
开通vip

ARM复习课后题答案国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解答:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点答:嵌入式linux和嵌入式实时操作系统uc/os-IILinux:linux是源码开放的,每一...

ARM复习课后题答案
国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解答:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点答:嵌入式linux和嵌入式实时操作系统uc/os-IILinux:linux是源码开放的,每一个技术细节都是透明的,易于裁剪定制。目前嵌入式linux已经在多种嵌入式处理器芯片移植成功,有大量且不断增加的开发工具,这些工具为嵌入式系统开发提供了良好的开发环境。(3)Linux内核小、功能强大、运作稳定、效率高。Ucos:1)源代码公开2)可移植性。3)可固化4)可裁剪5)占先式6)多任务7)可确定性。8)系统服务第2章ARM技术与ARM体系结构arm处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理器在什么情况下进入相应的模式。答:ARM处理器共有7种工作模式:用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。IRQ模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。SVC模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令执行时处理器将进入这种模式。中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。系统模式:使用和User模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式分析程序状态寄存器(PSR)各位的功能描述,并说明C、Z、N、V在什么情况下进行置位和清零。答:PSR的具体格式为31抽2^2A2723342316155?340X7(VQunusedJ^unusedirFTrmuclcV一溢出标志位对于加/减法运算指令,当操作数和运算结果为二进制补码 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示的带符号数时,V=1表示符号位溢出,其他的指令通常不影响V位。c—进位或借位标志位对于加法指令(包括比较指令CMN),结果产生进位,贝yc=1,表示无符号数运算发生上溢出,其他情况下c=o;在减法指令中(包括比较指令CMP),结果产生借位,贝贝:=0,表示无符号数运算发生下溢出,其他情况下c=1;对于包含移位操作的非加/减法运算指令,C中包含最后一次溢出位的数值;对于其他非加/减法运算指令,C位的值通常不受影响。Z—结果为0标志位Z=1表示运算结果是0,Z=0表示运算结果不是零;对于CMP指令,Z=1表示进行比较的两个数大小相等。N—符号标志位本位设置成当前指令运算结果的bit[31]的值。当两个补码表示有符号整数运算时,N=1表示运算的结果为负数,N=0表示结果为正数或零。简述ARM处理器异常处理和程序返回的过程。答:ARM在异常产生时会进行以下操作:将引起异常指令的下一条指令地址保存到新的异常模式的LR中,使异常处理程序执行完后能根据LR中的值正确返回;将CPSR的内容复制到新的异常模式下的SPSR中;根据异常类型将CPSR模式控制位强制设定为发生异常所对应的模式值;强制PC指向相应的异常向量地址。ARM在异常返回时从SPSR_〈mode〉恢复CPSR;从LR_恢复PC。6.ARM处理器字数据的存储格式有哪两种?并指出这两种格式的区别。答:小端存储格式(Little-Endian)在小端存储格式中,对于地址为A的字单元,其中字节单元由低位到高位字节地址顺序为A,A+l,A+2,A+3;对于地址为A的半字单元,其中字节单元由低位到高位字节地址顺序为A,A+1;大端存储格式(Big-Endian)在大端存储格式中,对于地址为A的字单元,其中字节单元由高位到低位字节地址顺序为A,A+1,A+2,A+3;对于地址为A的半字单元,其中字节单元由高位到低位字节地址顺序为A,A+1。第3章ARM指令集寻址方式3.在ARM指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是8位常数和4位的移位数)。0x54300x1080x3040x5010xFB100000x3340000x3FC0000x1FE00000x55800000x7F8000x39C0000x1FE80000答:计算步骤:十六进制立即数两端0去掉展成二进制连续偶数个0去掉,数字中间0不去掉剩下数字位数小于等于8可以,反之,不可以。5.ARM数据处理指令具体的寻址方式有哪些,如果程序计数器PC作为目标寄存器会产生什么结果?答:ARM数据处理指令寻址方式有5种第二操作数为立即数第二操作数为寄存器第二操作数为寄存器移位方式,且移位的位数为一个5位的立即数第二操作数为寄存器移位方式,且移位数值放在寄存器中第二操作数为寄存器进行RRX移位得到如果程序计数器PC作为目标寄存器,会发生程序跳转。6.在Load/Store指令寻址中,字、无符号字节的Load/Store指令寻址和半字、有符号字节寻址,试分析它们之间的差别。答:字、无符号字节寻址:Addressing_mode中的偏移量为立即数Addressing_mode中的偏移量为寄存器的值Addressing_mode中的偏移量通过寄存器移位得到半字、有符号字节寻址:1)Addressing_mode中的偏移量为立即数2)Addressing_mode中的偏移量为寄存器的值从以上分析看出:差别就在于后者没有第三项寻址方式。7.块拷贝Load/Store指令在实现寄存器组和连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。答:批量Load/Store指令在实现寄存器组和连续的内存单元中数据传递时,地址的变化方式(addr_mode)有以下4种类型:后增IA(IncrementAfter):每次数据传送后地址加4;先增IB(IncrementBefore):每次数据传送前地址加4;后减DA(DecrementAfter):每次数据传送后地址减4;先减DB(DecrementBefore):每次数据传送前地址减4。8.栈操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作指令寻址和块拷贝Load/Store指令之间的对应关系。答:(1)四种类型的堆栈工作方式,即:满递增堆栈FA(EmptyAscending):堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈FD(FullDescending):堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈EA(FullAscending):堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈ED(EmptyDescending):堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。⑵栈操作指令寻址和块拷贝Load/Store指令之间的对应关系见表3-10。第4章ARM指令集系统分析下列每条语句的功能,并确定程序段所实现的操作。CMPR0,#0MOVEQR1,#0MOVGTR1,#1答:分析:当R0等于0时,MOVEQ执行,则R1等于0;当R0等于正数时,MOVGT执行,贝9R1等于1;此功能码段可以判别R0中的值为正数还是0。请使用多种方法实现将字数据OxFFFFFFFF送入寄存器R0。答:例如,MVNR0,#0或者:MOVR0,#0SUBR0,R0,#1还可以用其它运算指令来实现,读者自行写出。9.写出下列ARM指令所实现操作:LDRR2,[R3,#-4]!LDRR0,[R0],R2LDRR1,[R3,R2,LSL#2]!;LDRSBR0,[R2,#-2]!STRBR1,[R2,#0xA0]LDMIAR0,{R1,R2,R8}STMDBR0!,{R1-R5,R10,R11}解答:LDRR2,[R3,#-4]!将存储器地址为R3-4的字数据读入R2,并将地址R3-4写入R3LDRR0,[R0],R2将存储器地址为R0的字数据读入R0,并将地址R0+R2写入R0LDRR1,[R3,R2,LSL#2]!将存储器地址为R3+R2*4的字数据读入R1,并将地址R3+R2*4写入R3LDRSBR0,[R2,#-2]!将存储器地址为R2-2的字节数据读入R0的低8位,将R0的高24位用符号位扩展,并将地址R2-2写入R2STRBR1,[R2,#0xA0]将R0的低8位存入存储器地址为R2+0XA0字节中LDMIAR0,{R1,R2,R8}将内存单元R0所指向的地址单元以字为单位递减方式读取到R1,R2,R8中,低地址编号的字数据内存单元对应低编号寄存器STMDBR0!{R1-R5,R10,R11}将R1-R5,R10,R11存储到以R0为起始地址的递减内存中,最终R0指向存放R11的地址单元SWP指令的优势是什么?答:ARM指令支持原子操作,主要是用来对信号量的操作,因为信号量操作的要求是作原子操作,即在一条指令中完成信号量的读取和修改操作。SWP数据交换指令就能完成此功能,能在一条指令中实现存储器和寄存器之间交换数据。如何用带PSR操作的批量字数据加载指令实现IRQ中断的返回?答:在进入IRQ中断处理子程序时,首先计算返回的地址,并保存相关的寄存器SUBR14,R14,#4STMFDR13!,{R0-R3,R12,LR}如果IRQ中断处理程序返回到被中断的进程则执行下面的指令。该指令从数据栈中恢复R0-R3及R12的值,将返回地址传送到PC中,并将SPSR_irq值复制到CPSR中LDMFDR13!,{R0-R3,R12,PC厂用ARM汇编语言编写代码,实现将ARM处理器切换到用户模式,并关闭中断。.equUser_Mode,0x10.equMode_Mask0x1F.equNOINT,0xC0MRSRO,CPSR@读CPSR@修改@进入用户模式BICR0,R0,#Mode_MaskORRR1,R0,#User_Mode|NOINTMSRCPSR_cxsf,R1第6章ARM汇编伪指令与伪操作在ARM汇编语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 中,伪操作与伪指令的区别是什么?答:伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不在处理器运行期间由机器执行,只是在汇编时被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作。伪操作是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,对源程序进行汇编程序处理,而不是在计算机运行期间由处理器执行。也就是说,这些伪操作只是在汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。分析ARM汇编语言伪指令LDR、ADRL、ADR的汇编结果,说明它们之间的区别。答:LDR是大范围地址读取伪指令。LDR将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。ADRL是中等范围地址读取伪指令。它将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。ADR是小范围地址读取伪指令,它将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。从以上分析可以看出:LDR不依赖于PC值,加载的数据是绝对值。ADRL和ADR依赖于PC值,加载的数据是基于PC相对偏移值第7章汇编语言程序设计4.在GNU环境下用ARM汇编语言编写程序初始化各ARM处理器各模式下的堆栈指针SP_mode(R13),各模式的堆栈地址如下:.equ_ISR_STARTADDRESS,0xcFFF000.equUserStack,_ISR_STARTADDRESS.equSVCStack,_ISR_STARTADDRESS+64.equUndefStack,_ISR_STARTADDRESS+64*2.equAbortStack,_ISR_STARTADDRESS+64*3.equIRQStack,_ISR_STARTADDRESS+64*4.equFIQStack,_ISR_STARTADDRESS+64*5//示例程序代码为平常自己写的,上机调试成功!与 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目有点不一样,变量名和数值得改一改//.equISR_STARTADDRESS,0x40008000.equsvc_stack_top,ISR_STARTADDRESS/*0x40008000*/.equuser_stack_top,ISR_STARTADDRESS-512/*0x40007E00*/.equundefstack_top,ISR_STARTADDRESS-512*2/*0x40007C00*/.equabortstack_top,ISR_STARTADDRESS-512*3/*0x40007A00*/.equisrstack_top,ISR_STARTADDRESS-512*4/*0x40007800*/.equfiqstack_top,ISR_STARTADDRESS-512*5/*0x40007600*/.equuser_mode,0x10.equfiq_mode,0x11.equirq_mode,0x12.equsvc_mode,0x13.equabt_mode,0x17.equudf_mode,0x1c.equsys_mode,0x1f.global_start.text_start:breset_handlerbundifned_handlerbsvc_handlerbprefetch_handlerbabort_handlerb.birq_handlerbfiq_handlerreset_handler:ldrsp,=svc_stack_top/*svc_stack*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#udf_modemsrcpsr_c,r0ldrsp,=undefstack_top/*undefstack*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#abt_modemsrcpsr_c,r0ldrsp,=abortstack_top/*abortstack*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#irq_modemsrcpsr_c,r0ldrsp,=isrstack_top/*isrstack*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#fiq_modemsrcpsr_c,r0ldrsp,=fiqstack_top/*fiqstack*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#user_modemsrcpsr_c,r0ldrsp,=user_stack_top/*user_stack*/stop:b.undifned_handler:b.svc_handler:stmfdsp!,{r0-r12,lr}ldrr0,[lr,#-4]bicr0,r0,#0xff000000ldmfdsp!,{r0-rl2,pc}"prefetch_handler:b.TOC\o"1-5"\h\zabort_handler:b.irq_handler:b.fiq_handler:b..end//另外有第5题和第7题,没时间写,可是老师也划题了。第8章嵌入式C编程规范volatile限制符在程序中起到什么作用,请举例说明。答:volatile限制符起到抑制编译器优化的作用。例如:中断服务程序中修改的供其他程序检测的变量的问题Staticcharflg=0;main(void){While(1){if(flg){…程序代码A}else…程序代码B}}}//中断服务程序VoidISR_INT(void){flg=1;}在这个程序中,由于在程序执行的大部分时间内,flg的值并没有变化,编译器会优化程序,flg=0。优化后的程序为:Staticcharflg=0;main(void){while(1){…程序代码B}}解决问题的方法:将声明语句staticcharflg=0;改为volatilestaticcharflg=03.请分析下列程序代码的执行结果#includemain(){intvalue=0xff1;int*p1,**p2,***p3,****p4;p1=&value;p2=&p1;p3=&p2;p4=&p3;printf(“****p4=%x\n”,****p4);}程序执行结果:*****p4=oxffl;分析宏定义#definePOWER(x)x*x是否合理,举例说明。如果不合理,应如何更改?答:不合理。x=i+j;POWER(x)=i+j*i+j;而不是(i+j)*(i+j)更改:#definePOWER(x)((x)*(x))7.何为可重入函数?如果使程序具有可重入性,在程序设计中应注意哪些问题?答:如果某个函数可以被多个任务并发使用,而不会造成数据错误,我们就说这个函数具有可重入性,相应的这个函数就可以成为可重入函数。可重入函数可以使用局部变量,也可以使用全局变量。如果使用全局变量,则应通过关中断、信号量(P、V操作)等手段对其加以保护,若不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使得此全局变量变为不可知状态。9.ATPCS与AAPCS的全称是什么,它们有什么差别?掌握子程序调用过程中寄存器的使用规则、数据栈的使用规则及参数的传递规则,在具体的函数中能够熟练应用。答:过程调用标准ATPCS(ARM-ThumbProduceCallStandard)规定了子程序间相互调用的基本规则,ATPCS规定子程序调用过程中寄存器的使用规则、数据栈的使用规则及参数的传递规则。这些规则为嵌入式C语言程序和汇编程序之间相互调用提供了依据。2007年,ARM公司推出了新的过程调用标准AAPCS(ARMArchitectureProduceCallStandard),它只是改进了原有的ATPCS的二进制代码的兼容性。目前,这两个标准都在被使用。第9章S3C2410硬件结构与关键技术分析第10章S3C2410通信与LCD接口技术//S3C2410的启动初始化程序这个一定要会的!《《《《《《嵌入式linux标准开发教程》》》》》//这应该是考点吧!!!第1章linux快速入门1.3linux文件及文件系统文件类型、文件属性、文件系统、linux目录结构第2章linux基础指令//基本指令太多了,考哪些不好说啊,会的越多越好吧!!2.2linux启动过程详解第3章linux下C编程基础3.3GCC编译器的使用3.5Make工程管理器〃 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 有的来自pdf有的为自己所写,仅供参考.
本文档为【ARM复习课后题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_072127
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:10
分类:
上传时间:2018-05-18
浏览量:0