| 
 | 
	
    
 
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处理器开发工具的使用。 6 x5 W' K  }4 F4 n  ^ 
    任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。  
2 A0 o5 Y0 p1 d6 y  g    《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。  
$ z  h) m8 B4 A9 o: N$ D6 {6 M% O从51到ARM-32位嵌入式系统入门目录 
( D/ l3 _8 M; \2 D第1章 几个基本概念2 j" _5 }* D2 Y& D' p+ D: N 
1.1 从51系列单片机到ARM处理器1 
- a3 b+ l3 \. x2 \  m  W1.2 ARM不是单片机27 s- L6 T* c. y' R/ Z  P8 L 
1.3 51系列单片机和ARM处理器的比较3 
/ Z/ J& x9 r" W+ [' j( D1.4 以ARM为核的单片机4  S! B, C" |( J8 r; I9 J 
1.4.1 处理器内核只和外部地址相关4 
, y+ d/ a4 M8 ^' P/ C0 @) \1.4.2 ARM怎样组成一个单片机64 I% k$ V; Q+ }; p 
1.4.3 一点启示7% r, s6 U! E# G7 C+ m1 D$ N 
第2章 ARM处理器基础 
2 X) r* `0 u) q: _; ~1 ~* t: r2.1 ARM处理器的数据格式8/ M! h  I: O0 g9 q( M 
2.1.1 基础知识8 
" r% A) W, T4 T# d2.1.2 ARM处理器的存储器结构9& z1 ~8 S  c/ [1 }2 j 
2.1.3 ARM处理器的指令存储或数据存储13 
5 Q0 U9 T, V0 D9 c7 Q/ h3 x9 g2.1.4 地址对准15 
! b0 D# L9 E1 N$ p$ d' a2.2 处理器模式15 
/ e" x. u1 y, n3 o# w2.3 ARM内部寄存器170 q( \- J6 G+ \, p- g% K 
2.3.1 ARM状态时的寄存器17 
+ Q' Y' N: n8 c; }2.3.2 Thumb状态下的寄存器25 
* E9 [$ W0 |) {$ \% p2.4 异常27 
: ^' q: j8 d; x$ z- }% U第3章 ARM7TDMI简介 
0 E* {+ C; T. q' ?' m2 i3.1 概述29% N4 c6 y6 i% _& i: ] 
3.2 结构和框图30/ `6 T. z( m) F* f3 }2 n0 |- } 
3.3.3 级流水线结构33 
. t5 [3 H# x1 h# }, U- n: K5 M3.4 ARM处理器的寻址方式35! b5 ?3 r0 }" t 
3.4.1 51系列与ARM系列寻址方法的比较350 q' b" d: h+ \ 
3.4.2 寄存器寻址36 
8 z  z+ v% {6 J& H/ M; m5 W3.4.3 立即寻址36 
+ U+ m1 T. ]& K0 w' b3.4.4 寄存器移位寻址37 
2 h+ O$ p( I# `3 }3.4.5 寄存器间接寻址39 
* v) o6 d% |4 u" X2 i3.4.6 变址寻址40 
6 [$ h: M2 Z2 w$ c' Y- R' I3.4.7 多寄存器寻址429 E/ O; t0 |: W% q2 w 
3.4.8 堆栈寻址42 
& {$ m7 v( j' I0 n6 ~3 X3.4.9 寻址方式的应用43 
1 D- c4 C5 }9 x3.4.1 0ARM指令寻址一览表442 {  R  M0 E& q  S* l) m 
第4章 异常和中断' m% ~/ n+ Z' m 
4.1 概述45 
* m0 o) F! T4 X# A7 v* `4.2 复位异常46! |# w9 ]* J" X6 y 
4.3 未定义指令异常47# |) I9 H8 [7 b+ j 
4.4 软件中断异常49 
+ M& L" Z6 m, |4 U* s: M4.5 预取指中止异常49( S+ U) H( L- X) m 
4.6 数据中止异常50 
3 [% n& N# m2 n6 ]) C4.7 中断请求(IRQ)异常 51 
) r5 u6 P. Q7 ~! i& d3 {4.8 快速中断(FIQ)请求异常52" t/ a+ v# O2 b. k. [! W8 k% ~. a 
4.9 中断源和中断优先级53 
" O) o8 j* B! Y: w5 s4.10 异常中断的进入和退出54& U" L% r$ V' s( S( b7 {# `  H 
第5章 ARM指令集 
5 q5 z- I7 X! A% D5.1 概述56 
: h5 |" Y# m$ |. c4 D/ j# t. D+ f5.2 指令可选后缀59 
8 E9 }$ d' _" i5.2.1 S后缀60, r3 t( {8 Z2 f+ s( z8 i 
5.2.2 后缀60 
! \8 e( E' y% k2 _2 `3 O% b; `# d  o2 I5.2.3 B后缀61. U, n+ T% h& `' t0 V 
5.2.4 T后缀61- C" y3 S  b5 X9 T8 Y) w 
5.2.5 条件后缀62 
* U& l2 p6 B$ q( p% M5 ~3 `5.3 ARM数据传送指令(存储器访问指令)64- C2 ?! z' |% g 
5.3.1 关于数据传送642 u" {; `5 Q  t( r 
5.3.2 数据传送中的几个问题66 
: _$ G! ~7 g* ], G. g8 ]+ Y/ b7 I1 f; X5.3.3 ARM数据传送指令代码表70 
7 V3 B! }+ A1 X5.3.4 数据传送指令代码详述71 
% H) G# C' Y( ^2 I2 K5.4 ARM分支指令93  Y3 k! ]( }  F7 {. X+ ? 
5.4.1 关于程序分支931 }/ R1 H. ], }% ?3 Y4 g) r  D 
5.4.2 ARM分支指令详解94 
% h  B9 c4 k2 B1 O$ m5.5 ARM数据处理指令98 
; n# c8 L+ h/ o6 o5.5.1 ARM数据处理指令的特点98) g! c8 w. S$ m' f+ F/ f; i- x 
5.5.2 第2操作数99" ?: J* k, z3 H 
5.5.3 ARM数据处理指令代码表101% r( I( w9 W, p9 J( P1 W2 ^7 P 
5.5.4 ARM数据处理指令详述103/ m' x7 O+ z, v1 o2 e 
5.6 ARM指令集中和协处理器有关的指令120 
( M: B/ Q- [* p5.7 ARM指令集中的软件中断指令125 
$ R! z- t9 W, f$ R6 G第6章 Thumb指令集  y+ g# `  x6 E+ Z0 [: a: e# J 
6.1 Thumb指令的特点1293 i) N7 x7 v. q9 M: @6 v 
6.2 Thumb指令和ARM指令的比较132 
7 T  P1 b, p# k% ]1 }- v4 |6.3 Thumb指令集中的数据传送类指令134( m5 B- B$ x6 t3 d' a& w4 n$ i 
6.4 Thumb指令集中的分支指令146" z" X* J0 w! v6 \9 k& x  T 
6.5 Thumb指令集中的数据处理指令152- W) y9 n$ L) s4 w: e0 a9 @+ {$ e 
6.6 Thumb指令集中的软件中断指令164 
- r- m: n8 F7 P( h第7章 伪指令 
, r- p. P) f. q+ y' x1 I7.1 伪指令概述166 
* I7 M( M4 e5 }9 L7.2 与ARM指令相关的伪指令167 
8 G5 u( b' e# K& s3 o$ [7.3 与Thumb指令相关的伪指令177 
: e* }5 S/ Z1 ^7.4 通用伪指令180# E0 i0 U1 \* [+ S. V 
7.4.1 为变量定义和赋值的伪指令180: A, W& e  ^2 a 
7.4.2 定义各类寄存器名称的伪指令184 
4 x7 i, ^+ x  f7.4.3 数据定义伪指令187 
/ ?) @, O2 D0 F4 l3 Z' d7.4.4 控制程序流向的伪指令1963 }* Y8 D' ~1 q8 [% n% m7 F 
7.4.5 其他伪指令2019 y% @. H% Q4 Z' ~ 
第8章 ARM系统设计和程序设计 
+ W, b2 J  V" q/ X8.1 关于ARM处理器,我们学到了什么?207 
) b; e! E8 G3 O' @# I( d) {8.2 程序设计的几个问题209 
/ {  }; R5 `  h9 x0 G" s6 R8.3 ARM指令和 Thumb指令的兼容性214 
9 J0 F0 p$ i& R; r- V8.4 汇编程序规则221 
/ M% F7 Q3 u6 b" c5 z, F8.4.1 组成222) ?2 A" d# O0 J0 M% d+ } 
8.4.2 书写格式223 
' m1 @# d+ Y9 {; `  a8.4.3 汇编语言中的表达式224 
2 i  ^5 I! J$ b& Z8.5 汇编程序举例231 
5 u7 O3 P* H7 m; d第9章 C和C++语言的应用6 }8 b- j. P( y4 R) V 
9.1 汇编语言与C/C++语言的比较2373 P& Q% Q* K' X; t 
9.2 C/C++语言的编程规范238 
: n6 G" C; L0 @1 o) k9.2.1 注释238( \- K4 {/ Y7 z# k+ a0 a 
9.2.2 命名239* i- A0 q* M# t& P 
9.2.3 编辑风格239' h  Q+ C# t, F) W( V0 U4 l0 _ 
9.3 如何编写针对ARM的高效C语言程序240+ y# z8 k0 Q1 O8 ~  R9 O/ [/ F 
9.3.1 以空间换时间240 
; a2 f# u7 X, M& ]6 g; l9.3.2 使用数学方法解决问题242 
" {4 ?' H; s7 i& n* _3 v& m( d9.3.3 使用位操作242+ `" \0 P4 {$ u8 G& i 
9.3.4 嵌入汇编243 
3 G" Z1 S) P$ [, G9 M9.4 C、C++语言与汇编语言的混合编程244% _. P/ j) n" t1 _% l& c+ L$ y 
9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式2440 d$ R. R# T7 N; t# D! W  N; t 
9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245 
4 w# s' k" @* X& b3 A( L! v6 P6 w9.4.3 内嵌汇编指令的应用举例247 
% Z" G- o! E6 S/ Z9.4.4 从汇编程序中访问C程序变量248 
1 D; ~/ u, a5 I! \- ?9.4.5 在C++程序中使用C程序头文件249 
  N6 Z8 S$ W% o* _8 W9.4.6 汇编程序、C程序以及C++程序的相互调用举例250- U3 i7 t. C2 g* ]  p% w( o 
第10章 程序的编辑和编译 
1 X( y% c& D0 n10.1 程序设计过程2541 q) p7 ?' H4 D3 s 
10.1.1 编辑程序2547 T  s0 w  n& M4 d& g 
10.1.2 编译程序255 
& g# N% u- h4 t* k: C" A) m0 H10.1.3 连接和调试程序2572 J! r( Y1 J9 s 
10.2 ARM处理器开发工具介绍258" Z8 l4 g' V* x9 o) {1 W4 t1 L4 P. t 
10.2.1 ARM处理器仿真系统特点258 
: i4 ?: ^, i' R8 \; {10.2.2 ADS集成开发环境259 
" e$ R, C1 m9 F8 }7 o10.2.3 ADS开发系统的系统资源261' u# X- @* w" @; n5 w6 [! ~  g 
10.2.4 系统软件开发的步骤263 
% [& M9 K- M% [  H2 a10.3 程序的编辑2639 |3 {; e# O! k0 }8 n6 L$ s 
10.3.1 源程序是可移植的2633 x! ^& M& t/ D" f& E 
10.3.2 在CodeWarrior for ADS环境下编辑源文件266 
5 n$ n: C$ ~% m. |" A4 O6 n10.3.3 建立工程项目总结2719 ?; S* Z6 J% o( A/ @! |& I& R0 K7 Z5 P; B 
10.3.4 建立C语言和C++语言源文件271: y, ~$ T  ]$ `+ |/ x! X 
10.3.5 文件的管理2729 e1 I3 M2 V- r  U$ d 
10.3.6 编辑画面的设置273 
& r2 ]" ^" `: I6 a1 @9 j0 P10.3.7 ADS编辑功能介绍2795 c4 n& o8 j% Y- |4 K  K 
10.3.8 屏幕分割设置282, A& W4 ?7 t" o4 a6 a 
10.4 程序的编译283 
$ k& ^( ~; k6 |7 [0 P# G( d10.4.1 有两种方式可以实现程序的编译283$ Y9 e- X, l) x; P- ] 
10.4.2 命令行中的可选项和图形方式中的可选项286& N8 a4 t+ @* u! z# q 
10.4.3 ADS中的可选项290/ j+ f) Z$ D" k& W 
10.5 汇编器的应用291+ d3 r8 ?3 |' P; g 
10.5.1 ARM汇编器armasm中的可选项291 
$ m" o( b  l1 e10.5.2 ARM汇编器应用298/ V  w* p7 E8 ` 
10.5.3 应用举例300 
! A9 D$ {4 }5 a5 ~10.6 编译器的应用303 
' r$ @0 _8 H, \  d& g10.6.1 ARM编译器中的可选项303 
2 C4 o; O3 [- w" @& g# j10.6.2 ARM编译器的应用317 
3 C4 {. l* u% w& L第11章 程序的连接$ D+ s* t* V. Q% D1 h 
11.1 几个与连接有关的概念3206 [+ {5 y0 u1 \6 F 
11.2 连接器的应用326( K" w7 @0 Q( c5 X$ Q 
11.3 连接器选项设置334* W' v9 f$ u# X4 T' h0 B 
11.4 连接器应用举例347 
  U  ?. G1 |" _4 \/ P- ~  U! [- V第12章 ARM调试工具AXD& X$ o  v! h4 {& e* c7 A) L 
12.1 调试工具AXD361 
/ c9 o, ]7 w8 }9 z4 B12.1.1 ARM调试工具介绍361 
4 `" X! q5 k5 o7 K% a. f12.1.2 调试工具AXD的使用方法363 
/ X, O$ w6 h6 \3 l0 E12.2 在调试过程中使用断点371 
  [1 b6 K2 {* O- }12.2.1 设置断点371, G/ w  D9 X7 n  X6 G- F1 f 
12.2.2 执行到断点处374 
9 K0 V3 s* J9 Z/ r( i: u12.2.3 查找和修改断点3747 d) O" Z  G( X# v& B: ` 
12.2.4 断点管理下拉菜单3748 e! M, p- W, c, p# D' d. B 
12.2.5 观察断点3759 ^! F% u. Z2 @0 b6 e# Y 
12.2.6 删除断点376( h: k/ x# c# N+ i+ [$ j 
12.3 AXD中其他工具介绍376$ E, d" d; r( ~$ w1 M% M 
12.3.1 使用观测项376; a( h( L5 `1 D- ^ 
12.3.2 在调试程序时观察变量3813 W. k/ l3 [2 B8 ? 
12.3.3 在调试程序时使用符号表383+ K' R$ v2 t( ?' U 
12.3.4 使用观测点384 
/ z; g1 I3 ^! [/ z) D! n$ X) @" b12.3.5 工具栏中的工具387 
8 A- `) c2 I9 \- M: o12.4 数据格式389* X5 |1 ~. d+ g8 f9 k 
12.4.1 设置数据格式389 
) O4 t8 ^- @& K' \2 d! n: S12.4.2 设置默认的数据显示格式393 
3 x  }! z; R* O3 c  N0 c/ W1 u/ Q$ ?' @! i8 e  Z3 Q! E" r0 ~ 
 |   
 
 
 
 |