微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM -- core

ARM -- core

时间:11-10 来源:互联网 点击:
ARM(advanced RISC machine) 代表三层意思:

始终代表ARM公司

始终代表ARM技术

始终代表ARM芯片

为三个代表。

1、ARM 8种工作模式

userfiqirqsvcabortundefsystem(mon[monitor])
非特权模式快速中断请求(fast interrupt request )中断请求超级用户预存取未定义系统(特权)(contex-a特有模式(安全))
2、指令集:

ARM 指令集 -- 32bit

thumb指令集 --16bit

contex-A处理器

16 and 32 thumb指令集

16 and 32 thumbEE指令集

3、ARM 约定

byte: 8bit

halfword: 16bit

word:32bit

doubleword:64-bit(8byte)

jazelle cores 可支持 java bytecode.

4、一般ARM处理器有37 or 40 个 寄存器(regs) --- 是这样计算的.r0--r7 有1种八组 r8-r12有5组x2中=10.r13有7组一种=7.r14也是7组一种=7,r15 1 ,cpsr 1 .spsr 6

8 + 10 + 7 + 7 + 1 + 1 + 6 = 40(contex - A)

40为contex-A 四核系列

其中1个为pc--(program counter)(r15)

1个cpsr(current program status register)

5个spsr(save program status register)

30个通用regs

其中r14为LR(link register)

r13为SP(stack pointer)

5、关于异常处理

异常种类有7中、模式有五种。异常会返回偏移量

偏移量: 异常事件 对应模式

0x1c FIQ FIQ

0x18 IRQ IRQ

0x14 ....

0x10 data abort ABORT

0x0c prefetch abort ABORT

0x08 software interrupt SVC

0x04 indefined instuction Undef

0x00 Reset svc

处理异常为四大步、三小步。

一:拷贝cpsr到spsr -- 保存当前程序状态

二:设置cpst位:

1:改变处理器的状态进入ARM态(4 byte)(保持word对齐)

2:改变处理器模式就如相对应的异常模式

3:设置中断进制位禁止相应中断

三:保存返回地址到LR(r13)

四:设置pc为相应的偏移量(c15).

6、字节序:

前提为:多字节数据在存储器的存放位置

低 低 小-- 小端序

低 高 大--大端序

ARM以小端为主、但是大小都支持、

7、ARM 指令集简介

所有的arm指令集均为32-bits

大部分为单周期指令 -- T = 1/F F=主频 如contex-A8为4F为1G. 那么1/1G = 1ns.so -- 执行一条指令的时间为1ns.

采用Load/Store 架构

8、ARM 协处理器 多达16 (cp1 - cp15)

9、关于jazelle 由ARM cores直接去执行.而不需要通过JVM.(买的ORCAL公司的接口)

Normal jvn:1.0

ARM9EJ: 5.5

10、关于指令流水线

ARM7 -- 3条

ARM9 -- 5条

ARM10E --6条

contex-A8 -- 基于v7体系--13条流水线。

11、ARM条件执行

常用条件码:

EQ 0000 相等

NE 0001 不相等

GE 1010 大于等于

LT 1011 小于等于

GT 1100 大于

LE 1101 小于

AL 1110 忽略

12、ARM数据处理指令机器码格式

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

31--------28 27--26 25 24----21 20 19------16 15 ---- 12 11------7 6--5 0 3----0

指令条件码 I 指令操作码 S 第一操作数 目标寄存器编码 移位数 移位方式 第二操作数

即:N E C V 判断是否立即数 是否影响CPSR 移位方式有LST LSR ASR ROR四种

13、关于立即数

如何判断是否为立即数

展开之后判断零之间够不够八位

如下面几个数:

0x1234 000--1,0010,0011,01--00 中间有11位、所以不是立即数.

0x34 0011,0100 是立即数

0xf000000f 1111,000000,1111 是

0xFFFFFFFF 1111,1111,1111,1111,1111,1111,1111,1111, 不是立即数但是是有效数.

0x1f08 0001,1111,0000,1000 是

--------------------------------

keven.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top