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

上传人:b****6 文档编号:3265745 上传时间:2022-11-21 格式:DOCX 页数:12 大小:22.19KB
下载 相关 举报
《ARM嵌入式系统结构与编程》习题答案.docx_第1页
第1页 / 共12页
《ARM嵌入式系统结构与编程》习题答案.docx_第2页
第2页 / 共12页
《ARM嵌入式系统结构与编程》习题答案.docx_第3页
第3页 / 共12页
《ARM嵌入式系统结构与编程》习题答案.docx_第4页
第4页 / 共12页
《ARM嵌入式系统结构与编程》习题答案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《《ARM嵌入式系统结构与编程》习题答案.docx》由会员分享,可在线阅读,更多相关《《ARM嵌入式系统结构与编程》习题答案.docx(12页珍藏版)》请在冰豆网上搜索。

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

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

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

如何理解?

答:

见教材节。

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

答:

见教材节。

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

答:

见教材节的嵌入式Linux和嵌入式实时操作内核UC/OS-I。

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

答:

见教材节的“工业控制领域”。

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

答:

见教材节的嵌入式技术的发展趋势。

2章ARM技术与ARM体系结构

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

答:

对教材节的图2-1进行描述。

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

答:

参考教材.2ARM核版本命名规则说明。

3.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理器在什么情况下进入相应的模式。

ARM处理器共有7种工作模式:

用户模式:

非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。

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

FIQ模式:

也称为快速中断模式,支持高速数据传输和通道处理,当一个高优(fast)中断产生时将会进入这种模式。

IRQ模式:

也称为普通中断模式,:

当一个低优先级中断产生时将会进入这种模式。

在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。

通常的中断处理都在IRQ模式下进行。

SVC模式:

称之为管理模式,它是一种操作系统保护模式。

当复位或软中断指令执行时处理器将进入这种模式。

中止模式:

当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。

未定义指令异常模式:

当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。

系统模式:

使用和User模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。

在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。

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

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

PSR的具体格式为

 

V—溢出标志位

对于加/减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1表示符号位溢出,其他的指令通常不影响V位。

例如:

两个正数(最高位为0)相加,运算结果为一个负数(最高位为1),则符号位溢出,相应V=1。

C—进位或借位标志位

对于加法指令(包括比较指令CMN),结果产生进位,则C=1,表示无符号数运算发生上溢出,其他情况下C=0;

在减法指令中(包括比较指令CMP),结果产生借位,则C=0,表示无符号数运算发生下溢出,其他情况下C=1;

对于包含移位操作的非加/减法运算指令,C中包含最后一次溢出位的数值;对于其他非加/减法运算指令,C位的值通常不受影响。

Z—结果为0标志位Z=1表示运算结果是0,Z=0表示运算结果不是零;对于CMP指令,Z=1表示进行比较的两个数大小相等。

N—T符号标志位

本位设置成当前指令运算结果的bit[31]的值。

当两个补码表示有符号整数运算时,N=1表示运算的结果为负数,N=0表示结果为正数或零。

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

答:

ARM在异常产生时会进行以下操作:

(1)将引起异常指令的下一条指令地址保存到新的异常模式的LR中,使异常处理程序执行完后能根据LR中的值正确返回;

(2)将CPSR的内容复制到新的异常模式下的SPSR中;

(3)根据异常类型将CPSR模式控制位强制设定为发生异常所对应的模式值;

(4)强制PC指向相应的异常向量地址。

ARM在异常返回时

(1)从SPSR_恢复CPSR;

(2)从LR_恢复PC。

处理器字数据的存储格式有哪两种?

并指出这两种格式的区别。

答:

1)小端存储格式(Little-Endian)

在小端存储格式中,对于地址为A的字单元,其中字节单元由低位到高位字节地址顺序为A,A+1,A+2,A+3;对于地址为A的半字单元,其中字节单元由低位到高位字节地址顺序为A,A+1;

2)大端存储格式(Big-Endian)

在大端存储格式中,对于地址为A的字单元,其中字节单元由高位到低位字节地址顺序为A,A+1,A+2,A+3;对于地址为A的半字单元,其中字节单元由高位到低位字节地址顺序为A,A+1。

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

答:

在ARM三级流水线下:

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

这类指令在“执行”阶段后,还要进行“存储器访问”和“寄存器回写”操作,每一步占用1个时钟周期。

在指令执行时空图中,处于时钟周期T5时,LDR指令要进行数据的存储器操作(访存),在时钟周期T6要进行寄存器的回写操作,这两步还要占用执行单元,因此其下1条指令的“执行”就被阻断了,其下数第2条指令的译码被阻断,要等待LDR指令

操作完毕后,流水线的正常运行才能被恢复。

 

在图中,处理器用6个时钟周期执行了4条指令,指令平均周期数(CPI)=时钟周期。

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

答:

在ARM9在指令操作上采用5级流水线。

 

1)取指:

从指令Cache中读取指令。

2)译码:

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

3)执行:

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

4)存储器访问:

如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache);如果不是对存储器访问的指令,本级流水线为一个空的时钟周期。

寄存器回写:

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

9.什么叫做流水线互锁?

应如何来解决,举例说明。

答:

在流水线运行过程中可能会出现这种情况:

当前指令的执行可能需要前面指令的执行结果,但这时前面的指令没有执行完毕,从而会导致当前指令的执行无法获得合法的操作数,这时就会引起流水线的等待,这种现象在流水线机制里称为互锁。

举例:

参见教材第29页:

当互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。

如图所示,LDR指令进行完执行阶段,

还需要两个时钟周期来完成存储器访问和寄存器写操作,但这时指令MOV中用到的R9正是LDR中需要进行

寄存器加载操作后的寄存器,

因此MOV要进行等待,直到LDR指令的寄存器写操作完成。

 

3章ARM指令集寻址方式

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

答:

见教材节的描述。

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

答:

当指令的算术运算发生异常时,V标志位置1。

例如,两个正数相加,其结果为一负数;或者是两个负数相加,其结果为一正数,都会置V标志位。

3.在ARM指令中,什么是合法的立即数?

判断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是8位常数和4位的移位数)。

0x54300x1080x3040x5010xFB100000x3340000x3FC0000x1FE00000x55800000x7F8000x39C0000x1FE80000

答:

每个立即数由一个8位的常数进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。

即:

=immed_进行32位循环右移(2*rotate_4)位

符合这一条件的都为合法的立即数。

0x5430

0B0101010000110000不合法

0x108

0B000100001000111101000010(30/2)

0x304

0B0011000001001111(30/2)

0x501

0B010100000001不合法

0xFB10000

0B111110110001000000000000不合法

0x334000

0B0011001101000000000000001001(18/2)

0x3FC000

0B00111111000000000000101000111111(18/2)

0x1FE0000

0B000111111110(0000)[4]不合法

0x5580000

0B010101011000(0000)[4]不合法

0x7F80000

0B011110000001(0000)[4]不合法

0x39C000

0B0011100111000000000000001001(18/2)

0x1FE80000

0B000111111110(0000)[4]不合法

4.分析逻辑右移、算术右移、循环右移、带扩展的循环右移它们间的差别。

答:

见教材节的图3-1移位操作功能描述。

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

ARM数据处理指令具体的寻址方式有5种,见教材节的具体说明。

如果程序计数器PC作为目标寄存器,会产生程序发生跳转。

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

答:

在Load/Store指令寻址中,字、无符号字节的Load/Store指令寻址有三种,具体见教材节;Load/Store指令寻址中,半字、有符号字节寻址有两种,具体见教材节;它们之间的差别:

在半字、有符号字节寻址中,没有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):

堆栈指针指向最后压入的数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1