第1问:arm处理器有那些工作模式
arm处理器工作模式:
1、用户模式(User):非特权模式,正常程序的执行模式。
2、快速中断模式(FIQ):产生FIQ中断时进入该模式。
3、外部中断模式(IRQ):产生IRQ中断时进入该模式。
4、特权模式(SVE):当复位或软中断指令执行时进入该模式
5、数据访问中止模式(ABT):用于虚拟存储和存储保护,存取数据异常时进入该模式。
6、未定义指令中止模式(UND):当执行未定义的指令时进入该模式。
7、系统模式(SYS):使用和User模式相同的寄存器的特权模式。
注意:其中除了用户模式以外,其他的模式都是特权模式
其中除了用户模式和系统模式以外,其他的模式都是异常模式
各种处理器模式下的寄存器
寄存器类别
|
寄存器在汇编中的名称
|
各模式下实际访问的寄存器
| ||||||
用户
|
系统
|
管理
|
中止
|
未定义
|
中断
|
快中断
| ||
通用寄存器和程序计数器
|
R0(a1)
|
R0
| ||||||
R1(a2)
|
R1
| |||||||
R2(a3)
|
R2
| |||||||
R3(a4)
|
R3
| |||||||
R4(v1)
|
R4
| |||||||
R5(v2)
|
R5
| |||||||
R6(v3)
|
R6
| |||||||
R7(v4)
|
R7
| |||||||
R8(v5)
|
R8
|
R8_fiq
| ||||||
R9(SB,v6)
|
R9
|
R9_fiq
| ||||||
R10(SL,v7)
|
R10
|
R10_fiq
| ||||||
R11(FP,v8)
|
R11
|
R11_fiq
| ||||||
R12(IP)
|
R12
|
R12_fiq
| ||||||
R13(SP)
|
R13
|
R13_svc
|
R13_abt
|
R13_und
|
R13_irq
|
R13_fiq
| ||
R14(LR)
|
R14
|
R14_svc
|
R14_abt
|
R14_und
|
R14_irq
|
R14_fiq
| ||
R15(PC)
|
R15
| |||||||
状态寄存器
|
CPSR
|
CPSR
| ||||||
SPSR
|
无
|
SPSR_abt
|
SPSR_abt
|
SPSR_und
|
SPSR_irq
|
SPSR_fiq
|
第2问:arm核有多少个寄存器?
一共37个,分布看上面表格
r0-r7为通用寄存器
r13 为堆栈sp寄存器
r14 为链接寄存器
r15 为pc计数器
第3问:内存访问各种存储器的速度?
最快的是r0-r15这些寄存器,其后依次是cache、SDRAM、硬盘、网络
第4问:为什么快速中断比普通中断响应要快?
快速中断拥有独立的r8-r12寄存器,这样在模式切换时可以减少寄存器保护的时间,其次是快速中断处理程序可以位于在异常向量表后,这样又可以减少程序跳转时间
第 4 问:为什么程序运行时跳转会影响效率?
程序跳转会影响处理的流水线
第5 问:什么情况下才可以发挥cache的作用?
程序的顺序执行或者代码重复执行
第 6 问: ARM7和ARM9的差别:
01、ARM7内核是0.9MIPS/MHz的三级流水线(取指-译码-执行)和冯•诺伊曼结构;ARM9内核是五级流水线(取指-译码-执行-访问内存-写寄存器),提供1.1MIPS/MHz的哈佛结构。
02、ARM7没有MMU,ARM720T是MMU的;ARM9是有MMU的,ARM940T只有Memory protection unit.不是个完整的MMU。
03、ARM7TDMI提供了非常好的性能??功耗比。他包含了Thumb指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。
01、ARM7内核是0.9MIPS/MHz的三级流水线(取指-译码-执行)和冯•诺伊曼结构;ARM9内核是五级流水线(取指-译码-执行-访问内存-写寄存器),提供1.1MIPS/MHz的哈佛结构。
02、ARM7没有MMU,ARM720T是MMU的;ARM9是有MMU的,ARM940T只有Memory protection unit.不是个完整的MMU。
03、ARM7TDMI提供了非常好的性能??功耗比。他包含了Thumb指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。
第7 问:处理的流水线的级数会影响到CPU的最高频率吗?
是的
第8问:什么是伪指令?
就是不能通过反汇编得到的指令
第9问:中断向量表位于存储器什么位置?
0x0和0xffff0000两处
第10问:处理中软中断主要用于什么地方?
主要用于操作系统的系统调用
第11问 ARM处理器对异常中断的响应过程
答:ARM处理器对异常中断的响应过程如下所述:
01、保存处理器当前状态、中断屏蔽位及各条件标志位;
02、设置当前程式状态寄存器CPSR中的相应位;
03、将寄存器lr_mode设置成返回地址;
04、将程式计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。
答:ARM处理器对异常中断的响应过程如下所述:
01、保存处理器当前状态、中断屏蔽位及各条件标志位;
02、设置当前程式状态寄存器CPSR中的相应位;
03、将寄存器lr_mode设置成返回地址;
04、将程式计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。
第12问 ARM指令和Thumb指令的差别
答: 在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率非常高。对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程式时,称处理器处于ARM状态;当处理器执行Thumb程式时,称处理器处于Thumb状态。Thumb指令集并没有改动ARM体系地层的程式设计模型,只是在该模型上加上了一些限制条件。Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。
答: 在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率非常高。对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程式时,称处理器处于ARM状态;当处理器执行Thumb程式时,称处理器处于Thumb状态。Thumb指令集并没有改动ARM体系地层的程式设计模型,只是在该模型上加上了一些限制条件。Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。
第13问 ARM程式和Thumb程式混合使用的场合
答:通常,Thumb程式比ARM程式更加紧凑,而且对于内存为8位或16位的系统,使用Thumb程式效率更高。不过,在下面一些场合下,程式必须运行在ARM状态,这时就需要混合使用ARM和Thumb程式。
01、强调速度的场合,应该使用ARM程式;
02、有些功能只能由ARM程式完成。如:使用或禁止异常中断;
03、当处理器进入异常中断处理程式时,程式状态转换到ARM状态,即在异常中断处理程式入口的一些指令是ARM指令,然后根据需要程式能转换到Thumb状态,在异常中断程式返回前,程式再转换到ARM状态。
04、ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程式,必须为该Thumb程式添加一个ARM程式头,然后再转换到Thumb状态,执行Thumb程式。
第14问:哈佛结构比冯.诺曼结构优势?
答:通常,Thumb程式比ARM程式更加紧凑,而且对于内存为8位或16位的系统,使用Thumb程式效率更高。不过,在下面一些场合下,程式必须运行在ARM状态,这时就需要混合使用ARM和Thumb程式。
01、强调速度的场合,应该使用ARM程式;
02、有些功能只能由ARM程式完成。如:使用或禁止异常中断;
03、当处理器进入异常中断处理程式时,程式状态转换到ARM状态,即在异常中断处理程式入口的一些指令是ARM指令,然后根据需要程式能转换到Thumb状态,在异常中断程式返回前,程式再转换到ARM状态。
04、ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程式,必须为该Thumb程式添加一个ARM程式头,然后再转换到Thumb状态,执行Thumb程式。
第14问:哈佛结构比冯.诺曼结构优势?
哈佛结构
与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:
使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联
第15问:Q:为什么在中断向量表中不直接LDR PC,"异常地址".而是使用一个标号,然有再在后面
使用DCD 定义这个标号
A:因为LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转到32MB 范围,而现在这样
在LDR PC, "xxxx"这条指令不远处用"xxxx"DCD 定义一个字,而这个字里面存放最终异
常服务程序的地址,这样可以实现4GB 全范围跳转.
Q:LDR 不是可以全空间跳转的吗 《ARM 微控制器基础与实战》程序清单5.3.
A:LDR 伪指令通过设置指令缓冲池才能实现全范围跳转,而LDR 指令则只能实现4KB 范围
跳转.