当前位置:文档之家› ARM嵌入式系统结构与编程习题答案 邱铁著

ARM嵌入式系统结构与编程习题答案 邱铁著

ARM嵌入式系统结构与编程习题答案 邱铁著
ARM嵌入式系统结构与编程习题答案 邱铁著

第8章ARM汇编语言与嵌入式C混合编程

1.严格按照嵌入式C语言的编程规范,写一个C语言程序,实现将一个二维数组内的数据行和列进行排序。

答:略

2.嵌入式C程序设计中常用的移位操作有哪几种,请说明每种运算所对应的ARM指令实现。答:移位操作分为左移操作与右移操作

左移运算符―<<‖实现将―<<‖左边的操作数的各个二进制位向左移动―<<‖右边操作数所指定的位数,高位丢弃,低位补0。其值相当于乘以:2―左移位数‖次方。

右移运算符―>>‖实现将―>>‖左边的操作数的各个二进制位向右移动―<<‖右边操作数所指定的位数。

?对于空位的补齐方式,无符号数与有符号数是有区别的。

?对无符号数进行右移时,低位丢弃,高位用0补齐,其值相当于除以:2―右移位数‖次方

?对有符号数进行右移时,根据处理器的不同选择逻辑右移或算术右移

3.volatile限制符在程序中起到什么作用。请举例说明。

答:volatile的本意为―暂态的‖或.―易变的‖,该说明符起到抑制编译器优化的作用。

如果在声明时用―volatile‖关键进行修饰,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供特殊地址的稳定访问。

?例:硬件端口寄存器读取

?Char x=0,y=0,z=0;

?x=ReadChar(0x54000000);//读端口

?y=x;

?x=ReadChar(0x54000000);//再读端口

?z=x;

?以上代码可能被编译器优化为

?Char x=0,y=0,z=0;

?x=ReadChar(0x54000000);//读端口

?y=x;

?z=x;

?为了确保x的值从真实端口获取,声明时应该为

?V olatile char x;

?Char y,z;

4.请分析下列程序代码的执行结果。

#include

main(){

int value=0xFF1;

int *p1,**p2,***p3,****p4;

p1=&value;

p2=&p1;

p3=&p2;

p4=&p3;

printf("****p4=%d\n",****p4);

}

答:程序输出结果为:****p4=4081

5.分析宏定义#define POWER(x) x*x 是否合理,举例说明。如果不合理,应如何更改?答:#define POWER(x) x*x 不合理;对于带参数的宏,其参数应该用括号括起来。

例:如果按照下边方式使用该宏

POWER(2+3) 则宏展开后为2+3*2+3

该宏应修改为:#define POWER(x) (x)*(x)

6.条件编译在程序设计中有哪些用途?

答:条件编译包括了6条预处理指令#ifdef, #ifndef. ##if, #elif, #else, #endif.。条件编译的功能在于对源程序中的一部分内容只有满足某种条件的情况下才进行编译。

7.何为可重入函数?如果使程序具有可重入性,在程序设计中应该注意哪些问题?

答:如果某个函数可以被多个任务并发使用,而不会造成数据错误,我们就说这个函数具有可重入性(reentrant)。

可重入函数可以使用局部变量,也可以使用全局变量。

如果使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护,若不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使得此全局变量变为不可知状态。

8.现有模块module_1, module_2, module_3, 要求在模块module_1中提供可供模块module_2, module_3使用的int型变量xx,请写出模块化程序设计框架。

答:首先在module_1的.c文件中定义int xx;

/*module_1.c*/

int xx=0;

然后在module_1的.h 文件中声明xx为外部变量

/*module_1.h*/

extern int xx;

接下来在module_2源文件中包括module_1的 .h 文件

/*module_2.c*/

#include "module_1.h"

在module_3源文件中包括module_1的 .h 文件

/*module_3.c*/

#include "module_1.h"

这样在module_2, module_3中就可以使用module_1中提供的int型变量xx了。

9.ATPCS 与AAPCS的全称是是什么,它们有什么差别?掌握子程序调用过程中寄存器的使用规则,数据栈的使用规则及参数的传递规则,在具体的函数中能够熟练应用。

答:过程调用标准A TPCS(ARM-Thumb Produce Call Standard)规定了子程序间相互调用的基本规则,ATPCS规定子程序调用过程中寄存器的使用规则、数据栈的使用规则及参数的传递规则。

2007年,ARM公司推出了新的过程调用标准AAPCS(ARM Architecture Produce Call

Standard),它只是改进了原有的A TPCS的二进制代码的兼容性。

10.内嵌式汇编有哪些局限性?编写一段代码采用C语言嵌入式汇编程序,在汇编程序中实现字符串的拷贝操作。

答:内嵌汇编的局限性

(1)操作数

?ARM开发工具编译环境下内嵌汇编语言,指令操作数可以是寄存器、常量或C语言表达式。可以是char、short或int类型,而且是作为无符号数进行操作。

?当表达式过于复杂时需要使用较多的物理寄存器,有可能产生冲突。

?GNU ARM编译环境下内嵌汇编语言ARM开发工具稍有差别,不能直接引用C语言中的变量。

(2)物理寄存器

不要直接向程序计数器PC赋值,程序的跳转只能通过B或BL指令实现。

一般将寄存器R0~R3、R12及R14用于子程序调用存放中间结果,因此在内嵌汇

编指令中,一般不要将这些寄存器同时指定为指令中的物理寄存器。

在内嵌的汇编指令中使用物理寄存器时,如果有C语言变量使用了该物理寄存器,则编译器将在合适的时候保存并恢复该变量的值。需要注意的是,当寄存器SP、

SL、FP以及SB用作特定的用途时,编译器不能恢复这些寄存器的值。

通常在内嵌汇编指令中不要指定物理寄存器,因为有可能会影响编译器分配寄存

器,进而可能影响代码的效率。

(3)标号、常量及指令展开

?C语言程序中的标号可以被内嵌的汇编指令所使用。但是只有B指令可以使用C语言程序中的标号,BL指令不能使用C语言程序中的标号。

(4)内存单元的分配

?内嵌汇编器不支持汇编语言中用于内存分配的伪操作。所用的内存单元的分配都是通过C语言程序完成的,分配的内存单元通过变量以供内嵌的汇编器使用。

?(5)SWI和BL指令

?SWI和BL指令用于内嵌汇编时,除了正常的操作数域外,还必须增加如下3个可选的寄存器列表:

?用于存放输入的参数的寄存器列表。

?用于存放返回结果的寄存器列表。

?用于保存被调用的子程序工作寄存器的寄存器列表。

《ARM嵌入式系统结构与编程》习题答案

第一章绪论

1.国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?

答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。

2.嵌入式系统是从何时产生的,简述其发展历程。

答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。

嵌入式系统的出现最初是基于单片机的。Intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,MCU的性能得到了极大的提升,特别是ARM技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。

3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。

答:主要有嵌入式Linux和嵌入式实时操作内核uC/OS-II

嵌入式Linux操作系统是针对嵌入式微控制器的特点而量身定做的一种Linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。

uC/OS是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

4.举例说明嵌入式设备在工控设备中的应用。

答:由于工业控制系统特别强调可靠性和实时性,“量身定做”的嵌入式控制系统恰能满足工业控制的需求。例如:工业过程控制,数字控制机床,电网设备监测,电力自动控制系统,石油化工监控等。

5.嵌入式技术的发展趋势有哪些?

答:未来嵌入式系统的发展趋势有:1.随着信息化与数字化的发展,嵌入式设备进行网络互联是未来发展的趋势。2.优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本。3.指令集的并行计算技术将引入嵌入式微处理器。4.嵌入式微处理器将会向多核技术发展。5.嵌入式技术将引领信息时代。

第2章ARM技术与ARM体系结构

1.简述ARM处理器内核调试结构原理

答:ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Trace Macro),它是ARM 公司自己推出的调试工具。ARM处理器都支持基于JTAG(Joint Test Action Group 联合测试行动小组)的调试方法。它利用芯片内部的Embedded ICE来控制ARM内核操作,可完成单步调试和断点调试等操作。当CPU处理单步执行完毕或到达断点处时,就可以在宿主机端查看处理器现场数据,但是它不能在CPU运行过程中对实时数据进行仿真。

ETM解决了上述问题,能够在CPU运行过程中实时扫描处理器的现场信息,并数据送往TAP(Test Access Port)控制器。上图中分为三条扫描链(图中的粗实线),分别用来监视ARM核,ETM,嵌入式ICE的状态。

2.分析ARM7TDMI-S各字母所代表的含义。

答:ARM7 T D M I – S 中

ARM是Advanced RISC Machines的缩写

7是系列号;

T:支持高密度16位的Thumb指令集;

D:支持JTAG片上调试;

M:支持用于长乘法操作(64位结果)ARM指令,包含快速乘法器;;

I:带有嵌入式追踪宏单元ETM,用来设置断点和观察点的调试硬件;

S:可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以编译成一种易于EDA工具使用的形式。

3.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处

理器在什么情况下进入相应的模式。

答:ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。

?1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下

执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式

?2.FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先

级(fast)中断产生时将会进入这种模式。

?3.IRQ模式:也称为普通中断模式,:当一个低优先级(normal)中断产生时将会进入

这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。

?4.SVC模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指

令执行时处理器将进入这种模式。

?5.中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存

储或存储保护。

?6.未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未

定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。

?7.系统模式:使用和User模式相同寄存器组的特权模式,用来运行特权级的操作

系统任务。

?在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,

在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。

?在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式,每种

异常都对应有自己的异常处理入口点。

4.分析程序状态寄存器(PSR)各位的功能描述,并说明C,Z,N,V在什么情况下进行置位

和清零。

答:

?条件位:

?N = 1-结果为负, 0-结果为正或0

?Z = 1-结果为0, 0-结果不为0

? C =1-进位,0-借位

?V =1-结果溢出,0结果没溢出

?Q 位:

?仅ARM 5TE/J架构支持

?指示增强型DSP指令是否溢出

?中断禁止位:

?I = 1: 禁止IRQ.

? F = 1: 禁止FIQ.

?T Bit

?仅ARM xT架构支持

?T = 0: 处理器处于ARM 状态

?T = 1: 处理器处于Thumb 状态

?Mode位(处理器模式位):

?0b10000 User

?0b10001 FIQ

?0b10010 IRQ

?0b10011 Supervisor

?0b10111 Abort

?0b11011 Undefined

?0b11111 System

5.简述ARM处理器异常处理和程序返回的过程。

答:只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM7TDMI内核保存当前的处理器状态,这样当处理程序结束时可以恢复执行原来的程序。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。

在异常发生后,ARM7TDMI内核会作以下工作:

1.在适当的LR中保存下一条指令的地址

2.将CPSR复制到适当的SPSR中;

3. 将CPSR模式位强制设置为与异常类型相对应的值;

4.强制PC从相关的异常向量处取指。

ARM7TDMI内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。

当异常结束时,异常处理程序必须:

1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;

2.将SPSR的值复制回CPSR;

3.清零在入口置位的中断禁止标志。

注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。

6.ARM处理器字数据的存储格式有哪两种?并指出这两种格式的区别。

答:ARM7TDMI处理器可以将存储器中的字以下列格式存储

?大端格式(Big-endian)

?小端格式(Little-endian)

?小端存储器系统:

在小端格式中,高位数字存放在高位字节中。因此存储器系统字节0连接到数据线

7~0。

大端存储器系统:

在大端格式中,高位数字存放在低位字节中。因此存储器系统字节0连接到数据线31~24。

7.分析带有存储器访问指令(LDR)的流水线运行情况,并用图示说明流水线的运行机制。答:存储器访问指令LDR 流水线举例

取指的存储器访问和执行的数据路径占用都是不可同时共享的资源,对于多周期指令来说,如果指令复杂以至于不能在单个时钟周期内完成执行阶段,就会产生流水线阻塞。

对存储器的访问指令LDR是非单周期指令

LDR指令的执行,访问存储器,回写寄存器(占用了3个周期)。造成了MOV指令的执行被阻断。

8.简述ARM9的5级流水线每一级所完成的功能和实现的操作。

答:ARM920在指令操作上采用5级流水线.

取指:从指令Cache中读取指令。

译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。

执行:进行ALU运算和移位操作,如果是对存储器操作的指令,则在ALU中计算出要访问的存储器地址。

存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache)。

寄存器回写:将指令运算或操作结果写回到目标寄存器中。

9.什么叫流水线互锁?应如何来解决,举例说明。

答:互锁:当前指令的执行需要前面指令的执行结果,但前面的指令没有执行完毕,引起流水线的等待。互锁发生时,硬件会停止指令的执行,直到数据准备好。

上边程序中ORR指令执行时需要使用LDR指令加载后的R4寄存器,因此造成了ORR指令的等待。

编译器以及汇编程序员可以通过重新设计代码的顺序或者其他办法来减少互锁的数量。

第3章ARM指令集寻址方式

1.在指令编码中,条件码占几位,最多有多少个条件,各个条件是如何形成的?

答:条件码占4位,最多有15个条件

2. 指令条件码中,V标志位在什么情况下才能等于1?

答:V—溢出标志位

对于加减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1表示符号

位溢出,其他指令通常不影响V 位。

3. 在ARM 指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是8位常数和4位移位数) 0x5430 0x108 0x304 0x501 0xfb10000 0x334000 0x3FC000 0x1FE0000 0x5580000 0x7F800 0x39C000 0x1FE80000

答:立即数必须由1个8位的常数通过进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即一个8位的常数通过循环右移2*rotate_4位(即0,2,4,。。。30)得到 0X5430

0000,0000,0000,0000,0101,0100,0011,0000 非法立即数 0X108

0000,0000,0000,0000,0000,0001,0000,1000 0x42循环右移30位 (rotate_4=0xF ) 0X304

0000,0000,0000,0000,0000,0011,0000,0100 0xC1循环右移30位 (rotate_4=0xF ) 0x501

0000,0000,0000,0000,0000,0101,0000,0001 非法立即数 0xfb10000

0000,1111,1011,0001,0000,0000,0000,0000 非法立即数 0x334000

0000,0000,0011,0011,0100,0000,0000,0000 0Xcd 循环右移18位(rotate_4=0x9) 0x3FC000

0000,0000,0011,1111,1100,0000,0000,0000 0XFF 循环右移18位(rotate_4=0x9) 0x1FE0000

0000,0001,1111,1110,0000,0000,0000,0000 非法立即数 0x5580000

0000,0101,0101,1000,0000,0000,0000,0000 非法立即数 0x7F800

0000,0000,0000,0111,1111,1000,0000,0000 非法立即数 0x39C000

0000,0000,0011,1001,1100,0000,0000,0000 0XE7循环右移18位(rotate_4=0x9) 0x1FE80000

0001,1111,1110,1000,0000,0000,0000,0000 非法立即数

4.分析逻辑右移,算术右移,循环右移,带扩展的循环右移它们间的差别。 答:LSL 逻辑左移 :

LSR 逻辑右移 :

ASR 算术右移 :

31

31

ROR 循环右移 :

RRX 带扩展的循环右移:

5.ARM 数据处理指令具体的寻址方式有哪些,如果程序计数器PC 作为目标寄存器,会产生什么结果?

答:数据处理指令寻址方式具体可分为5种类型:

1)第二操作数为立即数2)第二操作数为寄存器3)第二操作数为寄存器移位方式且移位的位数为一个5位立即数4)第二操作数为寄存器移位方式且移位数值放在寄存器中5)第二操作数位寄存器进行RRX 移位得到。如果PC (R15)用作目标寄存器,指令会产生不可预知的结果。

6.在Load/Store 指令寻址中,字,无符号字节的Load/Store 指令寻址和半字,有符号字节寻址,试分析它们之间的差别。 答:在Load/Store 指令寻址中,

字,无符号字节的Load/Store 指令寻址中共有以下3种内存地址构成格式:

1)Addressing_mode 中的偏移量为立即数 2)Addressing_mode 中的偏移量为寄存器的值 3)Addressing_mode 中的偏移量通过寄存器移位得到

半字,有符号字节的Load/Store 指令寻址中共有以下2种内存地址构成格式:

1)Addressing_mode 中的偏移量为立即数 2)Addressing_mode 中的偏移量为寄存器的值

7.块拷贝Load/Store 指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。

答:批量Load/Store 指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有以下4种类型:

? 后增IA (Increment After) :每次数据传送后地址加4; ? 先增IB (Increment Before) :每次数据传送前地址加4 ; ? 后减DA (Decrement After) :每次数据传送后地址减4 ; ? 先减DB (Decrement Before) :每次数据传送前地址减4 ;

8.栈操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作指令寻址和块拷贝Load/Store 指令之间的对应关系。

答:根据堆栈指针的指向位置不同和堆栈的生长方向不同,共有4种类型的堆栈工作方式: 满递增堆栈FA :堆栈指针指向最后压入的数据,且由低地址向高地址生成。 满递减堆栈FD :堆栈指针指向最后压入的数据,且由高地址向低地址生成。

空递增堆栈EA :堆栈指针指向下一个要放入数据的空位置,且由低地址向高地址生成。

31

31

空递减堆栈ED:堆栈指针指向下一个要放入数据的空位置,且由高地址向低地址生成。

9.分析协处理器加载/存储指令的寻址方式种的内存地址索引格式中不同的汇编语法格式下内存地址的计算方法。

答:协处理器加载/存储指令的寻址方式种的内存地址索引格式中,索引格式类似于LDR/STR 指令寻址中的立即数作为地址偏移量的形式。Addressing_mode中的偏移量为8位立即数的汇编语法格式有以下3种:

?前变址不回写形式:[,#+/-*4 ]

第一个内存地址编号为基地址寄存器Rn值加上/减去imm_offset8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。

?前变址回写形式:[,#+/-*4]!

第一个内存地址编号为基地址寄存器Rn值加上/减去imm_offset8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。当指令执行时,生成的地址值将写入基址寄存器。

?后变址回写形式:[],#+/-*4

内存地址为基址寄存器Rn的值,当存储器操作完成后,将基地址寄存器Rn值加上/减去imm_offset8的4倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。最后将Rn值加上/减去imm_offset8的4倍写回到基址寄存器Rn(更新基地址寄存器)。

10.写出下列指令的机器码,并分析指令操作功能。

MOV R0,R1

MOV R1,,0X198

ADDEQS R1,R2,,0xAB

CMP R2,#0Xab

LDR R0,[R1,#4]

STR R0,[R1,R1,LSL #2]!

LDRH R0,[R1,#4]

LDRSB R0,[R2,#-2]!

STRB R1,[R2,#0Xa0]

LDMIA R0,{R1,R2,R8}

STMDB R0!,{R1-R5,R10,R11}

STMED SP!{R0-R3,LR}

答:机器码部分略。

MOV R0,R1 ;R0《-----R1

MOV R1,,0X198 ;R0《----0X198

ADDEQS R1,R2,,0xAB ;当Z=1时,R1《---R2+0xAB 并影响标志位

CMP R2,#0Xab ;R2-0xAB,并影响标志位

LDR R0,[R1,#4] ;R0《---【R1+4】

STR R0,[R1,R1,LSL #2]! ;【R1+R1*4】《---R0,R1=R1+R1*4

LDRH R0,[R1,#4] ;R0《---【R1+4】半字,R0的高16位清零

LDRSB R0,[R2,#-2]! ;R0《---【R2-2】字节,R0有符号扩展为32位,R2=R2-2 STRB R1,[R2,#0Xa0] ;【R2+0Xa0】《----R1低8位,

LDMIA R0,{R1,R2,R8}

;将内存单元【R0】~【R+11】以字为单位读取到R1,R2,R8中

STMDB R0!,{R1-R5,R10,R11}

将寄存器R1~R5,R10,R11的值以字为单位依次写入【R0】中,每写一个字之前R0=R0-4 STMED SP!{R0-R3,LR}

将寄存器R0~R3,LR的的值以字为单位依次写入【SP】中,每写一个字之后SP=SP-4

第4章ARM指令集系统

1.ARM指令可分为哪几类?说出哪几条指令是无条件执行的。

答:ARM微处理器的指令集可以分为:数据处理指令,分支指令,加载/存储指令,批量加载/存储指令,交换指令,程序状态寄存器(PSR)处理指令,协处理器操作指令和异常产生指令八大类。

几乎所有的ARM指令都是可以有条件执行的。带链接和状态切换的跳转指令BLX,当目标地址由程序标号给出时,即:BLX

由于指令码中是没有条件编码位的,所以指令是无条件执行的。

2.如何实现两个64位数的加法操作,如何实现两个64位数的减法操作,如何求一个64位数的负数?

答:1)使用ADC实现64位加法,结果存于R1、R0中:

ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位

ADC R1,R1,R3 ;R1等于高32位相加,并加上低位进位

2)使用SBC实现64位减法,结果存于R1、R0中:

SUBS R0,R0,R2 ; 低32位相减,并影响标志位

SBC R1,R1,R3 ;高32位相减,并减去低位借位

3)使用RSC指令实现求64位数值的负数:

RSBS R2,R0,#0

RSC R3,R1,#0

3.写出LDRB指令与LDRSB指令的二进制编码格式,并指出它们之间的区别。

答:LDRB指令的二进制编码格式:

LDRSB指令的二进制编码格式:

LDRB指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用零扩展。

LDRSB指令用于将内存中的一个8位字节数据读取到指令中的目标寄存器的低8位中,寄存器的高24位用符号位扩展。

4.分析下列每条语句的功能,并确定程序段所实现的操作。

CMP R0,,0

MOVEQ R1,,0

MOVGT R1,,1

答:CMP R0,,0 ;比较R0与0的大小

MOVEQ R1,,0 ;若R0==0,则R1=0

MOVGT R1,,1 ;若R0>0,则R1=1

5.请使用多种方法实现将字数据0xFFFFFFFF送入寄存器R0

答:1)MVN R0,#0

2)MOV R0,#1

RSB R0,R0,#0

6.写一条ARM指令,分别完成下列操作:

(1)R0=16

(2)R0=R1/16

(3)R1=R2*3

(4)R0=-R0

答:

(1)R0=16 MOV R0,#16

(2)R0=R1/16 MOV R0,R1,LSR #4

(3)R1=R2*3 MOV R3,#3 MUL R1,R2,R3

(4)R0=-R0 RSB R0,R0,#0

7.编写一个ARM汇编程序,累加一个队列中的所有元素,碰到0时停止。结果放入R4。答:假设队列为地址从R0开始递增的字队列:

LOOP

LDR R1, [R0,#4]!

MOVS R2, R1

BEQ END

ADD R4,R4,R2

B LOOP

END

8.写出实现下列操作的ARM指令:

当Z=1时,将存储器地址为R1的字数据读入寄存器R0.

当Z=1时,将存储器地址为R1+R2的字数据读入寄存器R0

将存储器地址为R1-4的字数据读入寄存器R0。

将存储器地址为R1+R6的字数据读入寄存器R0,并将新地址R1+R6写入R1。

答:1)LDREQ R0, [R1]

2)LDREQ R0, [R1,R2]

3)LDR R0, [R1,#-4]

4)LDR R0, [R1,R6]!

9.写出下列ARM指令所实现的操作:

LDR R2,[R3,#-4]!

LDR R0,[R0],R2

LDR R1,[R3,R2,LSL #2]!

LDRSB R0,[R2,#-2]!

STRB R1,[R2,,0xA0]

LDMIA R0,{R1,R2,R8}

STMDB R0!,{R1-R5,R10,R11}

答:LDR R2,[R3,#-4]! ;R2<-[R3-4], R3=R3-4

LDR R0,[R0],R2 ;R0<-[R0], R0=R0+R2

LDR R1,[R3,R2,LSL #2]! ;R1<-[R3+R2*4], R3=R3+R2*4

LDRSB R0,[R2,#-2]!

;R0低8位<-[R2-2]字节数据,,R0高24位符号扩展,R2=R2-2

STRB R1,[R2,#0xA0]

R1低8位->【R2+0xA0】

LDMIA R0,{R1,R2,R8}

从地址R0开始的内存中依次读取字数据,送入寄存器R1,R2,R8

STMDB R0!,{R1-R5,R10,R11}

将寄存器R11,R10,R5-R1的字数据,依次写入地址R0中,每次写入前R0=R0-4

10.SWP指令的优势是什么?

答:SWP指令支持原子操作,它能在一条指令中完成存储器和寄存器之间的数据交换。

11.如何用带PSR操作的批量字数据加载指令实现IRQ中断的返回?

答:在进入IRQ中断处理程序时,首先计算返回地址,并保存相关的寄存器?SUB R14,R14,#4 ;

?STMFD R13!, {R0-R3, R12, LR}

如果IRQ中断处理程序返回到被中断的进程则执行下面的指令。该指令从数据栈中恢复寄存器R0~R3及R12的值,将返回地址传送到PC中,并将SPSR_irq值复制到CPSR

?LDMFD R13!, {R0-R3, R12, PC}^

12.用ARM汇编语言编写代码,实现将ARM处理器切换到用户模式,并关闭中断。

答:

;禁能IRQ中断

MRS R0 CPSR

ORR R0, R0,#0x80

MSR CPSR, R0

;切换到用户模式

MRS R0 CPSR

BIC R0, #0x0F

MSR CPSR, R0

第5章Thumb指令

1.与32位的ARM指令集相比较,16位的Thumb指令集具有哪些优势?

答:在ARM体系结构中,ARM指令集是32位的,具有很高的执行效率。但是对于嵌入式而言,其存储空间极其有限,由于每条ARM指令都要占用4个字节,对存储空间的要求较高。为了压缩代码的存储,增加代码存储密度,ARM公司设计了16位的Thumb指令。Thumb 代码所需的存储空间约为ARM代码的60%~70%。

2.Thumb指令可分为哪几类?Thumb指令有条件执行指令吗,如果有请说明哪些指令是条件执行的。

答:Thumb指令可分为数据处理指令,存储器操作指令,分支指令,软中断指令。Thumb指令集只有一条分支指令是有条件的,其余所有指令都是无条件的;

B{cond} label

3.分析下面的Thumb指令程序代码,指出程序所完成的功能。

.global _start

.text

.equ num 20

_start:

MOV SP,#0x400

ADR R0,Thumb_start+1

BX R0

.thumb

Thumb_start:

ASR R2,R0,#31

EOR R0,R2

SUB R3,R0,R2

stop:

B stop

.end

答:上述代码首先将处理器状态切换到Thumb状态,

ASR R2,R0,#31 ; 用R0的符号位填充R2

EOR R0,R2 ;如果R0为正数,则R0不变;如果R0为负数,则R0取反SUB R3,R0,R2 ;R0-R2->R3 (R2为全零或全1)

4.在Thumb状态中,用多种方法实现将寄存器R0中的数据乘以10

答:1)MOV R1,#10

MUL R0,R1

2) LSL R1,R0,#3

LSL R2,R0,#1

ADD R0,R1,R2

5.带链接的分支指令BL提供了一种在Thumb状态下程序间相互调用的方法,当从子程序返回时,可以采用哪种返回方式?

答:通常使用下面的方式之一:

MOV PC, LR

BX LR

POP {PC} ;需要在子程序中使用PUSH {LR}

6.指出下列的Thumb程序代码所完成的功能:

ASR R0,R1,#31

EOR R1,R0

SUB R1,R0

答:ASR R0,R1,#31 ;用R1的符号位填充R0

EOR R1,R0 ;如果R1为正数,则R1不变;如果R1为负数,则R1取反SUB R1,R0 ;R1-R0->R1 (R0为全零或全1)

第6章ARM汇编伪指令与伪操作

1.在ARM汇编语言程序设计中,伪操作与伪指令的区别是什么?

答:伪指令是ARM处理器支持的汇编语言程序里的特殊助记符,它不再处理器运行期间由机器执行,只是在汇编时被合适的机器指令代替成ARM或Thumb指令,从而实现真正的指令操作。

伪操作是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为了完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。也就是说,这些伪操作只是在汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。

2.分析ARM汇编语言伪指令LDR,ADRL,ADR的汇编结果,说明它们之间的区别。

答:LDR伪指令将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。如果加载的常数符合MOV或MVN指令立即数的要求,则用MOV或MVN 指令替代LDR伪指令。如果加载的常数不符合MOV或MVN指令立即数的要求,汇编器将常量放入内存文字池,并使用一条程序相对偏移的LDR指令从内存文字池读出常量。

ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址。在汇编编译器编译源程序时,ADRL 伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。

ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。

3.在ADS编译环境下,写出下列操作的伪操作:

(1)声明一个局部的算术变量La_var 并将其初始化0;

(2)声明一个局部的逻辑变量Ll_var 并将其初始化FALSE;

(3)声明一个局部的字符串变量Ls_var 并将其初始化空串;

(4)声明一个全局的逻辑变量Gl_var 并将其初始化FALSE;

(5)声明一个全局的字符串变量Gs_var 并将其初始化空串;

(6)声明一个全局的算术变量Ga_var 并将其初始化0xAA;

(7)声明一个全局的逻辑变量Gl_var 并将其初始化TRUE;

(8)声明一个全局的字符串变量Gs_var 并将其初始化“CHINA”;

答:

(1)声明一个局部的算术变量La_var 并将其初始化0;

LCLA La_var

(2)声明一个局部的逻辑变量Ll_var 并将其初始化FALSE;

LCLL Ll_var

(3)声明一个局部的字符串变量Ls_var 并将其初始化空串;

LCLS Ls_var

(4)声明一个全局的逻辑变量Gl_var 并将其初始化FALSE;

GCLL Gl_var

(5)声明一个全局的字符串变量Gs_var 并将其初始化空串;

GCLS Gs_var

(6)声明一个全局的算术变量Ga_var 并将其初始化0xAA;

GCLA Ga_var

Ga_ var SETA 0xAA

(7)声明一个全局的逻辑变量Gl_var 并将其初始化TRUE;

GCLL Gl_var

Gl_ var SETL TRUE

(8)声明一个全局的字符串变量Gs_var 并将其初始化“CHINA”;

GCLS Gs_var

Gs_ var SETS "CHINA"

4.用ARM开发工具伪操作将寄存器列表R0-R5,R7,R8的名称定义为Reglist。

答:Reglist RLST {R0-R5,R7,R8}

5.完成下列数据定义伪操作:

(1)申请以data_buffer1为起始地址的连续的内存单元,并依次用半字数据0x11,0x22,0x33,0x44,0x55进行初始化;

(2)申请以Str_buffer为起始地址的连续的内存单元,并用字符串“ARM7 and ARM9”进行初始化;

答:(1) data_buffer1 DCW 0x11,0x22,0x33,0x44,0x55

(2) Str_buffer DCB “ARM7 and ARM9”

6.定义一个结构化的内存表,其首地址固定为0x900,该结构化内存表包含2个域,Fdatal 长度为8个字节,Fdata2长度为160个字节。

答:MAP 0x900

Fdata1 FIELD 8

Fdata2 FIELD 160

7.在GNU-ARM编译环境下,写出实现下列操作的伪操作:

(1)分配一段字节内存单元,并用57,0x11,031,'Z',0x76进行初始化;

(2)分配一段半字内存单元,并用0xFFE0,0xAABB,0x12进行初始化;

(3)分配一段字内存单元,并用0x12345678,0xAABBCCDD进行初始化;

(4)分配一段内存单元,并用长为8字节的数值0x11填充100次;

答:

(1)分配一段字节内存单元,并用57,0x11,031,'Z',0x76进行初始化;

.byte 57,0x11,031,'Z',0x76

(2)分配一段半字内存单元,并用0xFFE0,0xAABB,0x12进行初始化;

.hword 0xFFE0,0xAABB,0x12

(3)分配一段字内存单元,并用0x12345678,0xAABBCCDD进行初始化;

.word 0x12345678,0xAABBCCDD

(4)分配一段内存单元,并用长为8字节的数值0x11填充100次;

.fill 100 , 8, 0x11

8.写出与GNU-ARM编译环境下伪操作.arm , .thumb 功能相同的ARM标准开发工具编译环境下的伪操作。

答:.arm 对应ARM 或CODE32

.thumb 对应THUMB 或CODE16

第7章汇编语言程序设计

1.分别写出ARM集成开发环境下ARM汇编语句格式与GNU ARM环境下ARM汇编语句通用格式,并分析它们的区别。

答:ADS环境下ARM汇编语句格式如下:

?{symbol} {instruction} {;comment}

?{symbol} {directive} {;comment}

?{symbol} { pseudo-instruction} {;comment}

?Symbol :标号(地址)

?Instruction :指令(ARM/Thumb)

?Directive :伪操作

?pseudo-instruction:伪指令

GNU环境下ARM汇编语言语句格式如下:

?{label :} {instruction} {@comment}

?{label :} {directive} {@comment}

?{label :} { pseudo-instruction} {@comment}

2.局部标号提供分支指令在汇编程序的局部范围内跳转,它的主要用途是什么,并举一实例加以说明。

答:局部标号

?局部标号的语法格式如下:

?n {routname} (0~99)

?被引用的局部标号语法规则是:

?% {F∣B} {A∣T} n {routname}

?其中:

?n是局部标号的数字号。(0~99)

?routname是当前局部范围的名称。

?%表示引用操作。

?F指示汇编器只向前搜索。

?B指示汇编器只向后搜索。

?A指示汇编器搜索宏的所有嵌套层次。

?T指示汇编器搜索宏的当前层次。

?局部标号提供分支指令在汇编程序在局部范围内的跳转

3.先对内存地址0xB000开始的100个字内存单元填入0x10000001~0x10000064字数据,然后将每个字单元进行64位累加,结果保存于【R9:R8】(R9中存放高32位)。

答:解:先对内存地址0xB000开始的100个字内存单元填入0x10000001~0x10000064字数据,然后将每个字单元进行64位累加,结果保存于【R9:R8】(R9中存放高32位)。

在ARM集成开发环境下编程:

/*----------------------------------------------------------------------------------------

********寄存器使用说明************************

***R0:存放地址值

***R2:递减计数器

***R9:64位递加结果的高32位

***R8:64位递加结果的低32位

*---------------------------------------------------------------------------------------------*/

AREA Fctrl,CODE,READONL Y ;声明代码段Fctrl

ENTRY ;标识程序入口

CODE32 ;声明32位ARM指令

START

MOV R0,#0xB000 ;初始化寄存器

MOV R1,#0x10000001

MOV R2,#100

loop_1 ;第一次循环赋值

STR R1,[R0],#4

ADD R1,R1,#1

嵌入式系统模拟试题及答案

学习中心/函授站_ 姓名学号 西安电子科技大学网络与继续教育学 院 2014学年下学期 《嵌入式系统》期末考试试题 (综合大作业) 题号一二三四五总分 题分2010302020 得分 考试说明: 1、大作业于2014年12月25日下发,2015年1月10日交回; 2、考试必须独立完成,如发现抄袭、雷同均按零分计; 3、答案须手写完成,要求字迹工整、卷面干净。 一、问题简述(每小题4分,共20分) 1、简述嵌入式系统的定义和组成结构。 答:嵌入式系统是以应用为中心,以计算机技术为基础,并软硬件可剪裁、功能、 ,可靠性、体积、重量、成本、功耗、成本、安装方式等方面符合要求的专用计算机系统。 嵌入式系统一般由嵌入式微处理器、存储与I/O部分、外设与执行部分、嵌入式软件等四个部分组成。 2、简单说明ARM微处理器的特点。 答:(1) 体积小、低功耗、低成本、高性能。 (2) 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼 容8位/16位器件。

(3) 大量使用寄存器,指令执行速度更快。 (4) 大多数数据操作都在寄存器中完成,通过Load/Store结 构在内存和寄存器之间批量传递数据。 (5) 寻址方式灵活简单,执行效率高。 (6) 指令长度固定。 3、简述嵌入式系统产品的设计和开发过程。 答:①在嵌入式系统的开发过程中,一般采用的方法是首先在通用PC机上的集成开发环境中编程;②然后通过交叉编译和链接,将程序转换成目标平台(嵌入式系统)可以运行的二进制代码;③接着通过嵌入式调试系统调试正确;④最后将程序下载到目标平台上运行。 要强调,选择合适的开发工具和调试工具,对整个嵌入式系统的开发都非常重要。 4、简述嵌入式系统设计中要考虑的因素。 答:在嵌入式系统的开发过程中,要考虑到实时性、可靠性、稳 定性、可维护性、可升级、可配置、易于操作、接口规范、抗干 扰、物理尺寸、重量、功耗、成本、开发周期等多种因素。 5、什么是BootLoader,了解其在嵌入式系统中作用。 答:就是启动载入或引导加载又叫自举装载。由于系统加电后需 要首先运行BootLoader这段程序,因此它需要放在系统加电后 最先取指令的地址上。嵌入式处理器的生产厂商都为其处理器预 先安排了一个在系统加电或复位后最先取指令的地址。 二、名词解释(每小题2分,共10分) 1、DSP(Digital Signal Processor),数字信号处理器,一种特别用于快速处理数字信号的微处理器。DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。 2、RTOS Real Time Operating System. 译为实时操作系统。实时系统是指一个能够在指定的或者确定的时间内,实现系统功能和对外部或内部、同步或异步事件作出响应的系统。 3、BSP设计板级支持包(BSP)的目的主要是为驱动程序提供访问硬件设备寄存器的函数包,从而实现对操作系统的支持。类似于PC机上的BIOS,是一个承上启下的软件层次。由嵌入OS和用户开发相结合取得。BSP一般是在嵌入式系统上固化存放。 4、总线竞争就是在同一总线上,同一时刻,有两个以上器件要通

嵌入式系统期末考试试卷 习题

1.下面哪一种工作模式不属于ARM特权模式(A)。 A.用户模式B.系统模式C.软中断模式D.FIQ模式 2.ARM7TDMI的工作状态包括( D )。 A.测试状态和运行状态B.挂起状态和就绪状态 C.就绪状态和运行状态D.ARM状态和Thumb状态 3.下面哪个Linux操作系统是嵌入式操作系统( B )。 A.Red-hat Linux B.uclinux C.Ubuntu Linux D.SUSE Linux 4.使用Host-Target联合开发嵌入式应用,( B )不是必须的。 A.宿主机B.银河麒麟操作系统 C.目标机D.交叉编译器 5.下面哪个不属于Linux下的一个进程在内存里的三部分的数据之一(A)。 A.寄存器段B.代码段 C.堆栈段D.数据段 选择题(共5小题,每题2分,共10分) 1.下面哪个系统属于嵌入式系统( D )。 A.“天河一号”计算机系统B.IBMX200笔记本电脑 C.联想S10上网本D.Iphone手机 2.在Makefile中的命令必须要以(A)键开始。 A.Tab键B.#号键 C.空格键D.&键 3.Linux支持多种文件系统,下面哪种不属于Linux的文件系统格式( B )。 A.Ext B.FA T32 C.NFS D.Ext3 4.下面哪种不属于VI三种工作模式之一( D )。 A.命令行模式B.插入模式 C.底行模式D.工作模式 5.下面哪一项不属于Linux内核的配置系统的三个组成部分之一( C )。 A.Makefile B.配置文件(config.in) C.make menuconfig D.配置工具 1.人们生活中常用的嵌入式设备有哪些?列举4个以上(1) 手机,(2) 机顶盒,(3) MP3,(4) GPS。(交换机、打印机、投影仪、无线路由器、车载媒体、PDA、GPS、智能家电等等。) 2.ARM9处理器使用了五级流水线,五级流水具体指哪五级:(5) 取指,(6) 译码,(7) 执行,(8) 缓冲/数据,(9) 回写。 3.在Makefile中的命令必须要以(10) Tab 键开始。 4.Linux支持多种文件系统,主要包括哪些(写出其中4中就行)(11) Ext,(12) VFA T,(13) JFS,(14) NFS。(JFS、ReiserFS、Ext、Ext2、Ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等) 5.VI的工作模式有哪三种:(15) 命令行模式,(16) 插入模式,(17) 底行模式。

嵌入式复习思考题(1)答案

嵌入式复习思考题及答案(1) 一、简答题 1、ARM9有哪几种工作模式?其中哪几种属于特权模式?哪几种属于几种异常模式? 答:有用户、系统、管理、中止、未定义、普通中断、快速中断。系统、管理、中止、未定义、普通中断、快速中断属于特权模式。管理、中止、未定义、普通中断、快速中断属于几种异常模式。 2、ARM9有哪2种工作状态?各自特点?实现状态切换指令的是什么? 答:ARM状态与Thumb状态。ARM状态指令是32位;Thumb状态指令是16位。切换指令是BX。 3、简述ARM9在不同工作模式下寄存器分布情况(用图表说明)。R13、R1 4、R15的固定用途;CPRS和SPRS名称及功能。 答:R13常作为堆栈指针SP、R14作为链接寄存器LR、R15作为程序计数器PC。CPRS是当前程序状态寄存器,包含条件代码、中断禁止位、当前处理器模式以及其他状态和控制信息。SPRS是程序状态保存寄存器,异常出现时用于保存CPRS的状态。 4 5 答:响应过程:1、将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14中; 2、将CPSR的内容保存到将要执行的异常中断对应的SPSR中; 3、根据异常类型CPSR中的运行模式位; 4、将相应的矢量地址赋值给PC,开始执行异常处理程序。还可设中断禁止位。 返回过程: 1、将连接寄存器LR的值减去相应的偏移量后送到PC中; 2、将SPSR内容送回CPSR; 3、若在进入异常处理时设置了中断禁止位,要在此清除。 6、写出ARM9支持的寻址方式,各举一例。 答:略 7、写出指令LDRB/LDRH/LDR的区别。 答:LDRB将内存单元一个字节的数据扩展到32位装载到寄存器; LDRH将内存单元半字(两个字节)的数据扩展到32位装载到寄存器; LDR 将内存单元一个字的数据装载到寄存器。 8、写出LDM、STM指令用于数据块拷贝时对应的4种后缀以及用于堆栈操作对应的4种后缀。 解释各自的执行过程。 答:数据块拷贝后缀:IA操作后指针增;DA操作后指针减; IB操作前指针增;DB操作前指针减。 堆栈操作后缀:FD满递减;ED空递减;FA满递增;EA空递增。 9、ARM和Thumb两种状态下各自堆栈的生成方式有何不同?写出各自对应的入栈、出栈指令。答:ARM堆栈有4种生成方式满递增、满递减、空递增、空递减; 入栈指令:STM(FD\ED\FA\EA 4种后缀之一)出栈指令:LDM(FD\ED\FA\EA 4种后缀之一)Thumb堆栈采用满递减的生成方式。入栈指令:PUSH . 出栈指令:POP 10、写出条件代码NE、EQ的判断条件。 答:NE Z=0 (不相等);EQ Z=1 (相等) 11、B、BL及BX指令有何区别?写出无嵌套的子程序调用及返回指令。 答:B是简单的转移指令,实现向目的地址的简单的跳转;

arm9嵌入式课后答案

arm9嵌入式课后答案 【篇一:arm嵌入式系统结构与编程习题答案(全)】ass=txt>第一章绪论 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。 2.嵌入式系统是从何时产生的,简述其发展历程。 答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。 嵌入式系统的出现最初是基于单片机的。intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,mcu的性能得到了极大的提升,特别是arm技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。 3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式linux和嵌入式实时操作内核uc/os-ii 嵌入式linux操作系统是针对嵌入式微控制器的特点而量身定做的一种linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。 uc/os是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

嵌入式系统试题闭卷及答案

《嵌入式系统》试题 闭卷答题时间:30分钟 一、填空题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、一般而言,嵌入式系统的构架可以分为4个部分:分别是()、存储器、输入/输出和软件,一般软件亦分为操作系统相关和()两个主要部分。 2、根据嵌入式系统使用的微处理器,可以将嵌入式系统分为嵌入式微控制器,(),()以及片上系统。 3、操作系统是联接硬件与应用程序的系统程序,其基本功能有()、进程间通信、()、I/O资源管理。 4、从嵌入式操作系统特点可以将嵌入式操作系统分为()和分时操作系统,其中实时系统亦可分为()和软实时系统。 5、内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的(),内核的基本服务是()。 6、嵌入式开发一般采用()方式,其中宿主机一般是指()。 7、哈佛体系结构数据空间和地址空间(),ARM7TDMI采用()的内核架构,ARM920T采用()的内核架构。 采用()级流水线结构,ARM920TDMI采用()级流水线。 9.按操作系统的分类可知,Dos操作系统属于顺序执行操作系统,Unix 操作系统属于()操作系统,VxWorks属于()操作系统。 10、ARM7TDMI中,T表示支持16位Thumb指令集,D表示(),M表示内嵌乘法器Multiplier,I表示(),支持在线断点和调试。 二、选择题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。() (A)处理器的编译器能够产生可重入代码(B)在程序中可以找开或者关闭中断(C)处理器支持中断,并且能产生定时中断(D)有大量的存储空间 2、下面哪种操作系统最方便移植到嵌入式设备中。() (A)DOS (B)unix (C)Windowsxp (D)linux 3、下面哪个选项不是SUB设备的特点。() (A)串行通信方式(B)不可热拨插 (C)分HOST、DEVICE和HUB (D)通信速率比RS232快 4、下面哪种嵌入式操作系统很少用于手机终端设备上。() (A)Symbian (B)WinCE (C)uc/os (D)linux 5、以下哪项关于SRAM和DRAM的区别是不对。() (A)SRAM比DRAM慢(B)SRAM比DRAM耗电多 (C)DRAM存储密度比SRAM高得多(D)DRM需要周期性刷新 6、uc/os操作系统不包含以下哪几种状态。() (A)运行(B)挂起 (C)退出(D)休眠 7、0x07&0x11的运算结果是。() (A)0x01 (B)0x11 (C)0x17 (D)0x07 8、以下哪种方式不是uc/os操作系统中任务之间通信方式。() (A)信号量(B)消息队列 (C)邮件(D)邮箱 9、以下哪种方式不是文件系统的格式。() (A)FAT (B)DOS (C)NTFS (D)Ext 10、在将uc/os操作系统移植到ARM处理器上时,以下哪些文件不需要修改。() (A) (B) (C) (D)OSTaskInit 三、判断题:共5小题,每小题2分,满分10分。 1、所有的电子设备都属于嵌入式设备。() 2、冯诺依曼体系将被哈佛总线所取代。() 3、嵌入式linux操作系统属于免费的操作系统。() 4、移植操作系统时需要修改操作系统中与处理器直接相关的程序。() 5、的最大通信速率为12M/S。() 简答题:共2小题,每小题10分,满分20分。 1、根据嵌入式系统的特点,写出嵌入式系统的定义。 2、试分析实时操作系统的工作状态特点及相互之间的转换。

嵌入式习题答案

嵌入式习题答案Last revision on 21 December 2020

第一章习题答案 1.什么是嵌入式系统请列举几个常见的嵌入式系统。 答:根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是控制、监视或者辅助设备、机器和生产线运行的装置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。这主要是从产品的应用角度加以定义的,由此可以看出嵌入式系统是软件和硬件的综合体,可以涵盖机械等附属装置。 目前被我国科学家普遍认同的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。 常见的嵌入式系统:手机,DVD,路由器,核磁共振仪,全自动洗衣机。 2.嵌入式系统与通用计算机有哪些区别 答:(1) 以应用为中心;(2) 以计算机技术为基础(3) 软件和硬件可裁减(4) 对系统性能要求严格(5)软件的固件化(6)需要专用的开发工具 3.嵌入式系统的发展分为哪几个阶段 答:第一阶段:无操作系统的嵌入算法阶段。第二阶段:以嵌入式CPU为基础,以简单操作系统为核心的嵌入式系统。第三阶段:以嵌入式操作系统为标志的嵌入式系统。第四阶段:以基于Internet为标志的嵌入式系统。 4.请列举嵌入式系统的主要应用领域。 答:(1)工业控制领域(2)交通运输领域(3)消费电子产品(4)家电领域(5)通信领域(6)商业和金融领域(7)环境监测领域(8)医疗领域(9)建筑领域(10)军事国防领域(11)航天航空领域

周立功-ARM嵌入式系统基础教程课后习题答案11

第一章 思考与练习 1、举出3个书本中未提到的嵌入式系统的例子。 答:红绿灯控制,数字空调,机顶盒 2、什么叫嵌入式系统 嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系 统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、什么叫嵌入式处理器?嵌入式处理器分为哪几类? 嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。 嵌入式微处理器(Embedded Microprocessor Unit, EMPU) 嵌入式微控制器(Microcontroller Unit, MCU) 嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP) 嵌入式片上系统(System On Chip) 4、什么是嵌入式操作系统?为何要使用嵌入式操作系统? 是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。 其次,提高了开发效率,缩短了开发周期。再次,嵌入式实时操作系统充分发挥了32 位CPU 的多任务潜力。 第二章 1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么? 项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。 识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。 提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。 执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展, 分析项目偏差,采取必要措施以实现目标。 结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。 2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险? 在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。 需求风险;时间风险;资金风险;项目管理风险 3、何谓系统规范?制定系统规范的目的是什么? 规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。 4、何谓系统规划?为何要做系统规划 系统规划就是拟定一个开发进程,使项目在合理的进程范围中逐渐建构完成。其目地是让客户可以进一步地掌握系统开发的进程,并确定检查点,以让双方确定项目是否如预期中的进度完成。 5、为什么在项目结束前需要进行项目讨论? 项目的讨论一个项目进行的反馈机制。通过这一个程序,项目团队的经验才可以被记录 下来,也就是说,这是一个撰写项目历史的过程。 第三章 1、ARM7TDMI中的T、D、M、I的含义是什么? 64 位乘法指令(带M 后缀的)、支持片上调试(带D 后缀的)、高密度16 位的Thumb 指令机扩展(带T 后缀的)和EmbededICE 观察点硬件(带I 后缀的) 2、ARM7TDMI采用几级流水线?使用何种存储器编址方式? 三级流水线(取指译码执行);使用了冯·诺依曼(V on Neumann )结构,指令和数据共用一条 32 位总线。 3、ARM处理器模式和ARM处理器状态有何区别? 处理器模式指的是处理器在执行程序时在不同时刻所处的不同状态,处理器状态指的是处理器当前所执行的指令集。 4、分别列举ARM的处理器模式和状态。 状态: ARM 状态32 位,这种状态下执行的是字方式的ARM 指令

《嵌入式系统》考试试卷及答案

《嵌入式系统》课程试卷 考试时间:__120___分钟开课学院___计算机___ 任课教师____________ 姓名______________ 学号_____________班级_______________ 一.单项选择题(2 × 20): 1下面不属于Xscale微架构处理器的主要特征有:( ) A.采用了7级超级流水线、动态跳转预测和转移目标缓冲器BTB技术(Branch Target Buffer)。 B.支持多媒体处理技术、新增乘/累加器MAC、40位累加器、兼容ARM V5TE 指令和特定DSP型协处理器CP0。 C.采用了32KB的指令Cache。 D.采用了64KB的数据Cache。 2以下不属于XScale超级流水线的流水级是( ) A.寄存器文件/移位级(FR) B.写回级(XWB) C.寄存器读取级 D.和执行级二(X2) 3 目前嵌入式系统领域中使用最广泛、市场占有率最高的实时系统是:() A. Symbian B. Windows CE C. VxWorks D. QNX 4 下面那句话的描述是不正确的?( ) A.在一个基于XScale内核的嵌入式系统中,系统在上电或复位时通常都从

地址0x00000000 处开始执行 B.引导装载程序通常是在硬件上执行的第一段代码,包括固化在固件中的 引导代码(可选)和Boot Loader两大部分。 C.在嵌入式系统中,Boot Loader不依赖于硬件实现。 D.Boot Loader就是在操作系统内核运行之前运行的一段小程序。 5 通常情况下,目标机上的Boot Loader通过串口与主机之间进行文件传输,下面不属于通常使用的传输协议的是:( ) A.modem协议 B.xmodem协议 C.ymodem协议 D.zmodem协议 6 Make预置了一些内部宏,其中$@表示:() A.没有扩展名的当前目标文件 B.当前目标文件 C.当前目标文件最近更新的文件名 D.当前目标文件最近更新的文件名 7 在Default kernel command string “root=1f03 rw console=ttyS0,115200 init=/linuxrc”中,代表根文件系统(“/”) 的设备文件主号码是什么?( ) A.1f B.03 C.ttyS0 D.115200 8 用命令dd if=/dev/zero of=ramdisk_img bs=1k count=8192创建的ramdisk_img 其空间大小为多少?( ) A.8M bit

嵌入式SQL习题答案

9.3.1 a) void closestMatchPC() { EXEC SQL BEGIN DECLARE SECTION; char manf[], SQLSTATE[6]; int targetPrice, float tempSpeed, speedOfClosest; char tempModel[4], modelOfClosest[4]; int tempPrice, priceOfClosest; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE pcCursor CURSOR FOR SELECT model, price, speed FROM PC; EXEC SQL OPEN pcCursor; EXEC SQL FETCH FROM pcCursor INTO :modelOfClosest, :priceOfClosest, :speedOfClosest; if(NOT_FOUND) /* print message and exit */ ; while(1) { EXEC SQL FETCH pcCursor INTO :tempModel, :tempPrice, :tempSpeed; if (NOT_FOUND) break; if(|tempPrice-targetPrice|<|priceOfClosest-targetPrice|) { modelOfClosest = tempModel; priceOfClosest = tempPrice; speedOfClosest = tempSpeed; } } EXEC SQL SELECT maker INTO :manf FROM Product WHERE model = :modelOfClosest; printf("manf=%s, model=%d, speed=%d\n", manf, modelOfClosest, speedOfClosest); EXEC SQL CLOSE CURSOR pcCursor; }

ARM嵌入式系统课后习题部分答案

A R M嵌入式系统课后 习题部分答案 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

一填空题 嵌入式系统从大的方面分为(嵌入式系统硬件平台)和(嵌入式软件)两大部分。 驱动层程序一般包括(硬件抽象层HAL)、(板级支持包BSP)和(设备驱动程序)。 嵌入式系统核心是嵌入式处理器,可分为(嵌入式微处理器)、(嵌入式微控制器)、嵌入式DSP处理器和(嵌入式片上系统SoC)4大类。 处理器分为(ARM)和(Thumb)两种操作状态。 状态下,SP寄存器指的是(R13)、LR寄存器指的是(R14)、PC寄存器指的是(R15). 处理器支持的数据类型中,字节为(8)位、半字为(16)位、字为(32)位。 (-S)指令集包括(ARM)指令集和(Thumb)指令集。 指令用于从(存储器)中将一个32位的字数据传送到(目的寄存器)中。指出下面各条指令的寻址方式。 SUB R0,R1,R2 ;寻址方式:(寄存器寻址)。 SUBS R0,R0,#1 ;寻址方式:(立即寻址)。 MOV R0,R2,LSL#3 ;寻址方式:(寄存器移位寻址)。 SWP R1,R1,[R2] ;寻址方式:(寄存器间接寻址)。 LDR R2,[R3,#0x0C] ;寻址方式:(基址寻址)。 汇编语言源程序中语句一般有(指令)、(伪指令)、(伪操作)和宏指令组成。 对Flash存储器的编程可通过(JTAG仿真/调试器)、( ISP )和(IAP)3重方法来实现。 异常向量表可以来自4个不同的存储器区域,分别是(片内Flash )、(片内SRAM )、( Boot Block )和片外存储器。 系列的定时器主要用于3个方面:(对内部事件进行计数的间隔定时器)、(通过捕获输入实现脉宽解调器)、(自由运行的定时器)。二选择题 可以表示微控制器的缩略词是( B ) A. MPU B. MCU C. WDT 类存储器包括( ABD ) A. NOR Flash B. EPROM C. SRAM D. PROM 不属于ARM的系列是( D ) A. MCS-96 B. 80C51 C. LPC2000 处理器系列采用( A )级流水线。 A. 3 B. 5 C. 6 D. 8 下面ARM处理器模式中属于特权模式的有( BCD ) A. 用户模式 B. 中断模式 C. 系统模式 D. 管理模式 (或STM)指令允许一条指令最多传送( C )个寄存器。 A. 4 B. 8 C. 16 D. 24 指令限制在当前指令的( B )地址范围。

嵌入式系统试卷及答案

嵌入式系统试卷及答案

2014年上学期11级计算机专业嵌入式系统期末试卷 专业班级学号姓名___ _____ 考试时间120分钟考试方式闭卷考试成绩__________ _ 题号一二三四五六 得分 一、选择题(本大题共10个小题,每小题1分,共10分) 1、和PC机系统相比,下列哪点不是嵌入式系统所特有的:( C) A、系统内核小 B、专用性强 C、可执行多任务 D、系统精简 2、ADD R0,R1,#3属于( A)寻址方式。 A、立即寻址 B、多寄存器寻址 C、寄存器直接寻址 D、相对寻址 3、GET伪指令的含义是:(A) A、包含一个外部文件 B、定义程序的入口 C、定义一个宏 D、声明一个变量 4、μCOS-II操作系统不属于:(C) A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统 5、FIQ中断的入口地址是:(A) A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 6、ARM指令集和Thumb指令集分别是(D)位的。 A、8位,16位 B、16位,32位 C、16位,16位 D、32位,16位 7、BL和BX的指令的区别是( D ) A、BL是跳转并切换状态;BX带返回的跳转并切换状态。 B、BL是带返回的连接跳转;BX带返回的跳转并切换状态。 C、BL是跳转并切换状态;BX是带返回的连接跳转。 D、BL是带返回的连接跳转;BX是跳转并切换状态。 8、Boot Loader 的启动过程是( A ) A.单阶段 B. 多阶段 C.单阶段和多阶段都有 D.都不是 9、以下说法不正确的是( B ) A 、任务可以有类型说明 B 、任务可以返回一个数值 C 、任务可以有形参变量 D 、任务是一个无限循环 10、若已定义的函数有返回值,则以下关于该函数调用叙述中错误的是(D) A、函数调用可以作为独立的语句存在

arm嵌入式系统课后习题部分答案

a r m嵌入式系统课后习题 部分答案 The pony was revised in January 2021

一填空题嵌入式系统从大的方面分为(嵌入式系统硬件平台)和(嵌入式软件)两大部分。 驱动层程序一般包括(硬件抽象层HAL)、(板级支持包BSP)和(设备驱动程序)。 嵌入式系统核心是嵌入式处理器,可分为(嵌入式微处理器)、(嵌入式微控制器)、嵌入式DSP处理器和(嵌入式片上系统SoC)4大类。处理器分为(ARM)和(Thumb)两种操作状态。 状态下,SP寄存器指的是(R13)、LR寄存器指的是(R14)、PC寄存器指的是(R15). 处理器支持的数据类型中,字节为(8)位、半字为(16)位、字为(32)位。 (-S)指令集包括(ARM)指令集和(Thumb)指令集。 指令用于从(存储器)中将一个32位的字数据传送到(目的寄存器)中。 指出下面各条指令的寻址方式。 SUB R0,R1,R2 ;寻址方式:(寄存器寻址)。

SUBS R0,R0,#1 ;寻址方式:(立即寻址)。 MOV R0,R2,LSL#3 ;寻址方式:(寄存器移位寻址)。 SWP R1,R1,[R2] ;寻址方式:(寄存器间接寻址)。 LDR R2,[R3,#0x0C] ;寻址方式:(基址寻址)。 汇编语言源程序中语句一般有(指令)、(伪指令)、(伪操作)和宏指令组成。 对Flash存储器的编程可通过(JTAG仿真/调试器)、( ISP )和(IAP)3重方法来实现。 异常向量表可以来自4个不同的存储器区域,分别是(片内Flash )、(片内SRAM )、( Boot Block )和片外存储器。 系列的定时器主要用于3个方面:(对内部事件进行计数的间隔定时器)、(通过捕获输入实现脉宽解调器)、(自由运行的定时器)。二选择题 可以表示微控制器的缩略词是( B ) A. MPU B. MCU C. WDT 类存储器包括( ABD )

ARM原理及应用复习题(附答案)

《ARM原理及应用》复习题 填空题 1.STM32F103是_32_位单片机,内核是ARM公司的___Cortex-M3___。 2.STM32F103最高工作频率___72MHz___。片内具有多种外设,它们分别是:_GPIO_、_USART_、_I2C_、_SPI_、_ADC_、_DAC_、_TIM_、_RTC_、_IWDG_、_WWDG_。 IWDG:独立看门狗 WWDG:窗口看门狗 3.STM32103的GPIO端口具有多种配置状态,输入有3种状态,它们分别是_模拟输入_、_浮空输入__和上拉/下拉输入;输出有4种状态,它们分别是_通用推挽输出_、_通用开漏输出_、_复用推挽输出_和_复用开漏输出_。 5.当STM32I/O端口配置为输入时,输出功能被_禁止_,施密特触发器被激活__。 6.STM32的所有端口都有外部中断能力。当使用外部中断线时,相应的引脚必须配置成 输入模式。 7.STM32具有单独的位设置或位清除能力。这是通过GPIOx->BSRR_和GPIOx->BRR寄存器来实现的。 8.STM32芯片内部集成的12位位ADC是一种逐次逼近(比较)型模拟数字转换器,具有18个通道,可测量16个外部和2个内部信号源。 9.STM32的NVIC管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连,可以实现时延的中断处理,并有效地处理后到中断。 10.系统计时器(SysTick)提供了1个24位二进制递减计数器,具有灵活的控制机制11.STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和向上下计数模式。 12.STM32系列ARM Cortex-M3芯片支持三种复位形式,分别为上电复位、按键复位和备份复位。 简答题 1.什么是嵌入式系统?嵌入式系统一般由哪几部分构成?它与通用计算机有何区别? 答: 是一种嵌入受控器件内部,为特定应用而设计的专用计算机系统,具有“嵌入性”、“专用性”和“计算机系统”3个基本要素。//它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。//嵌入式系统通常执行的是带有特定要求的预先定义的任务,强调控制能力与控制的可靠性;而通用计算机则可以通过安装各种软件执行各种不同的任务,强调高速、海量的数值计算。 2.ARM Cortex-M3有何特点? 答: 采用哈佛结构的32位处理器内核,具有高性能、实时功能、数字信号处理、低功耗与低电压操作特性,同时还保持了集成度高和易于开发的特点。 3.简述Cortex-M3系统滴答定时器的功能和作用。 答:

嵌入式Linux试题答案

《嵌入式开发》期中试卷 试卷适用范围:2011级计算机科学与技术(本)1、2班 一、填空题(每空1分,共46分) 习题 1 1.填空题 (1)嵌入式系统是以应用为中心、以计算机技术为基础,软、硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。 (2)嵌入到对象体系中的专用计算机系统。嵌入性、专用性与计算机系统是嵌入式系统的三个基本要素。对象系统是指嵌入式系统所嵌入的宿主系统。 (3)嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)、芯片级(MCU、SOC)。 (4)嵌入式系统由硬件和软件两大部分组成,硬件一般由高性能微处理器和外围接口电路组成,软件一般由操作系统和应用程序构成,软件和硬件之间由所谓的中间层(BSP层,板级支持包)连接。 (5)嵌入式系统从组织层次上看,嵌入式系统一般由硬件层、中间层、软件层和功能层组成。 (6)在专用的嵌入式板子上面运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:引导加载程序、 Linux内核、文件系统、用户应用程序。 (7)嵌入式系统硬件的核心部件是各种类型的嵌入式处理器。 (8)嵌入式系统的核心部件是嵌入式处理器,一般把嵌入式处理器分成4类,即微处理器、微控制器、数字信号处理器、和嵌入式片上系统。 (9)ARM公司首创了 chipless 的生产模式,专门从事基于RISC技术芯片的设计开发,公司本身并不生产芯片,而是设计出高效的IP内核,授权给半导体公司使用。 (10)ARM7TDMI中,T表示支持Thump指令集。D表示支持片上调试(Debug)。M表示内嵌硬件乘法器(Multiplier)。I表示支持片上断点和调试点。 (11)ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。 (12)ARM微处理器有两种工作状态:Thump状态、ARM状态。 (13)通用寄存器分为三类:未分组寄存器、分组寄存器、程序计数器(PC)。 (14)异常是由内/外部源引起的需要处理器干预的一个事件。 (15)精简指令集计算机RISC(Reduced Instruction Set Computer)和复杂指令集计算机CISC 是当前CPU的两种架构。 (16)ARM微处理器的在较新的体系结构中支持两种指令集: ARM指令集、Thump指令集。 (17)MMU的作用有两个:将虚拟地址转化为物理地址、对存储器访问的

ARM课后习题及答案_百度文库.

第一章思考与练习 1、举出3个书本中未提到的嵌入式系统的例子。答:红绿灯控制,数字空调,机顶盒 2、什么叫嵌入式系统嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。嵌入式微处理器(Embedded Microprocessor Unit, EMPU 嵌入式微控制器(Microcontroller Unit, MCU 嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP 嵌入式片上系统(System On Chip 4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。其次,提高了开发效率,缩短了开发周期。再次,嵌入式实时操作系统充分发挥了 32 位 CPU 的多任务潜力。第二章 1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么?项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展,分析项目偏差,采取必要措施以实现目标。结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。 2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险?在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。需求风险;时间风险;资金风险;项目管理风险 3、何谓系统规范?制定系统规范的目的是什么?规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。 4、何谓系统规划?为何要做系统规划系统规划就是拟定一个开发进程,使项目在合理的进程范围中逐渐建构完成。其目地是让客户可以进一步地掌握系统开发的进程,并确定检查点,以让双方确定项目是否如预期中的进度完成。 5、为什么在项目结束前需要进行项目讨论?项目的讨论一个项目进行的反馈机制。通过这一个程序,项目团队的经验才可以被记录下来,也就是说,这是一个撰写项目历

ARM嵌入式系统试题及答案解析

ARM嵌入式系统基础教程 ----期中开卷 专业:软件1002班姓名:王世伟学号:04103060(24) 一、嵌入式系统基本概念 1、什么是嵌入式系统?有何特点? 答:所谓嵌入式,实际上是“嵌入式计算机系统”,的简称,它是相对于通用计算机系统而言,注重于发展独立的单芯片技术。嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。 特点:(1)嵌入式系统是将先进的计算机技术,半导体技术以及电子技术与各行业的具体应用相结合的产物,这一点就决定了他必然是一个技术密集,资金密集,高度分散,不断创新的知识集成系统。(2)系统内核小(3)专用性强(4)系统精简(5)系统软件要求(6)嵌入式软件开发要走向标准化,需要使用多任务的操作系统。(7)嵌入式系统本身并不具备在其上进行进一步开发的能力。 2、举例在你的身边常见到的嵌入式系统产品,谈一谈你对“嵌入式系统”的初步理 解。 答:产品有:洗衣机,空调,手机。 嵌入式系统就是内置小计算机系,可以对机器进行智能控制的系统。 3、嵌入式系统的3个基本特点? 答:(1)专用性(2)嵌入型(3)计算机系统 4、什么是嵌入式处理器,嵌入式处理器可以分为几大类? 答:嵌入式处理机是嵌入式的核心,是控制,辅助系统运行的硬件单元。 分类:四大类(1)嵌入式微处理器(2)嵌入式微控制器(3)嵌入式DSP处理器(4)SoC片上系统 5、广泛使用的三种类型的操作系统? 答:多道批处理操作系统、分时操作系统以及实时操作系统。 6、列举常见的4种嵌入式操作系统?说明你对嵌入式操作系统的基本认识,嵌入式 操作系统在嵌入式系统开发中的必要性。 答:嵌入式Linux、WinCE、VxWorks、μC/OS-II 没有操作系统的计算机效率十分底下,把操作系统嵌入到计算机中,可以提高系统

嵌入式系统期末考试题库及答案

《嵌入式系统》试题库 《嵌入式系统》试题库 一、填空题 嵌入式系统的基本定义为:以应用中心,以计算机技术为基础,软件硬件可裁剪,适、 1应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从模块结构来看,嵌入式系统由三大部分组成,分别是:硬件、软件和开发平台。、 2从层次角度来看,嵌入式

系统由四大部分组成,分别是:应用软件层、操作系统层、、 3板级支持包(或硬件抽象层) 和硬件层。嵌入式产品的主要度量指标包括:上市时间、设计成本和产品质量。、 4嵌入式系统的设计过程包括:需求分析、规格说明、体系结构设计、构件设计、系统、 5集成和系统测试。需求分析包括:功能性需求分析和非功能性需求分析。 6、确定输入信号是数字信号还 是模拟信号属于功能性需求。 7、确定系统的物理尺寸和重量属于非功能性需求。 8、在嵌 入式系统的设计过程中,其中规格说明解决“做什么”。 9、在嵌入式系统的设计过程中,其 中体系结构设计解决“如何做”。 10、在嵌入式系统的设计过程中,软硬件划分应该在体系结构设计阶段完成。 11、在嵌入式系统的设计过程中,处理器的选择应该在体系结构设计阶段 完成。、 12在嵌入式系统的设计过程中,嵌入式操作系统的选择应该在体系结构设计阶段完成。、13在嵌入式系统的设计过程中,完成原理图设计应在构件设计阶段完成。、 14在嵌入式系统 的设计过程中,完成版图设计应在构件设计阶段完成。、15在嵌入式系统的设计过程中,完 成软件设计应在构件设计阶段完成。 16、反映嵌入式系统设计人员的水平能力主要在于总体 设计(需求分析、规格说明和体系 17、结构设计)和系统调试。设计流程指的是设计过程中所经历的过程步骤。、 18核的模块级重用和基于平台的系统级重用。 IP 设计重用技术主要分为基于19、 软硬件协同设计由系统描述、软硬件划分、软硬件协同综合以及软硬件协同模拟与验 20、证几个阶段组成。嵌入式处理器的分类包括三种,分别是:嵌入式微处理器、微控制器(或单片机)和、21页共页第 1 44 《嵌入式系统》试题库

ARM复习课后题答案

1.国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解 答:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。 2.当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点 答:嵌入式linux和嵌入式实时操作系统uc/os-II Linux: (1)linux是源码开放的,每一个技术细节都是透明的,易于裁剪定制。 (2)目前嵌入式linux已经在多种嵌入式处理器芯片移植成功,有大量且不断增加的开发工具,这些工具为嵌入式系统开发提供了良好的开发环境。 (3)Linux内核小、功能强大、运作稳定、效率高。 Ucos: (1)源代码公开 (2)可移植性。 (3)可固化 (4)可裁剪 (5)占先式 (6)多任务 (7)可确定性。 (8)系统服务 第2章ARM技术与ARM体系结构 3.arm处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理 器在什么情况下进入相应的模式。 答:ARM 处理器共有7 种工作模式: 用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式 下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作 模式,如果有异常发生,处理器会自动切换工作模式 FIQ 模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优 先级(fast)中断产生时将会进入这种模式。 IRQ 模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模 式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中 断处理都在IRQ 模式下进行。 SVC 模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指 令执行时处理器将进入这种模式。 中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟 存储或存储保护。 未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理 未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协 处理器的操作上。 系统模式:使用和User 模式相同寄存器组的特权模式,用来运行特权级的操作

相关主题
相关文档 最新文档