|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. T$ G" U$ [1 K9 S* d& E4 {3 T- J
1.1 ARM 分类
$ z! r3 H3 f$ j& ^8 t$ P$ b1.1.1 版本号分类
1 _$ _# c* p! i2 @& l 以前分类的是 ARM7,ARM9... ARM11,在 ARM11 之后,就是以 Cortex 系列分类了:
. i& p$ `9 K: k/ D- w; Z; A! h. t( M- J+ a% W
Cortex-R:应用在实时系统上的系列
" q' y4 ~+ ?/ R/ r+ YCortex-M:替代单片机的系列,M0 M3 M4 M7
3 V( ]1 r9 `: I, X, T& iCortex-A:A8 A9 A15 A72 A53
k. U t8 [6 N1 ]) O1.1.2 指令集分类
( e0 W$ d9 u' u" ?- W 指令集原则上是向下兼容的。
( Y( q2 h5 I* Y% y) L+ z
8 h8 P$ x" i! D4 P 指令集是根据核来分的,比如 ARMv7指令集、ARMv8指令集等等+ y; P2 c" r" S! W) S9 q5 [5 O
% j) }4 d% f% E( ?+ X1.2 ARM 商业模式及半导体公司" O" _/ p- p+ ^% l2 j" P
1.2.1 IP 核(知识产权) j, C) G6 G# ]# B, f
ARM MIPS X86 PowerPC(IBM)* T7 J5 f9 p) L/ B* h" P
" k( q J3 s2 N% ]# w ARM 出卖 IP 而不卖芯片% v! H! a- P0 d. U- ^- ]9 c& \0 z$ O
" o/ a8 A7 P% {6 }1.2.2 半导体公司7 o S, I* o) |6 ~' X3 M) Z
主流的半导体公司有三星、高通、苹果、NXP(Freescale)、TI、ST、ATMEL、Ambarella、Amlogic、MTK、海思、全志、瑞芯微、展讯(基带)、炬力、联咏等等。
9 u" y% X- i/ u7 `
, n5 r$ ?- m+ D$ L. `3 p" G1.2.3 芯片、处理器和架构的联系
& k/ r+ i& d& K 以 S3C2440 为例子:5 B* a6 y0 H: W% {3 A4 A2 f. e8 ~
4 I& S" W5 w- E* h; M3 g4 U
* g& x; {% r) x9 K1 k
0 L1 B# |7 K! T( @$ T
1.3 ARM 处理器状态和处理器模式/ F5 }9 J- v: t t
在不同的体系下,有一些概念有所不同。这里主要以 S3C2440 为例子。
2 L4 R' G! f- i1 T- o7 ?3 s# d: u! r8 q7 [
1.3.1 处理器状态
3 o3 u1 C1 k- J8 u0 [/ X处理器状态有两种:
/ n! l3 ]1 f) ^& j! b. X' hARM 状态:执行效率高# w% ?. f- L9 j! ~1 V
THUMB 状态:代码密度好+ A; j2 ^8 ~; k
ARMV4 中,ARM 状态为32位,THUMB 状态为 16位,但是,在 ARMV7 中,ARM状态为32位,THUMB 状态为 16/32位状态,还有一种 THUMBEE状态,适用于 JAVA 运行的状态。8 D! Y1 n8 U5 S
处理器状态的切换指令: BX BLX/ L: }2 }2 _/ y+ ]2 A' _, S& |; d" C: F
指令集:
! u1 I- I l- Z. g7 a8 ^ARM指令:32位3 l/ b- n! t# }5 A, ]
THUMB指令:16位+ L" ]1 _: l i R1 u
THUMB2:32/16位
- c; u1 |9 h1 W; U3 yCORTEX-M 只是指令 THUMB2 指令子集& s- L3 P& G K0 U& K6 q
1.3.2 处理器模式
9 M9 s7 z1 z+ B: n8 F C处理器模式共有 7 种:
" f8 n6 o2 j F% x9 ^usr:用户模式2 U0 V* E+ g) A0 O/ m { E
fiq:快速中断模式9 }( s0 G& _3 z' ^: l
irq:普通中断模式
' n9 U6 i+ f6 M1 ]" e3 j- i' F4 Usvc:保护/特权模式" j+ P, O: v7 G7 K9 P* i
abt:异常模式+ }* ?. M: v* h
sys:系统模式
8 {, P2 t$ l7 I$ x1 Uund:未定义模式+ J0 r( {8 c3 ?. U% Y! D8 D2 |
设计的目的:提高相应速度 ?" s5 U4 ]% f3 Q1 f8 \, y, L
注意:保护模式/特权模式,需要 MMU 和代码的支持/ C4 O$ s+ ~7 u7 Y- C. o( \
1.4 ARM 内部寄存器及 SFR$ \3 Y8 D7 m4 D6 ?& g# }# t
1.4.1 ARM 内部寄存器
& j& w2 v$ R9 V' k5 ]4 M4 S此类寄存器设计在 CPU 内部,特点是速度快。
5 o8 c1 I, d& Q/ h7 J一共 37 个寄存器,31 个通用寄存器 和 6 个状态寄存器
$ }, v% f, i! B1 M; }5 ^通用寄存器:R0-R12,R13,R14,R15,R16: [/ i) A6 R& H* C- h( k* L
R13(SP):栈指针,不同模式下栈空间是不一样的* u h G" X9 X7 \& A4 b
R14(LR):链接寄存器,存放断点,硬件自动完成
! X6 r8 e, X) mR15(PC):程序指针,取指令的位置
* F- ~* K" ~ K. Q1 J状态寄存器:PSR 分为 CPSR、SPSR1 z4 J1 C- S! s B
条件状态:NZCV8 F8 e- ~! Q. b0 ~
保留位
: B, g4 R4 T* l# k7 UIFT
. Z- G6 f7 p0 P模式位:M4-M0
# ]( r3 ~) L2 Z7 N5 V
j1 L( o/ S: G# \: V1 A1 m& f/ \6 G2 L
1 x; b: |& K% b* X7 V
/ J: Q- Z" Z3 ~4 V8 f* g+ g
1.4.2 SFR 特殊功能寄存器
5 l! P' q& {3 ^ a1 D1 bIO 端口/寄存器,它属于外设的组成部分。
) l0 T: E! x; e2 f5 d; o2 ?! K8 R3 _: X- n" x! U
ARM 是采用与存储器统一编址的方式使用软件编程控制某一硬件,起使就是编程读写该硬件的寄存器: R8 f" j$ I) h- V" M
i/ Y! J8 f: D4 Y9 x; V8 E/ d8 g+ w
1.5 ARM 异常处理和存储系统
% q# S$ i( j3 e* }) N1.5.1 模式与异常8 n1 c9 c2 c" [( o: h9 M
异常的类型:Reset、undefined instruction、swi、prefetch/bort、data/abort、Reserved、IRQ、FIQ# i. I" k& t1 p2 w7 w# P- D
处理器的模式:每一个异常对应一种模式,但不是一一对应关系
3 o, E: A8 }8 P0 Z2 x' b. |& h; r8 Q1.5.2 中断向量表
E9 Q& K' r9 r" ]3 v5 [) N9 G3 }! G
' c$ I9 x4 V2 L
( i* D/ O- l: x- l8 U( `1.5.3 大端与小端存储
( D8 Q1 K1 L+ E 在大端格式中,字中最高有效位 MSB(Most Significant Byte)存储在编号最低的字节中,最低有效位 LSB(Least Significant Byte)存储在编号最高的字节中。因此存储器系统的字节 0 关联到数据行的 24 到 31。
* R) b1 Z2 j: a6 _7 o& V4 m0 M0 ?/ _
7 J0 _% o( s" b4 H8 x, S4 m' |
" z+ ~+ T6 f9 U# R9 @2 Q! @ + L J4 D/ r1 v6 ~
% p% _& w: M4 G
在小端格式中,字中编号最低的字节被认为是最低有效位 LSB,编号最高的字节为最高有效位 MSB。因此存储器系统的字节 0 关联到数据行的 0 到 7。 R2 R3 J- R1 S7 C
) V8 L' O% @! b" K7 `: I
W. M6 N: R7 D, i- i
|
|