ARM嵌入式系统结构与编程习题答案 邱铁著.docx
《ARM嵌入式系统结构与编程习题答案 邱铁著.docx》由会员分享,可在线阅读,更多相关《ARM嵌入式系统结构与编程习题答案 邱铁著.docx(28页珍藏版)》请在课桌文档上搜索。
1、第8章ARM汇编语言与嵌入式C混合编程1 .严格依据嵌入式C语言的编程规范,写一个C语言程序,实现将一个二维数组内的数据行和列进行排序。答:略2 .嵌入式C程序设计中常用的移位操作有哪几种,请说明每种运算所对应的ARM指令实现。答:移位操作分为左移操作与右移操作左移运算符“”实现将“”左边的操作数的各个二进制位向左移动“”实现将“”左边的操作数的各个二进制位向右移动“”右边操作数所指定的位数。 对于空位的补齐方式,无符号数与有符号数是有区分的。 对无符号数进行右移时,低位丢弃,高位用0补齐,其值相当于除以:2“右移位数”次方 对有符号数进行右移时,依据处理器的不同选择逻辑右移或算术右移3.vo
2、latile限制符在程序中起到什么作用。请举例说明。答:VolatiIe的本意为“暂态的”或.“易变的”,该说明符起到抑制编译器优化的作用。假如在声明时用“volatile”关键进行修饰,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以供应特别地址的稳定访问。 例:硬件端口寄存器读取 Charx=0,y=0,z=0; X=Readehar(OX54000000);读端口 y=; X=ReadChar(OX54000000);再读端口 Z=X; 以上代码可能被编译器优化为 Charx=0,y=0,z=0; X=ReadChar(OX54000000);读端口 y=; Z
3、=X; 为了确保X的值从真实端口获得,声明时应当为 Volatilecharx; Chary,z;4 .请分析下列程序代码的执行结果。#includemain()intValue=OxFFl;int*pl,*p2,*p3,*p4;pl=&value;p2=&pl;p3=&p2;p4=&p3;printf(*p4=%dn,*p4);)答:程序输出结果为:*p4=40815 .分析宏定义#definePOWER(x)x*x是否合理,举例说明。假如不合理,应如何更改?答:#definePOWER(x)x*x不合理;对于带参数的宏,其参数应当用括号括起来。例:假如依据下边方式运用该宏POWER(2+3
4、)则宏绽开后为2+3*2+3该宏应修改为:#definePOWER(x)(x)*(x)6 .条件编译在程序设计中有哪些用途?答:条件编译包括了6条预处理指令#ifdef,#ifndef.#if,#elif,#else,#endif.o条件编译的功能在于对源程序中的一部分内容只有满足某种条件的状况下才进行编译。7 .何为可重入函数?假如使程序具有可重入性,在程序设计中应当留意哪些问题?答:假如某个函数可以被多个任务并发运用,而不会造成数据错误,我们就说这个函数具有可重入性(reentrant)。可重入函数可以运用局部变量,也可以运用全局变量。假如运用全局变量,则应通过关中断、信号量(即P、V操作
5、)等手段对其加以爱惜,若不加以爱惜,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使得此全局变量变为不行知状态。8 .现有模块module_1,module_2,module_3,要求在模块module.I中供应可供模块module_2,module_3运用的int型变量xx,请写出模块化程序设计框架。答:首先在module的.c文件中定义intxx;/*module-l.c*/intxx=O;然后在module的.h文件中声明XX为外部变量*module-l.h*/externintxx;接下来在module_2源文件中包括module的.h文件/*module-2.c*/#i
6、ncludeHmodule_l.h在module_3源文件中包括module的.h文件/*module-3.c*/#includemodule.h这样在module_2,module_3中就可以运用module.1中供应的int型变量XX了。9 .ATPCS与AAPCS的全称是是什么,它们有什么差别?驾驭子程序调用过程中寄存器的运用规则,数据栈的运用规则及参数的传递规则,在具体的函数中能够娴熟应用。答:过程调用标准ATPCS(ARM-ThumbProduceCallStandard)规定了子程序间相互调用的基本规则,ATPCS规定子程序调用过程中寄存器的运用规则、数据栈的运用规则及参数的传递规
7、则。2023年,ARM公司推出了新的过程调用标准AAPCS(ARMArchitectureProduceCallStandard),它只是改进了原有的ATPCS的二进制代码的兼容性。10 .内嵌式汇编有哪些局限性?编写一段代码接受C语言嵌入式汇编程序,在汇编程序中实现字符串的拷贝操作。答:内嵌汇编的局限性(1)操作数 ARM开发工具编译环境下内嵌汇编语言,指令操作数可以是寄存器、常量或C语言表达式。可以是Char、Short或ini类型,而且是作为无符号数进行操作。 当表达式过于困难时须要运用较多的物理寄存器,有可能产生冲突。 GNUARM编译环境下内嵌汇编语言ARM开发工具稍有差别,不能干脆
8、引用C语言中的变量。(2)物理寄存器不要干脆向程序计数器PC赋值,程序的跳转只能通过B或BL指令实现。一般将寄存器ROR3、R12及R14用于子程序调用存放中间结果,因此在内嵌汇编指令中,一般不要将这些寄存器同时指定为指令中的物理寄存器。在内嵌的汇编指令中运用物理寄存器时,假如有C语言变量运用了该物理寄存器,则编译器将在合适的时候保存并更原该变量的值。须要留意的是,当寄存器SP、SL、FP以及SB用作特定的用途时,编译器不能复原这些寄存器的值。通常在内嵌汇编指令中不要指定物理寄存器,因为有可能会影响编译器支配寄存器,进而可能影响代码的效率。(3)标号、常量及指令绽开 C语言程序中的标号可以被内
9、嵌的汇编指令所运用。但是只有B指令可以运用C语言程序中的标号,BL指令不能运用C语言程序中的标号。(4)内存单元的支配 内嵌汇编器不支持汇编语言中用于内存支配的伪操作。所用的内存单元的支配都是通过C语言程序完成的,支配的内存单元通过变量以供内嵌的汇编器运用。 (5)SWl和BL指令 SWl和BL指令用于内嵌汇编时,除了正常的操作数域外,还必需增加如下3个可选的寄存器列表: 用于存放输入的参数的寄存器列表。 用于存放返回结果的寄存器列表。 用于保存被调用的子程序工作寄存器的寄存器列表。ARM嵌入式系统结构与编程习题答案第一章绪论1 .国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:
10、国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,牢靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必需结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。2 .嵌入式系统是从何时产生的,简述其发展历程。答:从20世纪70年头单片机的出现到目前各种各样的嵌入式微处理器,微限制器的大规模应用,嵌入式系统己经有了30多年的发展历史。嵌入式系统的出现最初是基于单片机的。Intel公司1971年开发出第一片具有4位总线结构
11、的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年头初的8051是单片机历史上值得纪念的一页。20世纪80年头早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节约资金。20世纪90年头实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,MCU的性能得到了极大的提升,特别是ARM技术的出现与完善,为嵌入式操作系统供应了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。3 .当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式Linux和嵌入式实时操作内核uC/OS-Il嵌
12、入式Linux操作系统是针对嵌入式微限制器的特点而量身定做的一种Linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。uC/OS是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,供应系统服务等。4 .举例说明嵌入式设备在工控设备中的应用。答:由于工业限制系统特别强调牢靠性和实时性,“量身定做”的嵌入式限制系统恰能满足工业限制的需求。例如:工业过程限制,数字限制机床,电网设备监测,电力自动限制系统,石油化工监控等。5 .嵌入式技术的发展趋势有
13、哪些?答:将来嵌入式系统的发展趋势有:1.随着信息化与数字化的发展,嵌入式设备进行网络互联是将来发展的趋势。2.优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本。3.指令集的并行计算技术将引入嵌入式微处理器。4.嵌入式微处理器将会向多核技术发展。5.嵌入式技术将引领信息时代。第2章ARM技术与ARM体系结构1 .简述ARM处理器内核调试结构原理答:ARM处理器一般都带有嵌入式追踪宏单元ETM(EmbeddedTraceMacro),它是ARM公司自己推出的调试工具。ARM处理器都支持基于JTAG(JointTestActionGroup联合测试行动小组)的调试方法。它利用芯片内部
14、的EmbeddedlCE来限制ARM内核操作,可完成单步调试和断点调试等操作。当CPU处理单步执行完毕或到达断点处时,就可以在宿主机端查看处理器现场数据,但是它不能在CPU运行过程中对实时数据进行仿真。宿主机仿真器/1NJTAG 接JL嵌入式ICEETMETM解决了上述问题,能够在CPU运行过程中实时扫描处理器的现场信息,并数据送往TAP(TestAccessPort)限制器。上图中分为三条扫描链(图中的粗实线),分别用来监视ARM核,ETM,嵌入式ICE的状态。2 .分析ARM7TDMI-S各字母所代表的含义。答:ARM7TDMI-S中ARM是AdvancedRISCMachines的缩写7
15、是系列号;T:支持高密度16位的Thumb指令集;D:支持JTAG片上调试;M:支持用于长乘法操作(64位结果)ARM指令,包含快速乘法器;;I:带有嵌入式追踪宏单元ETM,用来设置断点和视察点的调试硬件;S:可综合版本,意味着处理器内核是以源代码形式供应的。这种源代码形式又可以编译成一种易于EDA工具运用的形式。3 .ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异样模式,并指出处理器在什么状况下进入相应的模式。答:ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异样状态设定了一个固定的入口点,当异样产生时,程序会自动跳转到对应异样入口处进行异样
16、服务。 1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,假如没异样发生,不允许应用程序自行变更处理器的工作模式,假如有异样发生,处理器会自动切换工作模式 2.FlQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。 3.IRQ模式:也称为一般中断模式,:当一个低优先级(normal)中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。 4.SVC模式:称之为管理模式,它是一种操作系统爱惜模式。当复位或软中断指令执行时处理
17、器将进入这种模式。 5.中止模式:当存取异样时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储爱惜。 6.未定义指令异样模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。 7.系统模式:运用和USer模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。 在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问全部的系统资源,也可以随意地进行处理器模式的切换。 在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异样模式,每种异样都对应有自己
18、的异样处理入口点。4 .分析程序状态寄存器(PSR)各位的功能描述,并说明C,Z,N,V在什么状况下进行置位和清零。答:条件代码林志保留控制住313029282726876543210NZCVIFTM4M3M2MlMO条件位:0-结果为正或0O-结果不为0O-借位0结果没溢出 N=I-结果为负, Z=I-结果为0, C=I-进位, V=I-结果溢出,Q位:仅ARM5TE/J架构支持指示增加型DSP指令是否溢出中断禁止位: I=1:禁止IRQ. F=I:禁止FIQ.TBit 仅ARMXT架构支持 T=O:处理器处于ARM状态 T=1:处理器处于Thumb状态MOde位(处理器模式位):Ob100
19、OOUserOblOOOlFIQOblOOlOIRQOblOOIlSupervisorOblOlllAbortObllOllUndefinedOblllllSystem5.简述ARM处理器异样处理和程序返回的过程。答:只要正常的程序流被短暂中止,处理器就进入异样模式。例如响应一个来自外设的中断。在处理异样之前,ARM7TDMI内核保存当前的处理器状态,这样当处理程序结束时可以复原执行原来的程序。假犹如时发生两个或更多异样,那么将依据固定的依次来处理异样。异样或入口返回指令向量表偏移处理器模式优先级BLMOVPC,R14SWIMOVSPC,R14_svcSVC60x00000008未定义的指令M
20、OVSPC,RI4.undUND60x00000004预取指中止SUBSPC,R14_abt,#4ABT50x0000000C快中断SUBSPC,RI4_fiq,#4FIQ30x000000IC中断SUBSPC,R14_irq,#4IRQ40x00000018数据中止SUBSPC,R14_abt,#8ABT20x00000010复位无SVC10x00000000在异样发生后,ARM7TDMI内核会作以下工作:1 .在适当的LR中保存下一条指令的地址2 .将CPSR复制到适当的SPSR中;3 .将CPSR模式位强制设置为与异样类型相对应的值;4 .强制PC从相关的异样向量处取指。ARM7TDMI
21、内核在中断异样时置位中断禁止标记,这样可以防止不受限制的异样嵌套。注:异样总是在ARM状态中进行处理。当处理器处于ThUmb状态时发生了异样,在异样向量地址装入PC时,会自动切换到ARM状态。当异样结束时,异样处理程序必需:1 .将LR中的值减去偏移量后存入PC,偏移量依据异样的类型而有所不同;2 .将SPSR的值复制回CPSR;3 .清零在入口置位的中断禁止标记。注:复原CPSR的动作会将T、F和I位自动复原为异样发生前的值。6. ARM处理器字数据的存储格式有哪两种?并指出这两种格式的区分。答:ARM7TDMI处理器可以将存储器中的字以下列格式存储 大端格式(Big-endian) 小端格
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM嵌入式系统结构与编程习题答案 邱铁著 ARM 嵌入式 系统 结构 编程 习题 答案
链接地址:https://www.desk33.com/p-499603.html