|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
% Q$ Y% n+ ~, A0 i1.1 ARM 分类
1 o3 x# v- _" L. \1.1.1 版本号分类6 P% @" h5 ^/ n$ d# Z$ |
以前分类的是 ARM7,ARM9... ARM11,在 ARM11 之后,就是以 Cortex 系列分类了:- h9 X/ n5 U6 Q: P, {
1 w: b) J2 y( v) {
Cortex-R:应用在实时系统上的系列
; R* u' k3 C8 m5 Q! M/ {Cortex-M:替代单片机的系列,M0 M3 M4 M7
3 [4 E7 w7 L8 YCortex-A:A8 A9 A15 A72 A53' h5 ]( E9 d2 F' U" D& [0 u p8 b
1.1.2 指令集分类
4 ~( J" D& X( g4 b7 E' N 指令集原则上是向下兼容的。6 l8 h1 X" k7 { U
/ G# \* B5 c: m& G( w) h* _' A 指令集是根据核来分的,比如 ARMv7指令集、ARMv8指令集等等4 P. [6 K. [1 T$ M. f4 c
0 k4 x/ j* }0 Q$ m4 h
1.2 ARM 商业模式及半导体公司3 i% L2 y& e/ u/ n
1.2.1 IP 核(知识产权)
, j& ?; J) c3 Y7 Y* P W ARM MIPS X86 PowerPC(IBM)
3 i; U5 A" Z; V- }4 J6 d) o, O4 n+ q4 y. B
ARM 出卖 IP 而不卖芯片
# ~* G* {& v* K- |9 \( |1 B9 o- l% v/ I. p1 e8 `8 l
1.2.2 半导体公司, E. O2 k9 [- ]7 h
主流的半导体公司有三星、高通、苹果、NXP(Freescale)、TI、ST、ATMEL、Ambarella、Amlogic、MTK、海思、全志、瑞芯微、展讯(基带)、炬力、联咏等等。8 k0 T4 h* h9 M9 Q
4 B, ]+ ?6 K+ n& E4 P# v
1.2.3 芯片、处理器和架构的联系
) w9 ]' ?3 y4 l+ t/ ?+ l 以 S3C2440 为例子:
7 q# ]+ o+ _, u; Y- E: |
- r3 ^, U/ u) u4 K, W
# M# B, i4 [' [7 A& k3 r
, s' B. d7 x( ]0 I* R! B
1.3 ARM 处理器状态和处理器模式) [9 k F# |4 C% H! p
在不同的体系下,有一些概念有所不同。这里主要以 S3C2440 为例子。
$ z7 D: x- R) W4 k' Q( X# J# p, ?8 N& Q, f& k0 y
1.3.1 处理器状态
3 H( m! T1 O' Z5 q1 h6 |" _处理器状态有两种:) o5 x0 x" U& Y" I% B! s( S+ g
ARM 状态:执行效率高: O/ N+ |5 X6 l5 e
THUMB 状态:代码密度好
# e1 n+ ~' K& `5 H% k% LARMV4 中,ARM 状态为32位,THUMB 状态为 16位,但是,在 ARMV7 中,ARM状态为32位,THUMB 状态为 16/32位状态,还有一种 THUMBEE状态,适用于 JAVA 运行的状态。* g2 h. F- E, m! d* Q0 v0 a6 |( }
处理器状态的切换指令: BX BLX4 K! c! Y6 n* O; W8 \' k
指令集:" n% w; q. f. o
ARM指令:32位. [+ w( t0 G* g- f
THUMB指令:16位 _9 m+ E: q" Z
THUMB2:32/16位/ x$ f/ ?/ Y$ J5 M
CORTEX-M 只是指令 THUMB2 指令子集
_: e4 |2 V5 W3 j1.3.2 处理器模式7 }' Q# x" I2 z1 W0 `$ _& X
处理器模式共有 7 种:
- f" c: C( i8 Gusr:用户模式
2 V$ z# |9 T+ rfiq:快速中断模式
: ?( Y( k, n6 w: p* J+ n! cirq:普通中断模式! G6 ]& x- y4 ~0 f1 x' t9 S) g
svc:保护/特权模式( U' I' d5 U* W3 Z& G' A( S; \
abt:异常模式, s4 I' p* z4 N' o$ `% E: O
sys:系统模式
" I1 ?( c( K& @6 G0 _8 Wund:未定义模式
; U* A q- E8 O1 e8 n, s设计的目的:提高相应速度
" x3 E' [2 W; _# Q6 S# C注意:保护模式/特权模式,需要 MMU 和代码的支持
0 {2 t d% |2 k! F1.4 ARM 内部寄存器及 SFR" M' O4 A0 X/ w/ q4 B
1.4.1 ARM 内部寄存器3 O' L7 [' ~8 ?; O( @0 x' b: V
此类寄存器设计在 CPU 内部,特点是速度快。& R, y- Z- h5 W2 S
一共 37 个寄存器,31 个通用寄存器 和 6 个状态寄存器5 M2 l' P2 w: d) G/ I2 U' A5 `$ m
通用寄存器:R0-R12,R13,R14,R15,R16/ k3 K7 [$ p5 Q' V! y- f! m7 ~3 P
R13(SP):栈指针,不同模式下栈空间是不一样的
, Q5 ?) N% Z) {+ ^R14(LR):链接寄存器,存放断点,硬件自动完成
" }3 a+ U+ u0 _R15(PC):程序指针,取指令的位置
4 e! x% b6 K0 }1 l/ [6 X, }状态寄存器:PSR 分为 CPSR、SPSR
9 C) A& ^5 G& Z/ N1 v条件状态:NZCV
# L3 \2 @1 A5 v; v' C( q: H# W保留位
5 E! u: I( @. ]- \, [7 {, E# g0 Y/ WIFT
: C9 {; W! v A$ v; H( T0 Y7 ~6 X模式位:M4-M0
+ m) N( |# F& r& j+ f. I3 N
" d R6 ^' b" M4 q* ?: i& [. G, V7 Z4 H. N8 ^
0 l2 D3 o2 s+ N) r* ?
- m$ t. k" K' R& n) ]- J1.4.2 SFR 特殊功能寄存器2 C( h' x* v) a6 Q
IO 端口/寄存器,它属于外设的组成部分。- R, w( X K" l: n6 M& z
/ _% s- \, S# K$ ]; y- E8 {
ARM 是采用与存储器统一编址的方式使用软件编程控制某一硬件,起使就是编程读写该硬件的寄存器1 U5 |1 K! H9 v: ~9 [& H
. ?: J' { j; c! F& A* _$ g5 V. L1.5 ARM 异常处理和存储系统! @9 W, w% Y5 d( x
1.5.1 模式与异常" f& _$ [* h K- C. Y3 Z! A5 N+ _
异常的类型:Reset、undefined instruction、swi、prefetch/bort、data/abort、Reserved、IRQ、FIQ y4 o4 x( m/ Q( F, G$ g
处理器的模式:每一个异常对应一种模式,但不是一一对应关系. l9 [& j# l5 G8 n
1.5.2 中断向量表7 v1 }4 F4 L1 X Q( h, K% Y
5 _) |: Y. S }1 D1 ^
7 d' s$ E" e8 S% e) w8 J
& z, x" m' K% N# d) C1.5.3 大端与小端存储
( Q( S/ Q5 |9 i3 C 在大端格式中,字中最高有效位 MSB(Most Significant Byte)存储在编号最低的字节中,最低有效位 LSB(Least Significant Byte)存储在编号最高的字节中。因此存储器系统的字节 0 关联到数据行的 24 到 31。6 r% ^, O( _8 |
& m3 I" L( E/ S2 z6 v* E
& \6 @8 e" r0 U& e1 Q) j5 v& N! R- A
! c/ O2 A: h$ e* S, c
6 A! Z& B- v0 J' Y在小端格式中,字中编号最低的字节被认为是最低有效位 LSB,编号最高的字节为最高有效位 MSB。因此存储器系统的字节 0 关联到数据行的 0 到 7。* J- F+ ~; B* a2 M5 s. q0 F4 W
: w6 g$ j6 {1 K" k1 O. G `
& G0 `& _3 j) s3 R/ |* H1 v8 A
|
|