Cortex-A相对经典ARM处理器的扩展
来源:互联网 发布:overcooked for mac 编辑:程序博客网 时间:2024/05/01 21:37
(一)Cortex-A多了一种工作模式:monitor
1. usr 用户模式: 非特权模式,大部分应用程序运行在这个模式下
2. fiq 快中断模式: 高优先级的中断
3. irq 普通中断模式: 低优先级的中断
4. svc 超级用户模式(管理模式): 软中断和复位
5. abort 中止模式: 当存取异常
读取指令中止
读取数据中止
6. undef 未定义指令模式: 执行到一个cpu不能识别的指令,当一个高版本的指令(cortex-a)运行到低版本的cpu(arm7)上是,可能会发生未定义指令异常
7. sytem 系统模式: 特权模式,os处在系统模式下
8. monitor 安全模式: 为安全而扩展出
(二)由于Cotex-A多了一种monitor工作模式,所以又多了三个寄存器(R13_mon,R14_mon,SPSR_mon)
cortex-a的寄存器个数
1. system和usr公用一组寄存器
2. r0-r7 一组 ,8种模式公用一组 8
3. r8-r12 2组,fiq私有一组,其余7种公用一组 2*5
4. r13(sp) 7组 7
5. r14(lr) 7组 7
6. r15(pc) 1组 1
7. cpsr 1组 1
8. spsr 6组 6
Cotex-A 寄存器一共有40个寄存器
r0 -r12 一般用途
sp 栈指针 用来指向一个可以使用的内存
lr(r14) 链接寄存器,用来保存pc的值
pc 程序计数器,用来记录程序执行的位置
cpsr 当前程序状态寄存器,用来记录cpu运行的状态
spsr 保存程序状态寄存器
(三)ARM数据类型
ARM采用32位架构
ARM约定:
Byte(字节) 8bits
Halfword(半字) 16bits
Word(字) 32bits
Doubleword(双字) 64bits (Cortex-A处理器特有)
(四)ARM指令集
大部分ARM core提供:
- ARM指令集(32-bit)
- Thumb指令集(16-bit)
ARM11处理器:
- ARM指令集(32-bit)
- 16位和32位的Thumb-2指令集
Cotex-A 处理器
- ARM指令集(32-bit)
- 16位和32位的Thumb-EE指令集
Jazelle cores支持Java bytecode
当处理器执行在Jazelle状态:
所有指令8bits宽
处理器执行word存取,一次取4条指令
(五)AMBA (arm微控制器总线架构)
AMBA:
AHB 高速总线 cpu core ,DMA,SDRAM,SRAM,FLASH,APB BRIDGE
APB 外设总线 GPIO,INTERRUPT,I2C,SPI,TIMER,ADC,USB
ARM处理器的后缀名
T: 支持thumb 指令
D: 支持片上DEBUG
M: 64位的长乘法
I: 嵌入式ICE逻辑单元
S: TDMI的缩写
E: 支持DSP指令
J: java字节码
F: 硬件浮点
(六) cpsr的位含义
N 运算结果为负
Z 运算结果为0
C 进位,借位
V 溢出位
处理的状态 4种
T=0;J = 1 处理器处于Jazelle状态
T = 0;J=0; 处理器处于 ARM 状态
T = 1;J=0 处理器处于 Thumb 状态
T = 1;J=1 处理器处于 ThumbEE 状态
处理器模式 8种
10000 User mode; 10001 FIQ mode; 10011 SVC mode;
10111 Abort mode; 11011 Undfined mode; 11111 System mode;
10110 Monitor mode; 10010 IRQ
(七)异常处理
1. 8种模式
7种特权,1种非特权(usr)
2. 7种特权:
2种 非异常的特权模式: system,mon
5种 异常的特权模式: fiq,irq,svc,undef,abort
3. 异常处理: 异常源一旦发生,cpu所做的处理,这个过程是cpu自动完成的,不需要代码实现
异常处理实现需要7步,4大3小
4. 异常返回:
恢复pc
恢复cpsr
(八)异常向量表基地址:
arm7,ARM9,ARM10只可以在0(低端向量表)地址和0xffff0000(高端向量表)
arm11,cortex-a 可以在任意设置异常向量表的基地址,由cp15当中的c12寄存器控制异常向量表的基地址
(九)S5PV210地址映射:
地址范围 范围 用途
0x0 -0x1fffffff 512M boot
0x0 -0xffff 64K IROM norflash 三星固化的一段代码,用来做启动使用
0x20000-0x38000 96K IRAM 内部静态内存
0x20000000-0x3fffffff 512M dram 用于外接动态内存
0x40000000-0x7fffffff 1G dram 用于外接动态内存
0xe0000000-0xffffffff 512M SFR 这一部分的地址用来接芯片内部的外设,这一部分的地址和芯片内部的电路连接在一起,用来控制片内外设
- Cortex-A相对经典ARM处理器的扩展
- ARM Cortex-A系列处理器
- ARM Cortex-A 处理器和 GCC 命令行
- ARM处理器的Cache之cortex a8
- ARM Cortex 处理器
- [转]ARM-cortex处理器简介
- ARM公司的Cortex内核Cortex-A,Cortex-R和Cortex-M之间有什么区
- ARM cortex a 的SDRAM (DDR)
- ARM cortex a 的串口通信
- ARM cortex a 的 LCD显示
- Cortext-ARM公司的ARM芯片内核:Cortex-A Cortex-R Cortex-M
- Cortex-A处理器对比表
- ARM核流水线——ARM7,ARM9E,ARM11,Cortex-A系列处理器
- 选择ARM处理器,ARM7还是Cortex-M3
- 选择ARM处理器,ARM7还是Cortex-M3
- 选择 ARM处理器,ARM7还是Cortex-M3?
- 选择 ARM处理器,ARM7还是Cortex-M3?
- 选择 ARM处理器,ARM7还是Cortex-M3?
- Extjs的gridPanel中列点击图片调用方法
- 驱动编程准备 配置内核树
- 那些年写过的shell------模式匹配
- RAII:互斥量
- java开发中经常遇到的问题
- Cortex-A相对经典ARM处理器的扩展
- VC 6.0工程向VS 2010转换的问题
- OCP-1Z0-053-V12.02-335题
- 学习软件开发应该看的书
- LeetCode题解:Reverse integer
- 大学c语言程序
- Ubuntu上安装Qt5
- Auto Layout Guide---自动布局指南(一)
- Tomcat错误集合