|
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处理器开发工具的使用。 5 w7 \) r' {! h7 x: p; R
任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。 6 \, P- }3 ?+ b) P
《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。
, p: ~/ K# b/ H4 W' @从51到ARM-32位嵌入式系统入门目录, e5 B# V: |! r- d) z6 g" h" n
第1章 几个基本概念8 y2 Y9 I& h/ R
1.1 从51系列单片机到ARM处理器1
% ]* {2 d- m* L/ m0 D. E, O1.2 ARM不是单片机2
5 a7 C% ?: x, p" k6 l1.3 51系列单片机和ARM处理器的比较3+ I4 N. U z3 X; O, G
1.4 以ARM为核的单片机49 L& q. N9 V5 T# h( x' P
1.4.1 处理器内核只和外部地址相关4' V; R: n/ p3 h" G" @; N- s3 k
1.4.2 ARM怎样组成一个单片机6
. g+ m* @( M" E- ] i; R1.4.3 一点启示7
2 D% A! e: `9 Z. ^第2章 ARM处理器基础* \! u- p/ ~! L! g# i3 K, P. t# R
2.1 ARM处理器的数据格式8
( S* ]. x4 K! E! Z. {) L$ E8 N2.1.1 基础知识8, p8 T$ g) s. S- p2 f" Q
2.1.2 ARM处理器的存储器结构9
& e$ v% }7 w1 e; w4 o7 @2.1.3 ARM处理器的指令存储或数据存储13: L2 n4 X2 H1 c
2.1.4 地址对准15# _/ B8 c/ t! r, X! b) }
2.2 处理器模式15
( v5 M8 R( o* m! I. K5 ^0 Y6 ~2.3 ARM内部寄存器172 j- i; V* ^" L4 p% ~& B6 I) v
2.3.1 ARM状态时的寄存器17) R* j; b4 u+ E- m+ p+ ?. A% o, j
2.3.2 Thumb状态下的寄存器25
" t+ h3 F2 c2 W3 w9 }1 ~2.4 异常27
2 s: \8 q: d: l: E* j5 F第3章 ARM7TDMI简介
) L# W' `( u/ t+ h3.1 概述29) {# I. l8 j" \
3.2 结构和框图301 c2 m) ], }! O1 W4 A8 F# \* i
3.3.3 级流水线结构33
4 d; @2 X3 j, j3.4 ARM处理器的寻址方式35# y& s4 m, | Y9 ^- U' t
3.4.1 51系列与ARM系列寻址方法的比较35 {1 \% u- T1 y% ?) d
3.4.2 寄存器寻址36+ g5 Z9 X1 J1 G9 |% _' h
3.4.3 立即寻址36
( [6 Q- q: C; l9 p0 O& x) h3.4.4 寄存器移位寻址37+ M, M+ H' i) v: y1 E+ N
3.4.5 寄存器间接寻址39 F- b6 t5 S) N; j" Z
3.4.6 变址寻址40
' s# S: l: h" z. o, S& U3.4.7 多寄存器寻址42
* }. d& f$ t$ U3.4.8 堆栈寻址42" o; G, k. ?8 z7 c* r
3.4.9 寻址方式的应用43! R1 n* a1 x# e% J% z
3.4.1 0ARM指令寻址一览表44
5 p0 E9 F1 r# ~/ ]8 O第4章 异常和中断
) y$ u9 }# y7 n- N3 }4.1 概述45+ P& X& g* A- I* r b' r8 u
4.2 复位异常46( ]' y8 K; x3 B- Y
4.3 未定义指令异常47
( p1 L5 P2 T8 q2 {" [* Y1 P; q7 C4.4 软件中断异常490 p* _) _; G- u- T6 X5 V* A+ h4 Q
4.5 预取指中止异常49
! a0 b: h8 g5 M8 h( M# t4 k4.6 数据中止异常50$ u* c5 Y6 |$ @$ S* e( t
4.7 中断请求(IRQ)异常 51
# x; c' a6 ~! ?2 w, F. L- w4.8 快速中断(FIQ)请求异常521 I5 X# y; N- r
4.9 中断源和中断优先级53
4 q2 L' l+ [1 p* ~- m4.10 异常中断的进入和退出54" W; e- z! @9 j3 `
第5章 ARM指令集" x) _% o/ H( j5 R1 e/ {; C6 s
5.1 概述56
5 l" j' O( _" a5.2 指令可选后缀59
' L2 r: }+ ^# \4 X; e5.2.1 S后缀60
- v* Y& m( I$ [2 w% }5.2.2 后缀60
6 C- e8 S4 n! Q2 |* Z, o) [1 ^4 P5.2.3 B后缀61
! Q4 Z2 c- d2 ?- V8 E& o9 u5.2.4 T后缀61
2 w( R: B6 b/ H* K5.2.5 条件后缀62$ C2 b* M! h) c5 o$ t Z
5.3 ARM数据传送指令(存储器访问指令)64
0 p; O5 g8 K5 ` ]2 @2 i7 l5.3.1 关于数据传送64
- G8 L3 B7 x2 v/ |1 K9 l5.3.2 数据传送中的几个问题66
! S7 J5 |+ U1 l4 d7 C' u; D5.3.3 ARM数据传送指令代码表70
3 a' U3 f3 b9 N% G& ]% n5 m5.3.4 数据传送指令代码详述71) e1 m5 x* g8 v! M. @9 {
5.4 ARM分支指令93
/ ?7 I G7 b! D0 _" w" b5.4.1 关于程序分支93. m5 L6 M8 @. j- [0 b6 @: ?2 k
5.4.2 ARM分支指令详解94
& C0 F" ^ |: X* ^5.5 ARM数据处理指令98
1 ?4 {* {( x2 K5.5.1 ARM数据处理指令的特点98( z3 k7 t6 D4 q+ O
5.5.2 第2操作数99- R' _# d- O& u
5.5.3 ARM数据处理指令代码表101# ?% Z3 x5 I0 ^# l7 @
5.5.4 ARM数据处理指令详述103
; t/ E' }3 `. E+ K! w6 K g: e5.6 ARM指令集中和协处理器有关的指令120
, \, `% [& g; L0 I; t! b5.7 ARM指令集中的软件中断指令1259 P& T& q! D% x1 |" ~* f* ]" o5 b
第6章 Thumb指令集
]( V% y- N$ M9 U6.1 Thumb指令的特点129 {% H# @6 e4 [0 s2 D3 Y! w5 w
6.2 Thumb指令和ARM指令的比较132
1 t' p3 a3 A) h/ }5 }/ k. V6 I6.3 Thumb指令集中的数据传送类指令1349 D" M+ U7 |; E1 }7 D
6.4 Thumb指令集中的分支指令146" r( p/ T) j+ g0 r. _" e
6.5 Thumb指令集中的数据处理指令152# Y( }5 q9 w' t0 k8 d" a3 U
6.6 Thumb指令集中的软件中断指令1640 I6 J8 y/ |' B; F/ _% J. I2 ?
第7章 伪指令0 k v5 a) c- E& i- T& s$ U
7.1 伪指令概述166; _/ o8 l2 I1 |
7.2 与ARM指令相关的伪指令1671 I! V$ ^3 w6 R! h- A
7.3 与Thumb指令相关的伪指令177& ]6 C& h, c3 ?+ T* y4 y9 O
7.4 通用伪指令1806 k* I0 p s* T
7.4.1 为变量定义和赋值的伪指令180; u' J) B! J- z0 g- V
7.4.2 定义各类寄存器名称的伪指令184: h3 r6 {- d0 s6 m( F' @
7.4.3 数据定义伪指令187) m4 y. W" i J3 U: p
7.4.4 控制程序流向的伪指令196
7 `, b. q+ d; l6 k$ ]7.4.5 其他伪指令201
* i3 s F. T% t% L第8章 ARM系统设计和程序设计
2 m( o: K2 R4 j$ u; X9 Y+ R8.1 关于ARM处理器,我们学到了什么?207
8 t! M; [% _+ n# T5 o2 W8.2 程序设计的几个问题209
/ k" J3 Q/ t, ]' ^0 P# U& }& r8.3 ARM指令和 Thumb指令的兼容性2143 R* y, \3 z' I6 V1 O
8.4 汇编程序规则221
3 E, p' c. h9 T& K8.4.1 组成222
- d9 O+ U# y" B8.4.2 书写格式223, M5 n8 q. j5 x
8.4.3 汇编语言中的表达式2248 Z% T7 d+ ^0 g6 x' ~6 \
8.5 汇编程序举例231
D, k/ p5 B. X9 N) F1 r5 v第9章 C和C++语言的应用
9 j' L7 U' _9 Y9.1 汇编语言与C/C++语言的比较237
6 r% ^6 s. p/ S# p" q/ g5 W% s9.2 C/C++语言的编程规范238
: Q1 B6 S& O ?( Q- T4 {9.2.1 注释238- T* T: ~+ a+ G, t+ ^ ]% B+ Y
9.2.2 命名239. n0 C: Q/ `; _: H9 R8 f5 @' @
9.2.3 编辑风格239
) R& Z I6 f7 L% b9.3 如何编写针对ARM的高效C语言程序2404 J) k1 }' [$ j$ A$ y$ R$ x
9.3.1 以空间换时间240
* L* u$ T3 `$ P0 x5 G9.3.2 使用数学方法解决问题242; L; Q/ k: O# R! T* K3 l5 V9 G
9.3.3 使用位操作242
$ N& L. e) y- \) h; m4 ]+ O2 U5 ^9.3.4 嵌入汇编243
1 d5 ~( ^0 X# N9.4 C、C++语言与汇编语言的混合编程244- @5 I7 T' ] O, z
9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式244 T; M' O9 a# d, _8 f+ @
9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项2450 O5 c" I. J- Q$ }
9.4.3 内嵌汇编指令的应用举例247
: E) _$ `. |% M8 g7 C9.4.4 从汇编程序中访问C程序变量248
z4 {( X% |2 M% S+ k9.4.5 在C++程序中使用C程序头文件249' _ I9 H: ~* {, T i# r# q0 M
9.4.6 汇编程序、C程序以及C++程序的相互调用举例250
1 ~: f- j; x# N. f n* r, F6 c3 K第10章 程序的编辑和编译
* u N' K7 V9 W& v" H10.1 程序设计过程254# u& S6 @. {1 o0 R, c
10.1.1 编辑程序254" A! G% t. `8 l
10.1.2 编译程序255
1 O- v1 T- t$ D8 U10.1.3 连接和调试程序257
8 y9 A4 f4 {/ i( w0 x10.2 ARM处理器开发工具介绍258
% j6 E5 L8 {% q6 ]5 K b+ i+ |10.2.1 ARM处理器仿真系统特点2584 y( R9 _' d2 L6 e% ?
10.2.2 ADS集成开发环境259
3 }8 ]7 R, \! _# p* E/ b+ u10.2.3 ADS开发系统的系统资源261
+ ^" _+ T+ ?; Q7 r! n10.2.4 系统软件开发的步骤2634 S A* H/ q5 q2 j& o
10.3 程序的编辑263
2 v. R8 [1 g9 M3 Z% r0 x10.3.1 源程序是可移植的2631 ]! G! ^9 p/ l! {( ^
10.3.2 在CodeWarrior for ADS环境下编辑源文件266. n& s& d! Y8 r. X4 ^
10.3.3 建立工程项目总结271/ ?2 a$ e! H; h" O( n- k# T
10.3.4 建立C语言和C++语言源文件2716 k" n- N D* Z" r0 a# k, [
10.3.5 文件的管理272" H8 h) o/ L3 ]/ v& {' X: s
10.3.6 编辑画面的设置2734 i; x+ H" K! I4 y: } T7 J, E
10.3.7 ADS编辑功能介绍279. a0 z0 B! f. X: v+ Q A
10.3.8 屏幕分割设置282
- X* s+ T4 T+ e, h; E10.4 程序的编译283
/ b3 G% O' a% Y& l0 ~+ J' `10.4.1 有两种方式可以实现程序的编译2835 X' Z$ I7 b7 m
10.4.2 命令行中的可选项和图形方式中的可选项286
* z$ G7 y: @" M: p: L8 @! _10.4.3 ADS中的可选项290
" m9 r% a& u! G* K10.5 汇编器的应用291
6 }, k0 P( o4 v# y7 X10.5.1 ARM汇编器armasm中的可选项2910 S/ s$ V( M7 x5 u, U5 @: K
10.5.2 ARM汇编器应用2982 d; E; S, \6 v' y8 S8 \% v9 a
10.5.3 应用举例300
* ^- p( D- c7 ?- G# s' t" m$ v* I10.6 编译器的应用303
& \$ g3 @" H/ E10.6.1 ARM编译器中的可选项303( X0 Y7 T: X0 y; `# p& Q0 p
10.6.2 ARM编译器的应用317
2 u4 n% [+ @0 ]. O0 D. E第11章 程序的连接
8 t7 T8 Q* |$ d3 a+ h1 M11.1 几个与连接有关的概念320# R! Q# t4 m: M* T6 X6 g/ S% m
11.2 连接器的应用326* q# B2 _- k$ C& H3 p6 ^2 W! |% Z
11.3 连接器选项设置334, e6 g7 t% A8 ~
11.4 连接器应用举例3475 a# b6 ~3 m, w9 g1 N* h
第12章 ARM调试工具AXD
+ p' x! ?2 l2 [& r" j5 L12.1 调试工具AXD361
. l# Q( }& B. ~" w12.1.1 ARM调试工具介绍361
& @$ r* D% U6 I0 Q3 R12.1.2 调试工具AXD的使用方法3635 O& w8 u* b1 o* B# N
12.2 在调试过程中使用断点371* H( I6 s( o" b+ z, |, z
12.2.1 设置断点3717 k [) C$ Y) y. l7 X. @
12.2.2 执行到断点处374
- B5 D! h. D- l1 |6 t12.2.3 查找和修改断点374
- o6 o: r0 T1 Y% }& @12.2.4 断点管理下拉菜单3747 |2 P; H9 y0 g1 R7 Y' E- \4 t
12.2.5 观察断点375: L" n( V, t9 ?" Q
12.2.6 删除断点376# z% M4 K& ^6 x' @( i! d
12.3 AXD中其他工具介绍376
6 \$ R# l8 [+ J) t2 Q& `12.3.1 使用观测项376
5 e4 X& _9 S2 v) ^# r12.3.2 在调试程序时观察变量3817 p6 C6 D) N' k( g& f# v
12.3.3 在调试程序时使用符号表3837 K0 r9 B1 h3 M& @( x+ B2 a
12.3.4 使用观测点384) A! l8 Y$ k2 G' t7 Z8 E
12.3.5 工具栏中的工具387# w4 G! v# r- |
12.4 数据格式3897 p! e* ?9 L2 b& r
12.4.1 设置数据格式389$ \! ~8 z# r7 s) Z* \
12.4.2 设置默认的数据显示格式393
7 b* a, ^! N$ u* D( X. T
* Z8 _" U. e! [9 [" M6 r$ } G: l |
|