|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 @7 }/ U" m8 T4 A3 g* W! D6 u: i
1.1 ARM 分类
( B6 D) F. x5 `, \- f1.1.1 版本号分类
* v4 B9 k/ R3 U& | 以前分类的是 ARM7,ARM9... ARM11,在 ARM11 之后,就是以 Cortex 系列分类了:/ t& _2 [, z7 }7 [5 Z/ @
2 G4 N- j# [( d" i
Cortex-R:应用在实时系统上的系列( }. V7 M4 H% i2 }# G- v
Cortex-M:替代单片机的系列,M0 M3 M4 M7
$ I3 B i* P: s+ g a1 N' W1 o d$ dCortex-A:A8 A9 A15 A72 A53
1 ?! [& w* Y0 X7 K1.1.2 指令集分类/ d7 F/ R3 l0 _ j+ {
指令集原则上是向下兼容的。
5 Y4 H, s# G4 f
: v9 H% z/ Q3 [, `$ @* [ 指令集是根据核来分的,比如 ARMv7指令集、ARMv8指令集等等
[% u0 S; L. a, a/ u
( v( r! ]+ \+ }- D. k1.2 ARM 商业模式及半导体公司5 i1 Z1 L, G+ {
1.2.1 IP 核(知识产权)% p6 g ^+ v5 b" Z
ARM MIPS X86 PowerPC(IBM)2 \- W( q9 s( ]) h
6 e6 U( r7 M. u
ARM 出卖 IP 而不卖芯片) G3 [1 c5 G$ U0 H: I3 S- Q
& j# w% k# L* B4 B, a1.2.2 半导体公司
) Z6 G V3 c8 F' z! | Q 主流的半导体公司有三星、高通、苹果、NXP(Freescale)、TI、ST、ATMEL、Ambarella、Amlogic、MTK、海思、全志、瑞芯微、展讯(基带)、炬力、联咏等等。1 G( q* J! U0 o& @3 R4 S4 M9 A
2 C& @, ~7 M$ m; N1.2.3 芯片、处理器和架构的联系
9 Q. c; H) C* m7 v. q9 s2 [. y 以 S3C2440 为例子:
: H% ?6 h( n. [. | h: q$ f5 v7 O4 o, s
2 ^7 F4 n1 ]; l, U
0 x1 P4 L& Z O% v7 G) r: G- W; z# b6 J( R
1.3 ARM 处理器状态和处理器模式
; c5 ~+ ^# _* Z# i. z h 在不同的体系下,有一些概念有所不同。这里主要以 S3C2440 为例子。! G7 m) t2 G4 Z8 r3 x! ?# k
9 f8 R, \% S4 b7 i1.3.1 处理器状态3 H; A& @) ^6 h4 Y) `
处理器状态有两种:* f& B4 y5 o) E0 S
ARM 状态:执行效率高
, P, g7 e4 G2 sTHUMB 状态:代码密度好
4 y5 u% r3 X! ], Y' E5 EARMV4 中,ARM 状态为32位,THUMB 状态为 16位,但是,在 ARMV7 中,ARM状态为32位,THUMB 状态为 16/32位状态,还有一种 THUMBEE状态,适用于 JAVA 运行的状态。) g5 Q9 c H, o0 [
处理器状态的切换指令: BX BLX
l8 A3 o. Q: ~, P" Z" p" x指令集:
; b4 {+ a6 M/ f. J& U* e$ e7 ?ARM指令:32位6 h' G8 _7 ~) O. p h, Q2 [$ x: B
THUMB指令:16位
& x) i( V3 i+ N; o N* Q7 W% RTHUMB2:32/16位
1 s" K0 u; B c! F& UCORTEX-M 只是指令 THUMB2 指令子集( y) {" l6 w8 b! M7 g% U
1.3.2 处理器模式( S8 n% J) \0 ~& f
处理器模式共有 7 种:
6 C( L0 f+ K% H9 r {6 P/ Iusr:用户模式
! b4 l5 W& H/ Zfiq:快速中断模式
a3 n6 A6 g* w$ L' eirq:普通中断模式* r, d7 D. _7 {: b, Y
svc:保护/特权模式
/ L' k3 u. i, Q& L, b" q' tabt:异常模式6 q& D5 G* X9 {/ A
sys:系统模式$ t% h7 R' c2 X0 B1 F
und:未定义模式
- w& E; C# W# ~1 w+ A' g设计的目的:提高相应速度- c# c# O4 X3 a# I% }. z, M7 A
注意:保护模式/特权模式,需要 MMU 和代码的支持! E1 F- G4 |+ X) e7 w* T3 X+ s, \
1.4 ARM 内部寄存器及 SFR
$ q: M* I% u) d1.4.1 ARM 内部寄存器
: u5 V% ]1 N+ {1 R此类寄存器设计在 CPU 内部,特点是速度快。
6 x& N- J. G2 x7 H一共 37 个寄存器,31 个通用寄存器 和 6 个状态寄存器) ?8 c2 ?- n3 r" p
通用寄存器:R0-R12,R13,R14,R15,R16
: B9 A# o9 {% ]6 s: yR13(SP):栈指针,不同模式下栈空间是不一样的
& b" Q* G! [* ]! y# L# tR14(LR):链接寄存器,存放断点,硬件自动完成7 b' L; |2 M1 u: W5 b. u2 y
R15(PC):程序指针,取指令的位置# p& j9 }$ _9 |/ F0 }8 y( R
状态寄存器:PSR 分为 CPSR、SPSR$ ` t+ H' Y" A! S
条件状态:NZCV
% j( d7 Q2 Q2 Q6 @保留位, e6 a/ p4 p+ X! q1 X, P
IFT
+ _7 o/ @, }' K: A! F( Y8 H0 G模式位:M4-M04 j% ?% z2 i; k# h
% ^' w$ g7 F9 u$ P8 Q
) P# `) k0 O0 A1 P% Y
C, C J5 f2 ^6 U6 S+ z, W. g9 A/ {: u
/ H( K4 r! m' t' z5 b1.4.2 SFR 特殊功能寄存器
r! o, c4 l% c) Q6 R- hIO 端口/寄存器,它属于外设的组成部分。( z' d! k5 I- o" M
C) W$ l9 {" ?8 ?
ARM 是采用与存储器统一编址的方式使用软件编程控制某一硬件,起使就是编程读写该硬件的寄存器- E+ v( T! s& h6 M
0 S. G, t2 q; e3 ^ V; k3 a
1.5 ARM 异常处理和存储系统3 K: s+ q, L7 {+ V: d* r
1.5.1 模式与异常9 F0 e3 W+ f( w/ u# Y/ a
异常的类型:Reset、undefined instruction、swi、prefetch/bort、data/abort、Reserved、IRQ、FIQ
[8 F% J& I# C! i) w处理器的模式:每一个异常对应一种模式,但不是一一对应关系
8 p. w5 g' N/ i' X! T1.5.2 中断向量表4 c: Q$ D3 A2 Z! y. S
) Z( E0 B: A7 v, _
e6 H0 x0 D8 I& [( g$ {
: e5 M6 W: j. }6 q& e$ `4 l1.5.3 大端与小端存储
- ^1 {7 z) t# j( i/ j" l 在大端格式中,字中最高有效位 MSB(Most Significant Byte)存储在编号最低的字节中,最低有效位 LSB(Least Significant Byte)存储在编号最高的字节中。因此存储器系统的字节 0 关联到数据行的 24 到 31。; P- A( A6 a& b9 T4 W7 ?
8 \: E4 N2 F' v4 E, I% r5 T
( B$ ^. z3 ^6 Y5 ^1 M
* O. J. B% x7 d: s5 I } 0 V+ L5 A) M( e; F
- m7 f! m. E2 S7 ^8 J1 C" y
在小端格式中,字中编号最低的字节被认为是最低有效位 LSB,编号最高的字节为最高有效位 MSB。因此存储器系统的字节 0 关联到数据行的 0 到 7。
; o9 |5 ]2 t$ @$ M
' K" Q4 f) X. a0 n
6 R- e* Y1 F2 W$ w |
|