|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
从51到《ARM—32位嵌入式系统入门》从51系列单片机的一般知识出发,将ARM处理器和51系列单片机进行对比,引导读者去理解和学习ARM处理器的知识。内容分为3部分:第1部分是前4章,从大家所熟悉的51系列单片机的基础知识开始,介绍ARM处理器的基本知识,包括ARM和51系列的对比、中断处理系统、寄存器和存储器结构等;第2部分是5~9章,详细比较ARM指令和51系列指令之间的差异,进一步阐述ARM指令的含义和使用方法,从简单的51系列编程经验出发,介绍ARM处理器软件编程方法;第3部分是后3章,介绍ARM处理器开发工具的使用。 2 J+ v8 u1 z) Q+ h) z
任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。 # [6 Y& M1 z8 k. W
《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。 $ B5 j1 i( f& Q6 L6 g
从51到ARM-32位嵌入式系统入门目录! F7 G" F E0 o& X/ b
第1章 几个基本概念( D8 w' z# G; R, C( P
1.1 从51系列单片机到ARM处理器1
3 c- q5 P6 W5 k# {$ N* y3 ?1.2 ARM不是单片机2
3 L' \; g5 v# F7 V3 B. {1.3 51系列单片机和ARM处理器的比较3. ]) R7 n/ N) Q) L
1.4 以ARM为核的单片机4
. D. d4 Q" L8 @" n3 \1.4.1 处理器内核只和外部地址相关4" [# D. I! r$ E! H' |
1.4.2 ARM怎样组成一个单片机6
9 A: y4 M/ E: K) D( o1.4.3 一点启示7
3 R( s2 D- z: B第2章 ARM处理器基础
' ~/ ^3 k* W2 d H* e2.1 ARM处理器的数据格式8
( g# ?' d0 [6 t# Z, \2.1.1 基础知识8
! Z! o- o0 J, I" o2.1.2 ARM处理器的存储器结构9
6 S1 c* e; {, g# v5 }2 ?8 t2 ~2.1.3 ARM处理器的指令存储或数据存储13
: z! @' m+ S- R1 m2.1.4 地址对准15
$ _8 d* g9 D0 J+ B2.2 处理器模式15
. @; b( `" k: B1 i( q0 Q' ?2.3 ARM内部寄存器17
( Y1 O) f- z& m- \) S4 ?" z5 T2.3.1 ARM状态时的寄存器17
, O) \$ F% x$ H2 @& v) C5 ?2.3.2 Thumb状态下的寄存器25' u! e$ ?% }; |) p6 ~
2.4 异常274 m, I3 E0 l2 t
第3章 ARM7TDMI简介
* z5 [/ r1 R' y- V9 g9 {3.1 概述29& g2 K, C$ O6 |5 s8 x: Q
3.2 结构和框图30 k% M* ]- K3 o# r! Q
3.3.3 级流水线结构33
2 d) i9 _% z/ ?# _3.4 ARM处理器的寻址方式35
; R: e( b6 O: m, b7 ~3.4.1 51系列与ARM系列寻址方法的比较35
7 ]. D3 ~ A7 v) N, F3.4.2 寄存器寻址36
- g+ t1 M6 G/ F" [' F* ?( J# g3.4.3 立即寻址36
. _0 L1 m6 |, X* Q9 F3.4.4 寄存器移位寻址37' W7 X5 v: i e! J' H+ e
3.4.5 寄存器间接寻址394 J9 j( C! [' C3 a# O
3.4.6 变址寻址401 ~0 [0 F. Q3 v# i! m; |
3.4.7 多寄存器寻址42
4 H! B1 T& J! Z# ^3.4.8 堆栈寻址42
' V4 A" A. l+ p( J" g8 o; t5 p0 t3.4.9 寻址方式的应用43
3 s- U) t `1 `' K7 u, X* c" V3.4.1 0ARM指令寻址一览表44
9 C l$ _, }: j# v( a5 i6 W1 N第4章 异常和中断0 r: w6 c+ P" {4 [1 W! V
4.1 概述45
, g0 F3 x4 z! o4 r, J" o& |4.2 复位异常46
, ]( V, x( L0 K3 _6 C( \/ h4.3 未定义指令异常475 P' |! _. E7 t
4.4 软件中断异常49
0 u' C, G1 {# O4 x2 I3 [- ~4.5 预取指中止异常49 z; i! l& P: ?3 f6 q3 V( Y: \
4.6 数据中止异常50) a4 f( C+ q s0 J; }1 T: B
4.7 中断请求(IRQ)异常 51
4 e' m% [0 H- n4.8 快速中断(FIQ)请求异常52( S- V% S9 f, U* k1 O5 D% D) r
4.9 中断源和中断优先级53" Y+ r7 @& S+ J) ^$ B$ m1 \
4.10 异常中断的进入和退出54
( A/ c' G% X0 v1 }5 _第5章 ARM指令集
: |9 Z6 o: l' v& v5.1 概述56
/ L. U N: U) I- q$ F8 G5.2 指令可选后缀59
$ I& V5 x& Y: p% n5.2.1 S后缀60& U# t$ q& p* _1 [" p: x
5.2.2 后缀60" w3 m6 W- Q( p; ?/ |& `% ]8 N
5.2.3 B后缀61
8 O1 O" u' z. @$ [6 g' Z5.2.4 T后缀61
1 Y0 ~1 C @( n W( d0 @9 U5.2.5 条件后缀62( a0 V" A+ B0 a6 d& ?! K& h( Q9 o
5.3 ARM数据传送指令(存储器访问指令)649 i. w8 [8 X. t! o7 B+ }; V0 ~
5.3.1 关于数据传送64' E6 n, u& S) W* g! l2 k# n' ^
5.3.2 数据传送中的几个问题66* X8 F9 b: X; Q( M9 p4 f
5.3.3 ARM数据传送指令代码表706 ~8 q$ V+ }0 F3 @; U: ]8 Y- Y
5.3.4 数据传送指令代码详述71
, x2 x/ T) j& s( f; t$ p5.4 ARM分支指令93, z/ a* @& Q! i5 x
5.4.1 关于程序分支93
. b3 `/ p" H& }- N8 _* |3 @0 M2 Z: {9 `5.4.2 ARM分支指令详解94
5 t' A$ m. ^% `. b0 C5.5 ARM数据处理指令986 n. S5 B% V) v9 u' Q3 ?% r) C
5.5.1 ARM数据处理指令的特点98
& L+ k+ I. i7 j$ G# t7 _9 t5.5.2 第2操作数99/ T3 m: G' K/ X* I, B; P2 b
5.5.3 ARM数据处理指令代码表101( S2 I1 y$ g' ?. _6 l
5.5.4 ARM数据处理指令详述103. K3 b& N u8 w T9 k( Z
5.6 ARM指令集中和协处理器有关的指令120
: x$ V2 x5 }* G5.7 ARM指令集中的软件中断指令1256 _& G$ @, ?; ^. h4 g1 A$ c, b
第6章 Thumb指令集0 b# j9 n) O+ v* K+ B/ ~" Y' e
6.1 Thumb指令的特点129( d9 P9 d" S" D2 r; @. F
6.2 Thumb指令和ARM指令的比较1327 u. s$ L. ~$ P+ ^# |
6.3 Thumb指令集中的数据传送类指令134# o' k8 A2 A! x6 P! U& a& `
6.4 Thumb指令集中的分支指令146$ S6 f/ M! {; J3 |4 Y2 H( ]% R
6.5 Thumb指令集中的数据处理指令152& h' T# S5 X! P. [
6.6 Thumb指令集中的软件中断指令1641 {6 P! h8 A/ P
第7章 伪指令
4 C5 H1 n3 A* [, \3 A/ H& ?8 y7.1 伪指令概述166
: D6 _ ] p& Q7.2 与ARM指令相关的伪指令1676 a8 V! Q# L/ ?) X# J9 j! _
7.3 与Thumb指令相关的伪指令177: N" \/ s/ `- h8 @8 k$ M4 O& L
7.4 通用伪指令1805 [- K& ^# P+ k& R; L2 G
7.4.1 为变量定义和赋值的伪指令180( w7 n# w0 \; r2 A' M$ ~
7.4.2 定义各类寄存器名称的伪指令184
! b4 M' _3 e6 A) p7.4.3 数据定义伪指令187
: V. Z% k7 ~8 m- ?+ a) u7.4.4 控制程序流向的伪指令196
9 S M ?, e7 |/ \: y. Z: @7.4.5 其他伪指令201
6 h5 d L' L4 c" y) q第8章 ARM系统设计和程序设计
8 D+ S0 P4 C$ d3 X8.1 关于ARM处理器,我们学到了什么?2075 A3 L& A' i" J( r- W
8.2 程序设计的几个问题209: w7 \5 h/ U; d' t
8.3 ARM指令和 Thumb指令的兼容性214
' |/ v; R F+ ^8.4 汇编程序规则221" U! o3 I! f8 r) |/ d
8.4.1 组成222
4 t) k+ X G. ~$ P5 }" M$ ^8.4.2 书写格式223, ?9 _. |8 U$ \3 m+ U
8.4.3 汇编语言中的表达式224
+ f. k* y# @; X6 s2 h8 \8.5 汇编程序举例231' q8 e2 Z* A) Y" }) i
第9章 C和C++语言的应用
5 a) e7 S( ^ G& `2 x# h! ]" k9.1 汇编语言与C/C++语言的比较237# J$ ]3 h/ R6 e3 p6 N7 p* r. f
9.2 C/C++语言的编程规范238
( ?7 u( g u* }) G' s/ t9.2.1 注释238. [1 x* W+ L0 g
9.2.2 命名239
, Y/ V! y4 y9 r! ~- t9 b4 V9.2.3 编辑风格239% _5 ?! I1 `# Y8 @' Z* M, T& r
9.3 如何编写针对ARM的高效C语言程序2406 W1 c0 M [1 N! @6 F N* \: g) `
9.3.1 以空间换时间2405 _! v+ j4 w6 u7 ~' E/ E+ `
9.3.2 使用数学方法解决问题242
" a( J6 z9 L1 x( P }# h8 ~9.3.3 使用位操作2420 Y! `/ j) E, `3 G/ B
9.3.4 嵌入汇编243
3 N; w4 F6 P, x, y& U& z1 Q3 W9.4 C、C++语言与汇编语言的混合编程2444 y- O4 G7 ~3 n5 q& |7 ~
9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式2441 O( {# d! W& A) y0 k8 N! B
9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245
* N1 N4 ^$ E1 P0 m& n/ S$ }( z0 R8 @9.4.3 内嵌汇编指令的应用举例247
# G0 m$ K+ u2 r4 O. ^* l$ Q9.4.4 从汇编程序中访问C程序变量248
- B9 W5 e2 N4 V) e7 Y u9.4.5 在C++程序中使用C程序头文件249
1 p& G, `) c* T6 x0 t/ i9.4.6 汇编程序、C程序以及C++程序的相互调用举例2501 S4 q/ `8 g) V q% H, }
第10章 程序的编辑和编译) _; V; Z( ^9 R3 C$ ]# c: }7 ~" U
10.1 程序设计过程254
! t, d, J) m. o1 l9 z$ J1 J$ [10.1.1 编辑程序254
$ V, \& T) }; H, i10.1.2 编译程序2550 O O" ?* X, _# Q
10.1.3 连接和调试程序2574 q& k; a6 y6 n6 T4 ~3 D
10.2 ARM处理器开发工具介绍258, k) ^/ C% k0 K$ z
10.2.1 ARM处理器仿真系统特点258
6 T6 q ^8 Q9 E! }2 m8 G10.2.2 ADS集成开发环境259) l5 c# Q" {( Z7 c, j6 I! a
10.2.3 ADS开发系统的系统资源261
9 u" O0 {" W) S2 l; h10.2.4 系统软件开发的步骤263% C5 b* h8 S* v6 W/ b- d/ I: J6 v* K
10.3 程序的编辑263
% v; G- l" K! v2 P& A. F10.3.1 源程序是可移植的263
* Y! T5 C3 O" E9 N1 {' T" W10.3.2 在CodeWarrior for ADS环境下编辑源文件266
\1 ?4 J, G6 ?10.3.3 建立工程项目总结271 _' H4 M5 C, U- R
10.3.4 建立C语言和C++语言源文件271
& m7 i) b' x, C3 L. x% Z$ V6 D6 e10.3.5 文件的管理272
3 m3 Z) v; b+ l! F" H/ ?10.3.6 编辑画面的设置273
( T3 j$ L$ |( B* E10.3.7 ADS编辑功能介绍279' E j* Z0 ^' j3 P4 D+ M
10.3.8 屏幕分割设置282
- F# b+ |% n+ Z- Q8 c& N10.4 程序的编译283/ c, O1 i$ S& r( c' [8 R: \
10.4.1 有两种方式可以实现程序的编译283- d2 Y' Q t, R9 ^* ]
10.4.2 命令行中的可选项和图形方式中的可选项286* j& s$ h. B6 d9 z5 c( `
10.4.3 ADS中的可选项290
# [' ~8 U& c1 b# H6 k+ Q10.5 汇编器的应用291/ F+ u8 X/ e D& M! t: }# E2 F6 U3 n
10.5.1 ARM汇编器armasm中的可选项291
6 E& |, m- [7 ~10.5.2 ARM汇编器应用298 y; @; K+ v e1 F
10.5.3 应用举例300
# U6 |' S d5 _0 w w10.6 编译器的应用303
. s7 B' c' s4 C) |10.6.1 ARM编译器中的可选项303
/ [6 R! n& j" I5 J. F, S4 S10.6.2 ARM编译器的应用317: v9 v9 x' Z+ r; i; ?
第11章 程序的连接
: D2 x! Q: l( N o$ p; d- b11.1 几个与连接有关的概念320
) V1 K8 [. r" g* S9 _' k b6 F11.2 连接器的应用326) {1 {2 _! {8 t1 P* z3 Q
11.3 连接器选项设置334/ P& l+ A# E4 J0 {( V
11.4 连接器应用举例347
3 v$ @+ c2 @& Q) }" [$ a第12章 ARM调试工具AXD" y& m9 j6 i/ a6 G) ~
12.1 调试工具AXD3618 U4 ~/ t: e4 L+ G7 {1 e: Q, C
12.1.1 ARM调试工具介绍361
5 L b3 L# b+ P- a12.1.2 调试工具AXD的使用方法363
% f" `; D: g1 S& F6 P12.2 在调试过程中使用断点371
0 D5 t' O2 |+ d7 Q. A) j12.2.1 设置断点371 p8 T" d8 |# d% _% o8 P* ~
12.2.2 执行到断点处374
, R+ Z! y7 x! X* `1 {12.2.3 查找和修改断点374
: P' U: _! v, [12.2.4 断点管理下拉菜单374
3 U7 {7 d& G' u- z! ^1 i12.2.5 观察断点375. F, k3 ]5 O) S( A5 G
12.2.6 删除断点376. L6 `1 I' f4 h4 A
12.3 AXD中其他工具介绍376
( O, w( o, B8 I$ C: y I. }0 m9 R12.3.1 使用观测项3761 w) O {( T" H6 l% [# w h% h# G
12.3.2 在调试程序时观察变量381
# ?2 A9 B9 d9 k6 f8 T12.3.3 在调试程序时使用符号表383' N4 s' e$ f4 c N" h1 N$ Q8 h
12.3.4 使用观测点384+ X' s% U9 j! z
12.3.5 工具栏中的工具3873 N; E& D6 _9 I/ Q
12.4 数据格式389! n! @+ D, G. F' f, z' z. d
12.4.1 设置数据格式389
1 D! L$ q4 Y: H: S12.4.2 设置默认的数据显示格式393
8 M K Y" h0 ^4 U/ d4 ]- A3 d3 w/ H+ h: z/ z
|
|