|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 i. ]: a$ z! Q$ k" i/ A1.1 ARM 分类1 S' Y2 d0 D: b+ k6 r' O4 N
1.1.1 版本号分类/ U$ J5 D+ b4 b! @) N2 F3 X
以前分类的是 ARM7,ARM9... ARM11,在 ARM11 之后,就是以 Cortex 系列分类了:" e& e3 b G7 G+ \4 f& f
, {/ x$ o& q& M+ [& YCortex-R:应用在实时系统上的系列7 B [ t# ?& j I+ N5 ]* ]
Cortex-M:替代单片机的系列,M0 M3 M4 M7
3 W/ N' Y7 h3 \; j5 sCortex-A:A8 A9 A15 A72 A53% y+ C4 u1 S3 X+ P4 C
1.1.2 指令集分类
: C1 _4 l& C3 ?# y0 | 指令集原则上是向下兼容的。
, ?( B6 W: _; @* B+ Y
$ @+ t0 w2 @, b! h) n! o0 J# V 指令集是根据核来分的,比如 ARMv7指令集、ARMv8指令集等等
/ j. S' f' K% G6 _5 u
! b }# L0 X4 m1 v% n' }6 C" O1.2 ARM 商业模式及半导体公司- |: N6 V. ?. I5 m: S
1.2.1 IP 核(知识产权)
& b6 c# i* B" v/ t& l# r' |$ j+ \ ARM MIPS X86 PowerPC(IBM)0 O& ?2 B. T. O, Z- r
) w% q) T9 e G* q" X ARM 出卖 IP 而不卖芯片
# @! }% k; S$ ?- X) q
1 p6 a7 E( t5 K& Z$ z# r$ t& j# S1.2.2 半导体公司' A9 t0 r2 V7 T# z0 s) D) o/ q
主流的半导体公司有三星、高通、苹果、NXP(Freescale)、TI、ST、ATMEL、Ambarella、Amlogic、MTK、海思、全志、瑞芯微、展讯(基带)、炬力、联咏等等。
# Q* ^7 ]4 B& t+ h! v1 M! M3 g( Z! s0 c" f* g3 ]
1.2.3 芯片、处理器和架构的联系2 W- g) r" n7 I7 ]' ^' l
以 S3C2440 为例子:% D0 ~# t$ a( I( s
4 C5 g$ J3 V9 [# S6 c: \6 d
$ T* K8 j9 ?$ _4 n- y* Q( w# T; s) g5 C+ X- }$ x" _' v
1.3 ARM 处理器状态和处理器模式6 d* U) [) e) b- o
在不同的体系下,有一些概念有所不同。这里主要以 S3C2440 为例子。3 f4 _/ h* m3 v: [8 w
* z& S: O* N0 p/ c' [
1.3.1 处理器状态
+ \; v( X0 w% p8 H3 S处理器状态有两种:3 Y5 t, A' W3 Y
ARM 状态:执行效率高; O( Y1 D4 u6 d, ^: k9 k9 E
THUMB 状态:代码密度好
1 Q3 ~% W- n& z0 zARMV4 中,ARM 状态为32位,THUMB 状态为 16位,但是,在 ARMV7 中,ARM状态为32位,THUMB 状态为 16/32位状态,还有一种 THUMBEE状态,适用于 JAVA 运行的状态。
" h/ P0 n: F/ i处理器状态的切换指令: BX BLX; n& |" Z& @, R
指令集:8 j) G4 P, }! y: I" t, ^# K$ H
ARM指令:32位
) i( Y. {$ T0 r0 T, M3 xTHUMB指令:16位
, N% f. F1 r- wTHUMB2:32/16位
9 p( [% F5 e! ^/ q% QCORTEX-M 只是指令 THUMB2 指令子集
! H% |; V4 u7 J5 Q7 F' e9 j! _1.3.2 处理器模式% X5 t: a4 g. J2 L1 P
处理器模式共有 7 种:! `, ?. \9 y' {, T4 b- `+ i
usr:用户模式5 B6 E: @6 w+ E: h
fiq:快速中断模式2 A/ D; g$ w. w+ x# H, Q f
irq:普通中断模式
+ a, `% P/ c) Y" [svc:保护/特权模式. u& R7 ]- Z& ^9 z9 `# e
abt:异常模式3 i* f' r5 k, B b. T3 `! Q X
sys:系统模式
" N0 D' F2 U& sund:未定义模式
2 T3 Q" q3 C$ `! E& f, V设计的目的:提高相应速度, i8 V% A5 j4 c. `6 e* Z
注意:保护模式/特权模式,需要 MMU 和代码的支持) {/ S$ @# k7 y$ e t; t& p4 K
1.4 ARM 内部寄存器及 SFR3 a4 i# G$ H% ?. s
1.4.1 ARM 内部寄存器
2 F9 n, C$ f/ w% g: p: Q1 F此类寄存器设计在 CPU 内部,特点是速度快。0 m& H5 i( J1 c5 j
一共 37 个寄存器,31 个通用寄存器 和 6 个状态寄存器
! k5 _! e/ h3 p通用寄存器:R0-R12,R13,R14,R15,R16
# J. P6 r8 y4 x0 h) t' ?R13(SP):栈指针,不同模式下栈空间是不一样的
. x6 J. {1 D" h0 [5 H& m+ [ `R14(LR):链接寄存器,存放断点,硬件自动完成
d/ o3 j' u7 v7 L! wR15(PC):程序指针,取指令的位置+ E8 H4 d. T2 }& N4 x6 z% i8 ?
状态寄存器:PSR 分为 CPSR、SPSR& }" w$ U" o$ P' k
条件状态:NZCV
: W- J' S8 `8 Y0 Y$ `3 ]保留位 e6 d6 w) A5 H: V( D6 _
IFT! |7 R! l/ q" D* ~6 O/ X. h- \
模式位:M4-M0
7 d8 E% ]3 m, k3 F9 L; ]- s6 p
|4 J+ a* L5 Y' P1 Z+ C! D7 l' p8 U0 G6 Q" z# O; ~
: Z; w! Z* u, H0 |5 B9 }
& t& M; r( @ F% M3 I$ W1.4.2 SFR 特殊功能寄存器
2 n) n' }* u' T2 r& l4 gIO 端口/寄存器,它属于外设的组成部分。9 M# F7 O# `) F" c- F2 w5 }
4 N& x3 b/ O( Q% J
ARM 是采用与存储器统一编址的方式使用软件编程控制某一硬件,起使就是编程读写该硬件的寄存器+ J* ]4 K& I# B! [
% g* j+ |+ ^- T. o; [% t1.5 ARM 异常处理和存储系统
z: n4 f b0 d* H1 w5 X% U1.5.1 模式与异常* O8 Z& S! @3 ?$ [
异常的类型:Reset、undefined instruction、swi、prefetch/bort、data/abort、Reserved、IRQ、FIQ0 [2 w' f) j o: Z
处理器的模式:每一个异常对应一种模式,但不是一一对应关系
) Q1 J: g2 f3 x' f1.5.2 中断向量表) n' s% I% t6 k/ f$ t" m3 D
" a4 [6 K+ b1 d9 X2 |
* f1 ^( t' c! \' _0 x9 j
, \; A, I# {4 s# t0 n" f1.5.3 大端与小端存储# X6 I1 W0 C3 e! [
在大端格式中,字中最高有效位 MSB(Most Significant Byte)存储在编号最低的字节中,最低有效位 LSB(Least Significant Byte)存储在编号最高的字节中。因此存储器系统的字节 0 关联到数据行的 24 到 31。& X/ y( S( @; A1 ~ q$ U
$ G2 N/ `. P3 i& u7 S8 V+ [% X
5 l _; v E$ v% B7 R) Z5 c. |' w& \# B3 w1 F
$ N4 @6 B+ S9 b, R2 Y7 u, v. ^ c
3 o/ J: J: S4 z: s- N) i! I在小端格式中,字中编号最低的字节被认为是最低有效位 LSB,编号最高的字节为最高有效位 MSB。因此存储器系统的字节 0 关联到数据行的 0 到 7。( ]! |& F& K. j; B
" L3 s8 Q1 Y: H# r V% L
9 E9 U9 M0 J, D) r |
|