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 Mode是ARM唯一的非特权模式,这表示如果CPU处于这种模式下,很多指令将不能够执行,因此操作系统的资源得以保护。 (LINUX用户空间进程在这种模式)
(2) System Mode:这是V4及其以上版本所引入的特权模式。、
(3) IRQ Mode:中断模式。中断(不包括软中断)处理函数在这种模式下执行。
(4) FIQ Mode:快速中断模式。除了多了几个寄存器外,其他同IRQ一样。
(5) Supervisor Mode:监视模式。软中断(SWI)处理函数在这种模式下执行。(linux内核空间在这种模式下运行)
(6) Abort Mode:所有同内存保护相关的异常均在这种模式下执行。
(7) Undefined Mode:处理无效指令的异常处理函数在这种模式下执行。
(1) User Mode:用户模式。操作系统的Task一般以这种模式执行。User Mode是ARM唯一的非特权模式,这表示如果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:寄存器不一样,权限也不一样
(1) System Mode:寄存器一样,仅仅是权限不同
(2) 其他Exception Mode:寄存器不一样,权限也不一样
3,ARM相关指令学习
ARM指令
4
FP = 11
SP = 13
LR = 14
PC = 15
SP = 13
LR = 14
PC = 15
5,
ARM的七种异常
· 复位异常:1)当内核的nRESET信号被拉低时,ARM处理器放弃正在执行的指令,当nRESET信号再次变高时,ARM处理器进行复位操作; 2)系统复位后,进入管理模式对系统进行初始化,复位后,只有PC(0x00000000)和CPSR(nzcvqIFt_SVC)的值是固定的,另外寄存器的值是随机的
· IRQ异常:1)当CPSR中的相应的中断屏蔽被清除时,内核的nIRQ信号被拉低时可产生IRQ异常; 2)由于ARM处理器的三级流水线结构,当异常发生时,PC的值等于当前执行指令的地址+8(即正确的中断返回地址+4),因此R14保存的值是 中断返回地址+4 ,所以当异常要返回时须执行以下指令: SUBS PC,R14_irq,#4 ;PC=R14 - 4 注意:在SUB指令尾部有个S,并且PC是目标寄存器,所以程序返回时CPSR将自动从SPSR寄存器中恢复; 3)将用户模式下的CPSR保存到SPSR_irq中; 4)设置PC为IRQ异常处理程序的中断入口向量地址,在IRQ模式下该向量地址为0x00000018。。
· 未定义指令异常:(1)当ARM在对一条未定义指令进行译码时,发现这是一条自己和系统内任何协处理器都无法执行的指令时,就会发生未定义指令异常; (2)由于是在对未定义指令译码时发生异常,所以PC的值等于未定义指令的地址+4(即刚好为中断返回地址),因此R14保存的值是 中断返回地址 ,所以当异常要返回时可执行以下指令: MOVS PC,R14_und
· Abort异常:中止表示当前存储器的访问不能完成,是由外部的ABOUT输入信号引起的异常,分为两类:
o 预取指中止:由程序存储器引起的中止异常;
§ 当程序发生预取指中止时,ARM内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常,因此当前PC的值为当前执行指令的地址+8(即正确的中断返回地址+4),因此R14保存的值是 中断返回地址+4 ,所以当修复了产生中止的原因后,不管在什么操作状态,处理器都会执行以下指令: SUBS PC,R14_abt,#4 ;PC=R14 - 4
o 数据中止:由数据存储器引起的中止异常
§ 当发生数据中止异常时,异常会在“导致异常的指令”执行后的下一条指令时才发生,因此当前PC的值为“导致异常的指令”执行后的下一条指令的地址+8(即正确的中断返回地址+8),因此R14保存的值是 中断返回地址+8,所以当修复了产生中止的原因后,不管在什么操作状态,处理器都会执行以下指令: SUBS PC,R14_abt,#8 ;PC=R14 - 8
0 0
- ARM-32学习(一)
- ARM 学习笔记(一)
- ARM-64学习(一)
- ARM学习笔记(一)
- ARM学习笔记(一)
- ARM体系结构与编程学习(一)
- ARM体系结构与编程学习(一)
- ARM 学习笔记(一)基本知识
- 【ARM-Linux开发】DRM学习(一)
- ARM学习笔记(一)
- ARM学习笔记(一)
- ARM学习笔记一
- ARM学习阶段一
- ARM体系学习一
- ARM学习笔记(一)
- 一.ARM裸机学习之ARM汇编
- arm汇编语言学习笔记一
- 嵌入式arm学习总结(一)--电子基础知识
- 从wsgi规范说起
- AdaBoost算法学习
- 【hadoop】 1009-hdfs的shell命令
- Struts2 Post json
- [老老实实学WCF] 第五篇 再探通信--ClientBase
- ARM-32学习(一)
- java基础之异常
- 4.3
- 【BZOJ 2724】 [Violet 6]蒲公英
- 【hadoop】 2001-hdfs原理
- Mysql的备份与恢复方法整理
- 软件工程系11级毕业学生就业信息发布
- [老老实实学WCF] 第四篇 初探通信--ChannelFactory
- 第二章第十六题