|
|
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处理器开发工具的使用。 9 K! f7 \( ^) c$ m0 ?% x: C
任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。
! }, Z Q; ^- a$ Y 《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。 7 d" P& ]" q7 g: F6 ]( C7 [% P3 S: d
从51到ARM-32位嵌入式系统入门目录
, n3 x% ^- d9 R+ L第1章 几个基本概念- K j2 s/ n4 O$ Y* ~7 [$ [6 a) p- D
1.1 从51系列单片机到ARM处理器16 ] J1 J$ n2 R1 h6 ^
1.2 ARM不是单片机2/ A3 G3 _9 O. z8 O B/ H
1.3 51系列单片机和ARM处理器的比较3* ~% j1 R" O O# a& s- f
1.4 以ARM为核的单片机4
# U% _# N: \6 T$ p1.4.1 处理器内核只和外部地址相关49 O0 R/ i2 v- P, C3 G, a& ^
1.4.2 ARM怎样组成一个单片机6$ D8 J) N* c! x2 W4 Y C
1.4.3 一点启示7
- Z# U' Z5 U0 r6 J( B9 H1 Z第2章 ARM处理器基础6 h+ e7 B) T4 R* {/ B# U4 A
2.1 ARM处理器的数据格式8/ F: T I9 c9 K
2.1.1 基础知识8
0 J0 q( n4 h9 m0 d+ ?2.1.2 ARM处理器的存储器结构9: C' m1 J: K1 Z4 N+ q! @+ K; E- \
2.1.3 ARM处理器的指令存储或数据存储130 Q3 V0 \- V' N: I, p/ d0 N& n2 ]
2.1.4 地址对准15
( k# o# B3 @' v7 b2 V/ M, E, T2.2 处理器模式15
2 B% d/ V9 |6 ?( K2.3 ARM内部寄存器17! V2 ~# v7 _9 e: b( w& e3 v) t; E
2.3.1 ARM状态时的寄存器17
, Q: v3 h) w3 b5 I2.3.2 Thumb状态下的寄存器25
. Q' l" a H. ~2.4 异常27
# ~( t& M& @" T第3章 ARM7TDMI简介
" _' r9 d7 v' K# h2 b' E" h( q3.1 概述29- N |% a$ G* r) o
3.2 结构和框图30
. r7 w! P& {/ `! P. }) p6 S5 O* l+ Q) t3.3.3 级流水线结构333 ]; g" c2 n5 X& E+ R
3.4 ARM处理器的寻址方式35) l0 x% d5 _/ M" D
3.4.1 51系列与ARM系列寻址方法的比较35* f5 J& B) d1 ^; k6 q
3.4.2 寄存器寻址36- n' y2 A& T$ B: ?6 G6 z
3.4.3 立即寻址36
5 d2 R! C X9 C# }# E0 N0 }3.4.4 寄存器移位寻址37! c8 ?" ^9 e9 [, B6 }! s m8 p& N# U
3.4.5 寄存器间接寻址39
& _4 E1 {! T. O+ W. u3.4.6 变址寻址40
! y; [ F- C0 ~& G) N3.4.7 多寄存器寻址428 Z1 Q9 A. |5 _ ]& J$ J
3.4.8 堆栈寻址42
+ E% v9 O$ N$ c& z* ]! z) `3 y3.4.9 寻址方式的应用43
: W$ M1 ]; I, J W3.4.1 0ARM指令寻址一览表44
+ ]! v# U( M( R9 B+ Q第4章 异常和中断
& A* U% o5 w" ]: v; V4.1 概述45
8 p) s' t- m e1 a7 g+ V& R4.2 复位异常46( Z0 z0 w" f1 d5 @# o: e
4.3 未定义指令异常47
2 b% W: k i: P4.4 软件中断异常49
# X4 ^ ^' ]* z6 h4.5 预取指中止异常49
/ p, n9 T; c, M9 X' ^4.6 数据中止异常50
- G0 R, h' e$ A$ D4.7 中断请求(IRQ)异常 51# ]) l9 ]0 t$ n$ K; d
4.8 快速中断(FIQ)请求异常529 s3 H% p. v( J4 @2 |
4.9 中断源和中断优先级53
: ~3 e1 X) [9 }! y4.10 异常中断的进入和退出54
! l0 H( w+ A5 J1 ?# w2 O. r. k$ H第5章 ARM指令集
4 g1 i6 B- b/ b) {8 ]6 P4 @5.1 概述56
6 S4 @* s; g$ T8 z' c5.2 指令可选后缀59
5 z0 p: Y) y& H) y5.2.1 S后缀60- p+ s% |( v7 S& m% p; Y/ M/ K
5.2.2 后缀60
+ e- U; W0 e) Q) q5.2.3 B后缀61$ J2 F9 w. b/ q9 c% V5 I4 W* u9 w! p! J
5.2.4 T后缀61
5 R3 j1 y1 c; {, j$ y+ W5.2.5 条件后缀622 w6 |0 |( E7 k0 U; R9 B
5.3 ARM数据传送指令(存储器访问指令)64& t2 g; w3 B8 G; Y! C; h
5.3.1 关于数据传送647 o8 s! X/ s/ @
5.3.2 数据传送中的几个问题667 c" ]. p9 I: V% ]! J4 ~ u
5.3.3 ARM数据传送指令代码表70
" Y$ t$ ?; O# Z7 W2 k5.3.4 数据传送指令代码详述71
* v/ b, ? i W) p! ]; W0 h- a5.4 ARM分支指令93
, Q2 r! h/ t2 R2 m5.4.1 关于程序分支93
" k4 J% T- G) {5.4.2 ARM分支指令详解941 W4 [/ j5 T* Y+ o! Q
5.5 ARM数据处理指令98% `1 Y# w" H3 E
5.5.1 ARM数据处理指令的特点98
: w6 s; v# I) P0 s0 g' X5.5.2 第2操作数99
* _3 F! k# Z- q2 z% ]5.5.3 ARM数据处理指令代码表101
8 @1 J' J1 D( N. L: O5.5.4 ARM数据处理指令详述103# ~$ C8 s% V6 f( Y; H
5.6 ARM指令集中和协处理器有关的指令120
5 P1 ~) Y$ X3 S) p: ~) |( A5.7 ARM指令集中的软件中断指令1256 M, x% @! ~! ]" b
第6章 Thumb指令集
( u4 o3 q) L0 Y0 h6.1 Thumb指令的特点129
$ e- i" g6 P# y6.2 Thumb指令和ARM指令的比较132. Y, F* i2 \! _3 f: M' s+ C) C! @
6.3 Thumb指令集中的数据传送类指令134
7 u+ b+ z2 ] M) |: A# f6.4 Thumb指令集中的分支指令146
. \# d: d; C3 c6.5 Thumb指令集中的数据处理指令152
N m4 t5 }. U8 q" g6.6 Thumb指令集中的软件中断指令164
# Q3 j- w. {. r! D% l/ s第7章 伪指令
5 W, Y5 m7 T2 E/ v* z. [7.1 伪指令概述166
/ G X9 m5 d0 I4 \7.2 与ARM指令相关的伪指令167
- J4 J' Y8 u. X t h2 }7.3 与Thumb指令相关的伪指令177
7 W3 e5 }0 ~- I. Y! B# z3 c* [7.4 通用伪指令180
+ M. y2 G6 q; p4 I7.4.1 为变量定义和赋值的伪指令180& U a! h, W) R# A0 d# p/ v" i, x
7.4.2 定义各类寄存器名称的伪指令184
& R# A2 n, w! k. Y7.4.3 数据定义伪指令187# `7 W2 Z( `. ?3 V" C; \- M4 |
7.4.4 控制程序流向的伪指令196
+ U! Z/ [* R& R( N7.4.5 其他伪指令201& k: m) N0 }3 n" ~1 ?; ~$ a" r8 G
第8章 ARM系统设计和程序设计
* H) j: f% O/ T5 A. a2 U8.1 关于ARM处理器,我们学到了什么?207
+ J) f1 U$ E0 ? B6 r( w8.2 程序设计的几个问题209
, s8 q7 j! {. F: [( R" r* V8.3 ARM指令和 Thumb指令的兼容性2149 Z) |/ U9 r; Y( Z
8.4 汇编程序规则221; q3 h* }1 [6 k4 [
8.4.1 组成222/ W2 F$ m) W x; {
8.4.2 书写格式223
& _( \1 i0 K1 x' _9 q$ H+ d) m8.4.3 汇编语言中的表达式2249 o6 E' E. E/ ~6 l7 r
8.5 汇编程序举例231+ `$ r8 o: M: [' C* h
第9章 C和C++语言的应用
/ I$ D! H8 O4 R% [4 {( [9.1 汇编语言与C/C++语言的比较237
* Y. A3 K/ S( ~3 ?4 y& G! Z9.2 C/C++语言的编程规范238* ~2 O( Y# O2 r2 S! c) v
9.2.1 注释238: k- F/ i1 a- h9 ]2 s: L
9.2.2 命名2394 q4 A( K z7 n$ D8 W- @" p
9.2.3 编辑风格2392 n) k/ }+ ]# F; l3 i
9.3 如何编写针对ARM的高效C语言程序240
7 c7 [9 a8 ^% L1 ^% w9.3.1 以空间换时间240
9 h: O, _; e0 v" {0 c9.3.2 使用数学方法解决问题2421 W) n; \( d3 o) a9 N: l( n
9.3.3 使用位操作2423 p. D! r f( F
9.3.4 嵌入汇编2431 C8 e4 i t0 [6 y5 X/ F* U: N
9.4 C、C++语言与汇编语言的混合编程244. j( _$ ?8 [; ^* F0 N8 e4 Y, m8 j
9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式2448 A) R4 p$ Z/ c" ]% o I
9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245
# ~2 n9 N+ h4 `2 P: P; I1 U" J: r# h9.4.3 内嵌汇编指令的应用举例247
1 m. s7 W7 X- }/ d' r/ z9.4.4 从汇编程序中访问C程序变量248
+ _) F! W& z# B# M9 K# J9.4.5 在C++程序中使用C程序头文件249. \! F6 o4 \% `8 a
9.4.6 汇编程序、C程序以及C++程序的相互调用举例2501 ]' |* a6 ~3 x9 K' J Q9 v
第10章 程序的编辑和编译
% B; s, D" a: R* e' G10.1 程序设计过程254* u' o9 V" U' ~% K& `- L
10.1.1 编辑程序254* M1 _3 [7 d1 B& H9 }1 {/ m
10.1.2 编译程序255/ @7 y) [6 s% t. _) N: _9 n: i
10.1.3 连接和调试程序257
8 d \: H: k3 U$ W. _6 v3 [10.2 ARM处理器开发工具介绍258
* a/ S8 |' S% T. M3 J0 G' k10.2.1 ARM处理器仿真系统特点258
1 Q1 q( r- R( X" }9 ~10.2.2 ADS集成开发环境259
5 H: L# e- z% n* U+ n/ x10.2.3 ADS开发系统的系统资源2619 T6 K7 K% Z2 P
10.2.4 系统软件开发的步骤263* O3 _7 c& o! y6 `( P. S4 z7 M8 r# e
10.3 程序的编辑263
! v ]. H# ?5 P10.3.1 源程序是可移植的263
: ?- G3 @% I& U' R10.3.2 在CodeWarrior for ADS环境下编辑源文件266: S# A2 W. K( d
10.3.3 建立工程项目总结271
/ z% h4 ]" M; V- @6 F10.3.4 建立C语言和C++语言源文件2714 f8 w( C7 q. o" ^, H! M9 f k
10.3.5 文件的管理272
" i6 T7 {" b3 w7 q. l! l1 @10.3.6 编辑画面的设置273
* x7 y& b1 k/ j% _2 K; L e10.3.7 ADS编辑功能介绍279
( d* T+ b i1 w# ] U: |/ Z4 p10.3.8 屏幕分割设置282& H& D6 ~6 u9 A$ W. G$ F3 s% x
10.4 程序的编译283# H" b) M& E! @! P( n
10.4.1 有两种方式可以实现程序的编译2831 ~) ], |5 f9 F) n7 D, I& m
10.4.2 命令行中的可选项和图形方式中的可选项2866 e$ e' J, \$ V
10.4.3 ADS中的可选项290
9 q( r- z# j2 I' W- n- d5 H- d% a10.5 汇编器的应用291, Y" V2 M7 b/ }" ?: l6 i# g4 M
10.5.1 ARM汇编器armasm中的可选项291
3 b/ _: ~8 D# T% \4 d10.5.2 ARM汇编器应用298
0 {$ G+ M3 I; X! F4 D b10.5.3 应用举例300; f2 D4 X$ i. [
10.6 编译器的应用303# X! _, L5 ~* p
10.6.1 ARM编译器中的可选项303
" {' k# K& {( w( K10.6.2 ARM编译器的应用3176 v; N b% k6 V" P0 Z
第11章 程序的连接' s2 ] B/ A$ h$ s
11.1 几个与连接有关的概念320
; T q6 H/ B: T0 d5 j- V1 M2 p2 [; L11.2 连接器的应用3261 u( |7 u, R$ P p- P1 M
11.3 连接器选项设置334+ p+ X0 m% T6 K# i: Q
11.4 连接器应用举例347. C+ _+ a7 q9 B; h& j
第12章 ARM调试工具AXD& `' w- o" s6 I" U
12.1 调试工具AXD361( `$ P! Y( ^/ u( {5 p
12.1.1 ARM调试工具介绍361# B6 n D* J, W1 ~4 v4 A
12.1.2 调试工具AXD的使用方法363
0 Y- |% O4 T, s s2 @12.2 在调试过程中使用断点371
4 K( B1 w5 E6 f/ o, v9 M# V12.2.1 设置断点3715 W. X7 d1 U% W7 \6 I
12.2.2 执行到断点处374; W5 V3 C( N; h! y# g9 U
12.2.3 查找和修改断点374
: y; a9 [, h6 ~( l& N8 x8 {% f12.2.4 断点管理下拉菜单374
1 C! }" n3 G7 @: Y4 f1 O! i12.2.5 观察断点375
9 R# f" S. J: D3 L, E9 E12.2.6 删除断点376
" q0 |3 v0 I' U7 L+ ]5 d, ]12.3 AXD中其他工具介绍376
( \1 I5 x6 F( [3 x# D% D) q& z12.3.1 使用观测项376, W7 T/ j8 t \+ j
12.3.2 在调试程序时观察变量381
4 J& N* w8 g& n5 {. W0 G12.3.3 在调试程序时使用符号表383& ^0 P& c: F. n* w
12.3.4 使用观测点3843 \2 l5 ]9 O8 s4 S% a3 }
12.3.5 工具栏中的工具387
1 d3 d: I& v9 M F! p% v2 z4 l8 d% c12.4 数据格式389
2 J" |! j" f; f$ T$ z$ x: q12.4.1 设置数据格式3892 i- Y) y; W$ P& y0 y: {" b
12.4.2 设置默认的数据显示格式3934 h# m( J8 C( s9 q* h1 s) h; b
( u5 ~ _# V, g" I2 l% F
|
|