嵌入式系统设计与开发马文华课后答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章
一.ARM处理器有什么特点?
ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。
1、体积小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令执行速度更快;
4、大多数数据操作都在寄存器中完成;
5、寻址方式灵活简单,执行效率高;
6、指令长度固定。
二.ARM的那个寄存器作为PC使用?哪个作为LR使用
ARM的寄存器,全部共有37个32位长的寄存器。但ARM核心同时最多只可以有18个同时执行的寄存器:包含了16个通用寄存器和2个状态寄存器,16个通用寄存器中包含了3个专用寄存器,R13、R14和R15。
R13 用作堆栈指针SP
R15用做程序计数器PC,
R14用做子程序链接寄存器LR。
三.ARM有几种运行模式?那些具有特权?如何改变处理器的模式?
ARM有7中工作模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问中止模式、未定义指令中止模式、系统模式。
除了用户模式以外,其余所有6种模式称之为特权模式,权限比用户模式高,其中特权模式中除去系统模式外的5种模式称之为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。
处理器模式可以通过控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。
四.ARM有几种异常?其异常处理方式和x86有什么不同?
1)复位(Reset)异常(管理模式);
2)未定义指令(undefined instruction)异常(未定义模式);
3)软件中断(SWI)异常(管理模式);
4)指令预取中止(Prefech Abort)异常(中止模式);
5)数据访问中止(Data Abort)(中止模式);
6)快速中断请求(FIQ)(FIQ模式);
7)外部中断请求(IRQ)(IRQ模式)。
机制一样:申请中断、相应中断、中断处理、中断返回
由于硬件不一样,细节上有很大区别,比如ARM的中断向量表:
ARM:
Vectors LDR PC, Reset_Addr ;0x00000000复位
LDR PC, Undef_Addr ;0x00000004未定义异常
LDR PC, SWI_Addr ;0x00000008软件中断
LDR PC, PAbt_Addr ;0x0000000C预取指中止
LDR PC, DAbt_Addr ;0x00000010数据中止
NOP ;0x00000014保留;
LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0] ;0x00000018中断
LDR PC, FIQ_Addr ;0x0000001C快速中断
X86:偏移量与段地址结合的方式
五.试比较ARM和x86的I/O寻址方式有什么不同?
ARM:
立即数寻址:操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也是称为立即数。
寄存器的值为操作数。ARM指令普遍采用此种寻址方式。
寄存器偏移寻址:寄存器偏移寻址是ARM指令集特有的寻址方式。当第二作数是寄存器偏移方式时,第二寄存器操作数在与第一操作数结合之前,选择进行移位操作。寄存器寻址:第二操作数的移位位数可以用立即数方式或者寄存器方式给出。
寄存器间接寻址:寄存器中的值为操作数的物理地址,而实际的操作数存放在存储器中。基址加偏址寻址:将寄存器的值与指令中给出的偏移地址址量相加,所得结果作为操作数的物理地址。
堆栈寻址:堆栈寻址用于数据栈与寄存器组之间批量数据传输。当数据写好和读出内存的顺序不同时,使用堆栈寻址可以很好的解决这个问题。
X86:
立即数寻址:操作数包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。寄存器寻址:操作数存放在CUP的内部寄存器中。
直接寻址方式:操作数的存储器中,指令中直接包含有操作数的有效地址,默认的段地址在DS段寄存器。
寄存器间接寻址:操作数在存储器中,操作数的有效地址在基址寄存器BX、BP或变址
寄存器SI、DI中。可使用段超越前缀改变。
寄存器相对寻址:操作数在存储器中,操作数有效地址是一个基址寄存器BX、BP或变址寄存器SI、DI的内容加上指令中给出的位置量之和。
相对基址变址寻址:操作数在存储器中,操作数的有效地址由基址寄存器的内容与变址寄存器的内容及指令中位置量相加得到,可用段超越前缀改变。
六.若允许FIQ和IRQ中断,CPSR应该如何处置?
当允许IRQ中断时,CPSR【7】=0即CPSR的I位置为0.当允许FIQ中断时,CPSR【6】=0即CPSR的F位为0。
如果2个中断同时发生时,由于FIQ拥有最高中断优先级,而IRQ只有中等中断优先级,所以先执行FIQ中断(CPSR【7】=0),当中断结束后再执行IRQ中断(CPSR【6】=0)
FIQ: CPSR[4:0]=0B10001 //进入FIQ模式
IRQ: CPSR[4:0]=0B10010 //进入IRQ模式
CPSR[5]=0 //在ARM状态执行
CPSR[6]=0 // 允许FIQ中断
CPSR[7]=0 //允许IRQ中断
七.什么是ARM的E变种?
E变种增加一些附加指令用于增强处理器对一些典型的DSP算法的处理性能,主要包括以下指令。
·几条新的实现16位数据乘法和乘加操作的指令
·实现饱和的带符号数的加减法操作的指令。
·进行双字数据操作的指令,包括双字读取指令LDRD,双字写入指令STRD和协处理器的寄