ARM-32学习(一)

来源:互联网 发布:kmeans算法介绍 编辑:程序博客网 时间:2024/05/29 02:19

1, ARM mode

ARM cores are divided in lastest versions to three main lines:

§  Cortex-M cores, used for really small devices, usually with on-chip memory and simpler operations
§  Cortex-R cores, used for real-time devices
§  Cortex-A cores, used for applications in multifunctional devices like smartphones, TVs or maybe computers.
For example:

ARM architecture: ARMv8-A 
ARM core: Cortex-A53 
ARM CPU: 8894..

2,ARM 七中模式


ARMv4以上版本的CPU任何时刻必定处于如下7种执行模式之一: 
    
1 User Mode:用户模式。操作系统的Task一般以这种模式执行。User ModeARM唯一的非特权模式,这表示如果CPU处于这种模式下,很多指令将不能够执行,因此操作系统的资源得以保护。 (LINUX用户空间进程在这种模式)
    
2 System Mode:这是V4及其以上版本所引入的特权模式。、 
    
3 IRQ Mode:中断模式。中断(不包括软中断)处理函数在这种模式下执行。 
    
4 FIQ Mode:快速中断模式。除了多了几个寄存器外,其他同IRQ一样。 
    
5 Supervisor Mode:监视模式。软中断(SWI)处理函数在这种模式下执行。(linux内核空间在这种模式下运行) 
    
6 Abort Mode:所有同内存保护相关的异常均在这种模式下执行。 
    
7 Undefined Mode:处理无效指令的异常处理函数在这种模式下执行。
如果将User Mode作为参考模式,那么: 
    
1 System Mode:寄存器一样,仅仅是权限不同 
    
2 其他Exception Mode:寄存器不一样,权限也不一样 


3,ARM相关指令学习
ARM指令

4
FP = 11
SP = 13
LR = 14
PC = 15



5, 

ARM的七种异常
·         复位异常:1)当内核的nRESET信号被拉低时,ARM处理器放弃正在执行的指令,当nRESET信号再次变高时,ARM处理器进行复位操作;  2)系统复位后,进入管理模式对系统进行初始化,复位后,只有PC0x00000000)和CPSRnzcvqIFt_SVC)的值是固定的,另外寄存器的值是随机的
·         IRQ异常:1)当CPSR中的相应的中断屏蔽被清除时,内核的nIRQ信号被拉低时可产生IRQ异常; 2)由于ARM处理器的三级流水线结构,当异常发生时,PC的值等于当前执行指令的地址+8(即正确的中断返回地址+4),因此R14保存的值是 中断返回地址+4 ,所以当异常要返回时须执行以下指令: SUBS   PCR14_irq,#4             PC=R14 - 4 注意:在SUB指令尾部有个S,并且PC是目标寄存器,所以程序返回时CPSR将自动从SPSR寄存器中恢复; 3)将用户模式下的CPSR保存到SPSR_irq中; 4)设置PCIRQ异常处理程序的中断入口向量地址,在IRQ模式下该向量地址为0x00000018。。
·         未定义指令异常:(1)当ARM在对一条未定义指令进行译码时,发现这是一条自己和系统内任何协处理器都无法执行的指令时,就会发生未定义指令异常; 2)由于是在对未定义指令译码时发生异常,所以PC的值等于未定义指令的地址+4(即刚好为中断返回地址),因此R14保存的值是 中断返回地址 ,所以当异常要返回时可执行以下指令: MOVS   PCR14_und   
·         Abort异常:中止表示当前存储器的访问不能完成,是由外部的ABOUT输入信号引起的异常,分为两类:
o   预取指中止:由程序存储器引起的中止异常;
§  当程序发生预取指中止时,ARM内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常,因此当前PC的值为当前执行指令的地址+8(即正确的中断返回地址+4),因此R14保存的值是 中断返回地址+4 ,所以当修复了产生中止的原因后,不管在什么操作状态,处理器都会执行以下指令: SUBS   PCR14_abt,#4             PC=R14 - 4 
o   数据中止:由数据存储器引起的中止异常
§  当发生数据中止异常时,异常会在“导致异常的指令”执行后的下一条指令时才发生,因此当前PC的值为“导致异常的指令”执行后的下一条指令的地址+8(即正确的中断返回地址+8),因此R14保存的值是 中断返回地址+8,所以当修复了产生中止的原因后,不管在什么操作状态,处理器都会执行以下指令: SUBS   PCR14_abt,#8             PC=R14 - 8 

0 0