|
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 G! W4 q @) W! |2 m2 n( A
任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。 8 X e$ W3 g. `- L0 o, }
《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。
: A5 v! `" k3 |) y/ G5 a1 `" L从51到ARM-32位嵌入式系统入门目录8 g6 f. J8 k1 |. L
第1章 几个基本概念8 D0 @' J6 X3 u) V: m! x" K
1.1 从51系列单片机到ARM处理器1
% |- b- i8 E0 }* K% I6 j1.2 ARM不是单片机29 w+ m: U5 `9 A, _$ i' C1 D8 m
1.3 51系列单片机和ARM处理器的比较3
$ H8 C; G' V2 ^$ J1.4 以ARM为核的单片机4
: Q& e W' R Z& Q* T1.4.1 处理器内核只和外部地址相关4
2 l6 @0 q) S; G6 w1.4.2 ARM怎样组成一个单片机6 i* t" J+ l2 y! M: k3 u4 n- K) u
1.4.3 一点启示7. x# V' P1 s3 I0 E7 D" l
第2章 ARM处理器基础6 @# F( A! v! B$ b
2.1 ARM处理器的数据格式8
( Q& n& ], f, B p, ^/ z2.1.1 基础知识8" i. w0 L4 m- j3 X8 n- c) z* ?
2.1.2 ARM处理器的存储器结构9
) Q Q, _1 h+ Q! Z# Z2.1.3 ARM处理器的指令存储或数据存储13
- B+ S2 }9 }9 M* r+ f2.1.4 地址对准15
$ a% v7 }( z& j2.2 处理器模式151 ?( ]6 p7 c# z3 q8 u3 k2 r$ n {4 t
2.3 ARM内部寄存器17
" F' ~! X1 K2 }1 z% _/ i) c2.3.1 ARM状态时的寄存器17, h$ H4 w6 V+ v1 A5 r
2.3.2 Thumb状态下的寄存器25
) z' F8 O/ n) T+ U2 `9 ~2.4 异常27) Y t d& X4 A4 U" ~
第3章 ARM7TDMI简介
; I5 v9 c' X9 \7 D( p% f& u2 }9 y8 n6 K3.1 概述29" K v w; w: y' F
3.2 结构和框图306 n; ]2 }- Y Y$ p' ~( z) l8 H
3.3.3 级流水线结构33: `6 a( N2 \6 h% H! Y
3.4 ARM处理器的寻址方式355 j) l& d* N3 I0 p5 c
3.4.1 51系列与ARM系列寻址方法的比较35
# m Z7 S5 J Y1 k7 j3.4.2 寄存器寻址36
4 j; f5 C" A( _; V3.4.3 立即寻址36, B( {( u, E+ c4 h ]8 S
3.4.4 寄存器移位寻址37
$ f& e; p* [/ t! @4 o$ c3.4.5 寄存器间接寻址39/ }4 J3 L# l6 n9 w
3.4.6 变址寻址40
* P5 F5 J3 {* v3 l2 u# l3.4.7 多寄存器寻址42
+ k$ X% ^, A8 Y3 X3.4.8 堆栈寻址42. z- o6 o1 z. @5 ^( f2 z+ c
3.4.9 寻址方式的应用43
) |: S2 S' [* D" S3.4.1 0ARM指令寻址一览表44
) E4 v. ]" H7 X G8 N( Z9 {第4章 异常和中断; d4 Z, v% Q1 D* N1 `
4.1 概述45
# S2 e- j9 Q. x9 C9 U# J! K4.2 复位异常46
: L6 v- b; o2 p+ w/ z4.3 未定义指令异常47
' Z n- o; w \* x4 v4.4 软件中断异常49
5 y+ K/ W; c' g7 e4.5 预取指中止异常49
, ]8 t. C8 S) Z" b" i! _; U4 B6 Z* a. N4.6 数据中止异常503 t- W2 \; O# P, y3 c8 }/ J9 b
4.7 中断请求(IRQ)异常 51
+ J( M, v3 m3 N4.8 快速中断(FIQ)请求异常52% l$ a u3 a: B; n( z
4.9 中断源和中断优先级53
2 E" s2 O7 [" {4 T0 S4.10 异常中断的进入和退出54' S3 J' x2 g4 W$ {: k
第5章 ARM指令集
7 Q/ F+ m# d3 [ |/ L: Q1 I1 O5.1 概述56" y5 B$ G1 e' R# z
5.2 指令可选后缀59
5 J4 Q; f1 V( g6 B5.2.1 S后缀606 J& v+ Q; ~+ P4 {$ B
5.2.2 后缀60# s/ [$ S: H. r z
5.2.3 B后缀61
" O1 p# k7 E2 S0 X9 b' x6 q9 l5.2.4 T后缀61
. c/ F7 z3 T4 z5.2.5 条件后缀62
, }, A' ~0 {5 Z- X* ^. @5.3 ARM数据传送指令(存储器访问指令)648 @6 G, Y+ f, }: x1 j* @
5.3.1 关于数据传送64
$ V" C) s( |& ^) k1 T% T5.3.2 数据传送中的几个问题66
3 t0 y$ y0 {9 v6 N! z( f5.3.3 ARM数据传送指令代码表70' h3 ~ r% \9 l( Y1 Z- K" r7 w" P. S
5.3.4 数据传送指令代码详述71
& [( b/ v. g$ B5.4 ARM分支指令939 E& a" C% e; \4 {
5.4.1 关于程序分支93
. g/ O' L0 i2 E- g [; T5.4.2 ARM分支指令详解94; C. u% ~4 I" Y; _2 t! |- ?" A5 Z
5.5 ARM数据处理指令98
$ X" X- ]1 T. L( S5.5.1 ARM数据处理指令的特点982 m7 Y. X) T+ [0 ~) U) W- g9 c
5.5.2 第2操作数995 v1 D; \$ u: s; z
5.5.3 ARM数据处理指令代码表101
9 X; @4 z2 p1 V5 \9 i0 a" a/ I5.5.4 ARM数据处理指令详述103
, @! \- k% }) E v- ]" x7 C- E5.6 ARM指令集中和协处理器有关的指令120
. S# T8 K, |" F! R% P* Q( y5.7 ARM指令集中的软件中断指令125
8 p7 L9 \. f( R+ [第6章 Thumb指令集2 F3 {) |) D6 c" |- h3 {0 C
6.1 Thumb指令的特点1290 U: j0 r; g! }' n2 i8 R- P
6.2 Thumb指令和ARM指令的比较132
8 f5 E$ l7 q8 e0 l. t8 a( ]1 o6.3 Thumb指令集中的数据传送类指令134, c- J; [' [: a
6.4 Thumb指令集中的分支指令146( I( O& _! I5 S; F6 ]
6.5 Thumb指令集中的数据处理指令152
7 u% y- A7 V5 E- d, V6 r+ B+ m" T6.6 Thumb指令集中的软件中断指令1648 }+ w& Z# H5 m! l
第7章 伪指令3 c" \$ f u; w$ j
7.1 伪指令概述166
* j6 U/ _0 d. \! o; l# T; f7 g7.2 与ARM指令相关的伪指令167
3 {: O: i! ^: Q- A3 m" x7.3 与Thumb指令相关的伪指令177; w# e$ h- v; I6 w( x
7.4 通用伪指令180
0 y9 F' E; e( Y( G6 _7.4.1 为变量定义和赋值的伪指令1809 r9 F l k: H+ A
7.4.2 定义各类寄存器名称的伪指令1841 `! ?0 ~% f u' M; U
7.4.3 数据定义伪指令187
5 G& p) Y! I6 [2 O& z1 o% p7.4.4 控制程序流向的伪指令196' w. o' d' Z1 J5 G. M) a
7.4.5 其他伪指令201
% \; \' }3 N7 v; s' z% q7 w第8章 ARM系统设计和程序设计
6 |' B/ c5 e7 n1 x5 O8.1 关于ARM处理器,我们学到了什么?2070 C5 m$ J1 T$ s
8.2 程序设计的几个问题2091 |3 l) M4 z$ I
8.3 ARM指令和 Thumb指令的兼容性2145 r; T' o+ t; E4 q) J6 d; f( y
8.4 汇编程序规则221
8 r. n7 g" D/ N& z) b8.4.1 组成222
2 }; ~% n; w/ X* d, M8.4.2 书写格式223! V7 z9 R, t9 ^, g Y
8.4.3 汇编语言中的表达式224
- H8 ?! {) N z$ D8.5 汇编程序举例231+ C' ], w- Q( B( _1 S% s
第9章 C和C++语言的应用 w4 |! I3 x+ b7 U' }% M
9.1 汇编语言与C/C++语言的比较237
& R4 C8 Y) q4 W9.2 C/C++语言的编程规范238
) F c, k1 E+ ~1 }5 z9.2.1 注释238
/ B3 M3 q ]) l9.2.2 命名239 F( y# |9 j* _( f: \0 E
9.2.3 编辑风格239
6 o4 m1 _* _% h y9.3 如何编写针对ARM的高效C语言程序240
+ k+ h2 n |$ U- g9.3.1 以空间换时间240; F7 n8 W: W- o7 \
9.3.2 使用数学方法解决问题242
& J" d) W/ W, w: V9.3.3 使用位操作242( y M ~8 B( d2 ^) b) u4 P& [
9.3.4 嵌入汇编243( ]$ w h( p" N& ^; r) S: ~8 O
9.4 C、C++语言与汇编语言的混合编程244
, A: M/ \9 O: B; V9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式244
2 G$ }6 }1 i: U0 S X0 r9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245# k& }3 f5 i, X7 k
9.4.3 内嵌汇编指令的应用举例247
# K, i- U7 W- q! J7 t9.4.4 从汇编程序中访问C程序变量248# [+ G: v$ }: h; [9 a+ h9 C
9.4.5 在C++程序中使用C程序头文件249
. i% }% N8 N: X+ ]9.4.6 汇编程序、C程序以及C++程序的相互调用举例250$ i0 S( k1 ~" \, T
第10章 程序的编辑和编译
! Y5 S! e' i* A3 l3 w3 x. m w10.1 程序设计过程254
8 E4 a) a/ Q$ U* i; t5 @10.1.1 编辑程序254
7 x& r8 I& ]9 i5 F. L3 a+ ~4 f% M# w10.1.2 编译程序255; |% r% M8 m3 ~ \
10.1.3 连接和调试程序257
9 p7 x8 k5 V% T- `! C( M10.2 ARM处理器开发工具介绍258
8 ~ ^: P v- M) Z: M- `10.2.1 ARM处理器仿真系统特点258
: p! H" G2 e7 c5 Z" N; J2 u10.2.2 ADS集成开发环境259
/ ? b0 ?* h: I- T% V10.2.3 ADS开发系统的系统资源261
4 @; i3 }( r, I10.2.4 系统软件开发的步骤263
5 ^: g+ h1 t4 u( w- Z10.3 程序的编辑2635 R$ Q* {3 w% W" V
10.3.1 源程序是可移植的263" H. _+ a R# v/ u( }) m8 y) g
10.3.2 在CodeWarrior for ADS环境下编辑源文件266) \8 i- T; w/ X; G' J
10.3.3 建立工程项目总结271 {( R w+ \/ E1 {: @) ~+ Q
10.3.4 建立C语言和C++语言源文件271! H7 l% n% e" G
10.3.5 文件的管理272% m" I3 F* { _) ^1 l$ L
10.3.6 编辑画面的设置273: U/ a( ~) k2 J: { l7 J
10.3.7 ADS编辑功能介绍279; e u2 ?- Z- ?; u+ h" L
10.3.8 屏幕分割设置282
- D2 G i J5 T1 A# i n10.4 程序的编译283+ t" {# W* B$ [: E
10.4.1 有两种方式可以实现程序的编译2838 I9 }; ^ L8 y
10.4.2 命令行中的可选项和图形方式中的可选项286# @! C# Q, Z0 M' {/ _$ j
10.4.3 ADS中的可选项290. j& G0 k0 K! O# X
10.5 汇编器的应用291
3 ~1 V. [. c- Z2 h10.5.1 ARM汇编器armasm中的可选项291 C+ O- Y3 v2 V% t& u3 i7 z. g9 U
10.5.2 ARM汇编器应用298
3 U* F0 D( c5 h6 D9 C' Z10.5.3 应用举例300- |9 a& `3 x0 _9 u% }
10.6 编译器的应用303
1 v5 Z7 {5 D7 `3 ~, N8 |" R10.6.1 ARM编译器中的可选项303% B; |1 a3 D0 }. [9 B
10.6.2 ARM编译器的应用317
4 l# O# |" A5 x7 `) `第11章 程序的连接
( P F) ^2 |1 P, K* J, V11.1 几个与连接有关的概念320
1 ?. N' O: B% H( e3 @( K" i+ F11.2 连接器的应用326! |8 K7 E3 p8 |5 b1 S- _) X
11.3 连接器选项设置334
8 h9 a+ s+ s6 J* J11.4 连接器应用举例347$ q9 N5 l" ]4 \6 Y3 [9 `
第12章 ARM调试工具AXD
9 i: [1 t! u4 x+ H$ E12.1 调试工具AXD361
+ H7 U7 M% O$ u& g& N! `* B12.1.1 ARM调试工具介绍361& ~; p" y; d, _) a! I
12.1.2 调试工具AXD的使用方法363 f% L( S4 f. ]( g( Q. u9 v1 s
12.2 在调试过程中使用断点371# y F" R' }6 o3 e) x+ e
12.2.1 设置断点371
' K. D g& i3 f p1 a; y! _12.2.2 执行到断点处374! h& _# B- w C% T* ^. h
12.2.3 查找和修改断点374
4 y1 s3 m; b3 H2 n! m12.2.4 断点管理下拉菜单374
) E0 J' _% k8 {1 }1 A' q- g# }12.2.5 观察断点375
9 {1 N( _3 Z5 [: x6 C12.2.6 删除断点376
7 p/ W' F7 z: f5 I" K9 q0 n3 l12.3 AXD中其他工具介绍376
. S( V) Q I: z/ }( \12.3.1 使用观测项376/ u5 H7 w2 p, x! H! p% ]
12.3.2 在调试程序时观察变量3819 o; X0 [0 t1 t0 Y/ W7 p% \
12.3.3 在调试程序时使用符号表383
9 q% `6 h6 h) X8 Z0 J% H6 S0 ]7 [+ Z12.3.4 使用观测点384
, z) c* V: ^9 G8 r0 \12.3.5 工具栏中的工具387$ ^4 A- Y$ P7 ]
12.4 数据格式389
) U. d0 ?; ]8 s4 t D8 p12.4.1 设置数据格式389
6 \. n9 O% c; u+ E, @8 O6 ^- w3 a12.4.2 设置默认的数据显示格式3930 b3 [* d" Z5 g5 y8 `- w
+ U: R. ~8 ?- J% L, z0 X
|
|