×
单片机 > 单片机程序设计 > 详情

ARM -- core

发布时间:2020-06-20 发布时间:
|
ARM(advanced RISC machine) 代表三层意思:
始终代表ARM公司
始终代表ARM技术
始终代表ARM芯片
为三个代表。
1、ARM 8种工作模式
 user  fiq  irq  svc  abort  undef  system  (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.
关键字:ARM  core 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计