|
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处理器开发工具的使用。
, l* o- X3 @5 q9 U 任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。 % K! K& ]' G9 H
《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。
9 ?7 K/ A5 G; N从51到ARM-32位嵌入式系统入门目录9 v8 C% v5 ~1 T2 \
第1章 几个基本概念/ H4 I. m6 G0 j9 ^3 v
1.1 从51系列单片机到ARM处理器1
5 m! g5 ^ t5 k5 S7 t9 U1.2 ARM不是单片机27 i6 C0 a& b F* Z2 @( j7 N" }
1.3 51系列单片机和ARM处理器的比较37 i" s% t) p7 E! a
1.4 以ARM为核的单片机4
; [% T- Y+ h( e4 |1.4.1 处理器内核只和外部地址相关4: v3 h v, J8 J
1.4.2 ARM怎样组成一个单片机6$ g2 m- A! R$ u+ Y) A5 M7 K3 M* @
1.4.3 一点启示7
+ X6 z8 H. @5 M+ k, Z第2章 ARM处理器基础
: O; J4 p0 J1 E6 H& ]' T2.1 ARM处理器的数据格式8# u e) g5 R1 v! ?+ g3 H9 A
2.1.1 基础知识85 A v" o# C$ S6 i8 l8 ` p
2.1.2 ARM处理器的存储器结构9
/ y: z5 F7 w& m2.1.3 ARM处理器的指令存储或数据存储13, H7 [, Q% T8 `/ R
2.1.4 地址对准15
_, ?! F6 M$ b" _4 P5 v" r2.2 处理器模式15; j. @2 B! q4 O& k( O
2.3 ARM内部寄存器17
1 S+ d$ m0 _, F! p2.3.1 ARM状态时的寄存器17
7 ]+ U9 S& e. m0 o' \8 ]2.3.2 Thumb状态下的寄存器25. v8 f# C. s' o; B( d
2.4 异常27
' g8 d; c) [# V! ]/ w( W: A. X第3章 ARM7TDMI简介& I3 F- [" Q% f0 o
3.1 概述29
0 U, a* A+ A7 C4 E( G! n3.2 结构和框图30
" @$ j O9 j( H) l3.3.3 级流水线结构33
0 r* x, m0 d( t! L3 l: Z3.4 ARM处理器的寻址方式35
: C. ^; }; Z& k$ q, o3 U3.4.1 51系列与ARM系列寻址方法的比较35
# d- \0 Q3 @* V3.4.2 寄存器寻址36( \( A e$ `- x6 E! g0 N8 v- a
3.4.3 立即寻址36) u, f9 m* C# m" V6 }
3.4.4 寄存器移位寻址37
& ~, X2 C! {* _4 B. K6 [/ ?6 M* G3.4.5 寄存器间接寻址39! }4 L, K9 I, I( N1 |# T/ e4 q
3.4.6 变址寻址40! V/ `/ B8 @! s/ G3 R
3.4.7 多寄存器寻址42
: I" D# L+ V1 }; m* d. F3.4.8 堆栈寻址42
% ~* Y1 t- \/ T. y7 O3.4.9 寻址方式的应用43" }6 E9 v* ^' f# f2 p( h% J: ^" C
3.4.1 0ARM指令寻址一览表44) x% g) e- w: _: X' T
第4章 异常和中断
3 k: h! `9 }% B ^. G5 @8 `& d- ^8 m4.1 概述45
( l# \% Z% o4 h" O8 U" \4.2 复位异常46% N* `& E( |6 d }
4.3 未定义指令异常47
6 [/ u7 Y0 y9 `$ S) [2 R* C' I7 p( Z& G4.4 软件中断异常495 X+ ~' h' L+ X% o( h% e4 G
4.5 预取指中止异常49& ~1 z( ]+ g/ o5 W2 G
4.6 数据中止异常50! N5 D+ S. y; S" W) }
4.7 中断请求(IRQ)异常 51. a1 {1 ?& Z* X
4.8 快速中断(FIQ)请求异常52
* h, Q, S# [6 ^2 t6 y0 J4.9 中断源和中断优先级53
7 q" \' J" M3 ^ m X G, @; N% J4.10 异常中断的进入和退出54
2 P- k+ Q7 _( S2 L6 u3 a' d6 L第5章 ARM指令集: u4 ?+ Z+ s7 N0 H3 t+ b1 ~
5.1 概述56
; S! t; P* `. U5.2 指令可选后缀59
! J- R7 V/ D N5 F7 p) N5.2.1 S后缀60+ _7 H6 K+ H {
5.2.2 后缀60
1 D- O$ B7 U- J5.2.3 B后缀61
4 S) D- K7 T* A3 @# t5 r5.2.4 T后缀61
4 V( I% W3 T! y% C5.2.5 条件后缀62' k5 f4 F$ l& r6 k9 f' l# E* E
5.3 ARM数据传送指令(存储器访问指令)64
3 h) Y- j' ]" N4 U5.3.1 关于数据传送64
( D$ t) v' x* ], w# e" O* z5.3.2 数据传送中的几个问题66
u) g2 R! r! i! I+ u# u5.3.3 ARM数据传送指令代码表70
$ X3 j* i" `: \- F; v5.3.4 数据传送指令代码详述71
6 v' G, i3 G( z3 u k3 {* | V5.4 ARM分支指令933 S! I* ~3 Z- L* \! z# _+ [* C
5.4.1 关于程序分支93
3 H* _8 N/ A. X) }( R5 M/ L- j& o5.4.2 ARM分支指令详解94
' V4 G2 Y: ~( I# g1 d5.5 ARM数据处理指令988 M# j, `* i C2 t! N2 I
5.5.1 ARM数据处理指令的特点98
8 [' `% j ?- N Y+ r5.5.2 第2操作数994 K0 G4 j8 x7 c
5.5.3 ARM数据处理指令代码表101
5 M3 J2 X. O$ K3 t, b; w5.5.4 ARM数据处理指令详述103! W0 J3 D; B) B- M, y3 K# K# N, h
5.6 ARM指令集中和协处理器有关的指令120
/ e# a9 j, \% [- e& `5.7 ARM指令集中的软件中断指令125
0 A1 g; Z3 g2 T& x第6章 Thumb指令集! ~& S; B: s ?/ q
6.1 Thumb指令的特点129
0 e5 ?7 o# r. A4 S/ y* x6 d+ V6.2 Thumb指令和ARM指令的比较132
. ]% ~8 F3 T4 Y, K2 F5 }6.3 Thumb指令集中的数据传送类指令134
8 i/ c) E8 ?1 ]2 O6.4 Thumb指令集中的分支指令146 h1 p5 t! X- U8 \$ f
6.5 Thumb指令集中的数据处理指令152
! a! i: W6 J9 e: p/ W- F6.6 Thumb指令集中的软件中断指令164: k% R( b* p1 _! D2 S4 W
第7章 伪指令
. e' ^# n: P d/ F8 S1 i7.1 伪指令概述166* E8 j. G5 b+ f9 L9 [, |
7.2 与ARM指令相关的伪指令167
- {; l; D/ y/ `( U4 N& d; x9 E7.3 与Thumb指令相关的伪指令177
2 R" W: o+ H+ V. a$ F7.4 通用伪指令180# X7 w" `% ]+ C
7.4.1 为变量定义和赋值的伪指令180. c0 }5 {% O% U$ Y
7.4.2 定义各类寄存器名称的伪指令184
. K4 W8 {" M( U7.4.3 数据定义伪指令187
4 f& Y# M8 B" o4 A* m5 [: I E' ~7.4.4 控制程序流向的伪指令1965 V& Z/ ~7 r# E% w# W0 N
7.4.5 其他伪指令2019 O% S4 U6 K, r$ R" b! ]$ X
第8章 ARM系统设计和程序设计: M5 K( M( b$ j/ z; _
8.1 关于ARM处理器,我们学到了什么?207: V( K9 w1 p, j! ]
8.2 程序设计的几个问题209
1 A4 J( y- f" o* {- G) U; J* Q8.3 ARM指令和 Thumb指令的兼容性214
1 ]7 T7 ^/ h6 C& g2 ~. d$ P+ F3 @8.4 汇编程序规则221: t( c$ |: p0 y7 J0 o. p% i
8.4.1 组成222! l* M9 B J+ o( J. ^9 w
8.4.2 书写格式223 j8 ]- K6 P& X' J1 I
8.4.3 汇编语言中的表达式224( n" H% T: b) j
8.5 汇编程序举例231
+ u0 b/ J1 ~: l( H x第9章 C和C++语言的应用, G; e6 h0 C5 w4 d
9.1 汇编语言与C/C++语言的比较237& N4 N2 r8 L, D) E; z* I
9.2 C/C++语言的编程规范238
8 C4 N7 i/ x; u: c6 H9.2.1 注释238
6 k6 N# I1 o& l" `) f- y9.2.2 命名239# h b$ i9 Z% j. Z- k; b+ o" y
9.2.3 编辑风格2398 d7 e7 v2 g2 g; t
9.3 如何编写针对ARM的高效C语言程序240; M+ a- \- [2 i( C
9.3.1 以空间换时间240; o1 u+ _3 j' Q3 p0 ~
9.3.2 使用数学方法解决问题242% \: N* s) M3 z
9.3.3 使用位操作242
# \; X$ G+ ^% Q; y& u1 }5 [9.3.4 嵌入汇编243
9 }. X( c; b5 q2 o+ }; ~/ N+ F9.4 C、C++语言与汇编语言的混合编程2441 I1 u7 v/ L" P- Q2 H6 T
9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式244, F0 p" k# z' e, l. a
9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245! U3 K/ N3 ^" E- s- `% Y
9.4.3 内嵌汇编指令的应用举例247
7 K& g5 ~# [ s* y1 ]5 B9.4.4 从汇编程序中访问C程序变量248
- L2 `8 C, l1 l# X9.4.5 在C++程序中使用C程序头文件249) l: G! k% N d8 o1 z
9.4.6 汇编程序、C程序以及C++程序的相互调用举例250# v6 i' ?" Z/ q
第10章 程序的编辑和编译
6 {! ~- n, R1 {) _1 ^10.1 程序设计过程254
$ H( r1 e( _4 r9 [# S( K7 a10.1.1 编辑程序254
# M0 W) R n; s) s2 u8 {) u) ?8 A10.1.2 编译程序255) B2 t. f- l7 _8 f& h! `
10.1.3 连接和调试程序2573 v Y3 e: D R' g
10.2 ARM处理器开发工具介绍258
3 {. v5 h3 B" L/ m10.2.1 ARM处理器仿真系统特点2589 Z7 X) a7 K5 Q; J$ c7 `" t5 P6 ]. M
10.2.2 ADS集成开发环境259
2 }- E8 m: A- }1 ]5 t( O5 X Q0 K10.2.3 ADS开发系统的系统资源261
1 [: O+ o+ H6 B; p; O* |, s8 ^10.2.4 系统软件开发的步骤2638 m4 a" X% K( J! P
10.3 程序的编辑263* {; o. o7 k. l/ s% T
10.3.1 源程序是可移植的263
' a% {3 g$ c5 Q2 V10.3.2 在CodeWarrior for ADS环境下编辑源文件266' F" h" U, ?1 B w+ e
10.3.3 建立工程项目总结271
, h3 Q2 u( b1 ]10.3.4 建立C语言和C++语言源文件2716 q1 j' G5 M% \+ i4 E" D
10.3.5 文件的管理272# v, Q, r; j9 v+ L# g4 b
10.3.6 编辑画面的设置273
3 K, E1 H: `! i# P" V! }" C& ~10.3.7 ADS编辑功能介绍279) `- M, O# V" j. [" a* U
10.3.8 屏幕分割设置282
" i5 [! K" s5 K8 M6 ~; h9 r6 G10.4 程序的编译2839 c* W4 C3 D8 ? q
10.4.1 有两种方式可以实现程序的编译283
' K3 L# ~. s' x10.4.2 命令行中的可选项和图形方式中的可选项286
% T2 _( _- ]( ^10.4.3 ADS中的可选项290; ~6 \( F; K7 G6 f
10.5 汇编器的应用291+ t& u y! ]5 S3 s2 |3 M6 I7 X" Y
10.5.1 ARM汇编器armasm中的可选项291
$ ^8 A8 C- O1 L$ U$ a10.5.2 ARM汇编器应用298
) c5 h$ H. R ]0 _& l10.5.3 应用举例300
, k C- ^+ t4 y# A10.6 编译器的应用303
# L8 q# ?) j& b9 |7 R10.6.1 ARM编译器中的可选项303
: s% U e1 e9 U* e/ B; p10.6.2 ARM编译器的应用317
5 Z6 u& Y/ A8 U! L第11章 程序的连接: Y, z) c$ ^% L, i- Z2 I
11.1 几个与连接有关的概念320, R0 C" O' h0 M; S) c' Q
11.2 连接器的应用326
# M- J) `2 n2 G/ p0 |5 u11.3 连接器选项设置334
! w6 S& w# {6 o3 t' { Q/ l. {" J11.4 连接器应用举例347
2 p/ i: _; B8 R0 {( I p6 j, G第12章 ARM调试工具AXD) f2 C: u* h7 @, R
12.1 调试工具AXD361
# g+ [( }+ X# _' n12.1.1 ARM调试工具介绍361
# u9 K2 ]$ e9 Q, ?# ^12.1.2 调试工具AXD的使用方法363
. \( A$ i$ S# F. z12.2 在调试过程中使用断点3712 r3 F5 f+ e- }4 o7 L! L/ |. p4 J
12.2.1 设置断点371
7 d9 r9 A7 D9 a" o12.2.2 执行到断点处374
9 y) S; m3 s U# T* Y |, @12.2.3 查找和修改断点374
; Q6 d7 T% s5 g4 a9 u12.2.4 断点管理下拉菜单374
4 S/ d; p& y2 j( j12.2.5 观察断点375
) B: A. s' H% c- _2 B; u' e12.2.6 删除断点376
# b; K8 O& j( R& b& ]5 i# R12.3 AXD中其他工具介绍376; Y7 B( y) W$ R3 C: q3 |
12.3.1 使用观测项3764 Q1 G9 q8 [2 R2 }. A* ?+ ~! y
12.3.2 在调试程序时观察变量381
. B( l4 x" `( l) q4 m' y12.3.3 在调试程序时使用符号表383
* o, V' E1 Q' y1 o7 m# \ D3 ~12.3.4 使用观测点384) L/ G+ F5 e1 r( L# @- ^3 S
12.3.5 工具栏中的工具387
4 u/ K, e6 T$ P/ u3 p12.4 数据格式389
% y6 Z% D& x- `9 A12.4.1 设置数据格式389
( ~+ r U3 S7 d# C12.4.2 设置默认的数据显示格式393
" z" n/ o5 D8 p& z" I( c( _6 N( R% P. R& p0 |. x
|
|