|
|
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处理器开发工具的使用。 ! ^ N/ W4 Q( g! W8 T" P
任何一个学习过51系列单片机的技术人员,借助《从51到ARM—32位嵌入式系统入门》都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。
; ?+ H% p O( ` 《从51到ARM—32位嵌入式系统入门》可供电子信息类大学生、研究生或电子设计工程师阅读参考。
' }# v3 w% [/ O x5 [从51到ARM-32位嵌入式系统入门目录
1 G4 I3 n& R: t. _% s* l8 K第1章 几个基本概念
; ?# T7 \7 J+ i- l1.1 从51系列单片机到ARM处理器1 `5 x( O8 @7 _$ X8 C
1.2 ARM不是单片机28 {3 n# d" L: a6 F6 J
1.3 51系列单片机和ARM处理器的比较3
/ i! H% v# S2 V2 {1.4 以ARM为核的单片机4( t& t/ p, B" t4 ^0 W" g$ [2 d
1.4.1 处理器内核只和外部地址相关4- f' l4 W9 M: x% F. o7 R
1.4.2 ARM怎样组成一个单片机6- u0 e( R7 `: r2 J
1.4.3 一点启示7: Y# |8 w8 a" i- ? W7 h8 l2 |
第2章 ARM处理器基础5 `. o. V. K! g2 w
2.1 ARM处理器的数据格式8
8 i. T/ R2 n5 A- V. l2.1.1 基础知识8
1 h) M' s3 e1 Z# k! @/ \ [2.1.2 ARM处理器的存储器结构9
$ G* o7 s+ Y h2 {5 S5 {0 V2.1.3 ARM处理器的指令存储或数据存储13
/ k& S: q7 E$ d% M. p* L% H2.1.4 地址对准15
- Y- O! y% o* X( }. X2.2 处理器模式151 K, s( E( A& y% r! i$ e
2.3 ARM内部寄存器17
8 V" r7 _: A0 o, u: P. a; b2.3.1 ARM状态时的寄存器17) |6 b* h0 ^: A! [! S" ^' j( n
2.3.2 Thumb状态下的寄存器25
. x; r8 v! @* x; i) a4 i2.4 异常27; w7 T0 l( H0 f4 r
第3章 ARM7TDMI简介1 d4 c% u' A0 k$ [9 z0 i3 M) M3 h
3.1 概述29: V3 X( g4 `9 j* h8 d0 y
3.2 结构和框图30
& V% C0 z/ G0 t7 B6 X3.3.3 级流水线结构33
" `) ]5 U1 R1 O0 z% H+ S3.4 ARM处理器的寻址方式35% N8 {* z( b* y" _$ V. J0 H
3.4.1 51系列与ARM系列寻址方法的比较35: ^1 D" g0 d' O6 [2 v# `1 ^- o
3.4.2 寄存器寻址36) n3 B: m4 v7 h+ d ~8 O
3.4.3 立即寻址36" Q3 T( I, `5 ]: { |
3.4.4 寄存器移位寻址37- s, D3 A) y$ g- V4 V7 `1 t- D* a
3.4.5 寄存器间接寻址392 [) j+ C) X( e$ e! C3 R
3.4.6 变址寻址400 U5 j- Z/ W0 _- h" M' g
3.4.7 多寄存器寻址42( b, m& `2 c; }4 Q! y
3.4.8 堆栈寻址42
( W) x, s5 h5 p8 k/ d( d! v3.4.9 寻址方式的应用434 m: B9 Z3 X% y. }9 u
3.4.1 0ARM指令寻址一览表44
$ ^& ~- t/ U& V: b5 Z第4章 异常和中断+ J6 B1 i- C6 p; V; G4 l+ T6 T) U
4.1 概述45: B( u8 u! s1 a8 V4 Z& Q1 R& o
4.2 复位异常46
( ^1 \/ p9 V A/ H0 @9 Q( ?! V4.3 未定义指令异常47) B) r, X9 \" m
4.4 软件中断异常49
# u) T/ [5 A# o$ u) r4.5 预取指中止异常49
! {$ o4 p U1 Z: s4.6 数据中止异常50$ \/ r% w2 ^3 _/ o( S
4.7 中断请求(IRQ)异常 51
# f; j P2 y; g! E4.8 快速中断(FIQ)请求异常52
; X% e3 J1 y" `, e5 E; f4.9 中断源和中断优先级53
6 i2 I6 }( F) E6 J' o4.10 异常中断的进入和退出54
+ q$ u; x* f3 C4 Q第5章 ARM指令集
/ y9 Q# j0 ^9 n$ c' V: M' h) P* P5.1 概述56 o. ?5 S" e+ v8 b+ N
5.2 指令可选后缀59
6 s& B R" B% s1 V: Z7 H5.2.1 S后缀60) E8 n: i5 ^9 O! ?, R
5.2.2 后缀602 k# l" X4 u. u S0 Y
5.2.3 B后缀61
5 F$ u i! I0 K5.2.4 T后缀61
: l8 ?( [6 ~+ p1 q5.2.5 条件后缀62- M4 a3 V1 [& b6 W
5.3 ARM数据传送指令(存储器访问指令)64, V: A8 j: A' u+ {* j+ A
5.3.1 关于数据传送64& t. H5 {& x1 Y: }+ H
5.3.2 数据传送中的几个问题66
7 g' [0 T9 ^. h8 c+ p5.3.3 ARM数据传送指令代码表70
1 V; o/ ^4 [& t; p2 o4 }: F5.3.4 数据传送指令代码详述71
5 }! k# e' E% E& H) b/ |+ w# w2 j5.4 ARM分支指令93 A$ n1 l3 {$ Q) t" R
5.4.1 关于程序分支93, ?0 V) F% ^3 c1 W a
5.4.2 ARM分支指令详解94
7 T- ~* Y- k7 \5.5 ARM数据处理指令98* \, x' {5 K p- v
5.5.1 ARM数据处理指令的特点98
4 V. w6 \: X& F1 j5.5.2 第2操作数99
, I+ b% m: T, W* T! w0 {' l4 r5.5.3 ARM数据处理指令代码表101, T9 c5 k: n1 X* a2 C" d6 v% A
5.5.4 ARM数据处理指令详述1033 n7 l1 @8 ?9 ]
5.6 ARM指令集中和协处理器有关的指令120
0 Q4 G2 y8 [ h8 c5.7 ARM指令集中的软件中断指令1251 o- S% |+ X3 q& e/ R2 B& \
第6章 Thumb指令集
) }3 o( g' M! c, v. i8 y3 \6.1 Thumb指令的特点1295 }! D" j/ \- y( u
6.2 Thumb指令和ARM指令的比较1322 p! @+ @4 w5 K: r1 T
6.3 Thumb指令集中的数据传送类指令1343 H( i! s$ k1 K( x( Q
6.4 Thumb指令集中的分支指令146/ |( K9 U1 ?+ `" L3 g
6.5 Thumb指令集中的数据处理指令152) g, {4 _5 v5 `2 s% _
6.6 Thumb指令集中的软件中断指令164; f0 F, k7 {1 m8 h: u4 H
第7章 伪指令. j( P0 j6 d1 ?. N" Q! ^
7.1 伪指令概述166" v: }" v5 M7 F, V* L9 L) r
7.2 与ARM指令相关的伪指令167
& j/ u% o8 h' n1 t+ V# ?8 A7.3 与Thumb指令相关的伪指令177
# x9 m; s: y( e" A5 R& z7.4 通用伪指令180
# p2 V1 N7 `+ i$ d7.4.1 为变量定义和赋值的伪指令1804 ~! K+ ?/ O/ b
7.4.2 定义各类寄存器名称的伪指令184, ?7 \3 w: J3 I# y) t D
7.4.3 数据定义伪指令1873 n" k1 ]7 v( N8 J8 N( i5 l
7.4.4 控制程序流向的伪指令196, q* r7 `0 t" X4 Y
7.4.5 其他伪指令2011 I4 `# ]1 g' j# f) A
第8章 ARM系统设计和程序设计
* a! r: j: u6 s: Q$ d8.1 关于ARM处理器,我们学到了什么?207
' g: K l* t" e+ m4 r7 I7 b8.2 程序设计的几个问题209
) s! [6 e# p6 e8.3 ARM指令和 Thumb指令的兼容性214% O, ^/ L7 K$ ~1 K/ {1 Y0 k4 p U4 G
8.4 汇编程序规则2213 Y9 A' P+ I; a4 |; f3 B
8.4.1 组成222' Y! b7 j0 ?( z" `$ n" ~$ f
8.4.2 书写格式223" p% B6 D% @! Q$ L! J. e
8.4.3 汇编语言中的表达式224
& Y1 C4 `. |& d4 r' e& i. {8.5 汇编程序举例231
@' J( {: I4 S( Q9 _' B! T; { |第9章 C和C++语言的应用
) _0 _: E# f4 d4 K6 k3 z9.1 汇编语言与C/C++语言的比较237. [* ^9 a2 `8 q$ P0 z; J: v( Z- R
9.2 C/C++语言的编程规范238* M* l: S: W( {' N
9.2.1 注释238 D) k% n1 ]! E2 q
9.2.2 命名239
2 x3 H6 \* u9 D: C5 g: h9.2.3 编辑风格239
/ @5 C/ z4 a. p2 }; q7 Q9.3 如何编写针对ARM的高效C语言程序240
4 ?& s+ l! B w. R9.3.1 以空间换时间240
; Y# V8 I% m* L9.3.2 使用数学方法解决问题242' Q* e; O' c" b
9.3.3 使用位操作242
9 h$ N, V4 U; c9 {9.3.4 嵌入汇编2439 U# r5 w, A* F, z, b
9.4 C、C++语言与汇编语言的混合编程244$ F9 G3 [3 ~4 J" Y. c* Y
9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式244- V$ x7 |" u1 ?8 f- t
9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245+ t3 l" l/ a7 G2 L
9.4.3 内嵌汇编指令的应用举例247/ |( g9 ]( \: i e
9.4.4 从汇编程序中访问C程序变量2482 s8 j) I# Q* R7 I% D' e4 @
9.4.5 在C++程序中使用C程序头文件249* p: ?% u- r% [
9.4.6 汇编程序、C程序以及C++程序的相互调用举例250
, T' n4 k* u7 J* R第10章 程序的编辑和编译
( F. ]/ ?' Y2 g, ~- Y10.1 程序设计过程2540 P9 d0 F6 ?2 M& [0 j0 `* k, v
10.1.1 编辑程序254
% `) d. c; G7 T1 @0 L- ?+ e. n10.1.2 编译程序2550 t" ]) I; K# l& f% l, J. p2 G
10.1.3 连接和调试程序257+ R3 ?6 f1 t+ e% J# L4 ]
10.2 ARM处理器开发工具介绍258
$ j% j" L7 F1 L( V0 G* g! R10.2.1 ARM处理器仿真系统特点2583 ~+ f5 i. a% H6 V- g0 C
10.2.2 ADS集成开发环境259- e$ v5 Q9 z! T& q
10.2.3 ADS开发系统的系统资源261% ^- J8 h& _0 B. l' [. N9 ~
10.2.4 系统软件开发的步骤263. Y. h% k- S8 U% ~* Q/ C
10.3 程序的编辑263
5 \# K" u7 j q* I, B( L10.3.1 源程序是可移植的263
" F) }) x( s% L& n9 T10.3.2 在CodeWarrior for ADS环境下编辑源文件266
% J2 w `$ r% a+ a1 w- j10.3.3 建立工程项目总结2715 x9 \- E6 W2 R' }7 G% ]
10.3.4 建立C语言和C++语言源文件271
( O5 {7 T& ^9 z' D+ n10.3.5 文件的管理272% O0 s) Q: o: o: O+ b: B7 ~" a+ R
10.3.6 编辑画面的设置273
' |; n% ^ y" }3 _10.3.7 ADS编辑功能介绍279- m0 D; U- ?& p9 ]6 J4 i, A9 F
10.3.8 屏幕分割设置282
( o1 m0 `1 @$ G( Z/ y8 z2 @10.4 程序的编译283% {9 a: X) ?! v! J' F/ z& ?
10.4.1 有两种方式可以实现程序的编译283
- X* U s: n8 K, e+ o1 f8 Z+ h& @10.4.2 命令行中的可选项和图形方式中的可选项2869 m' |& M5 y7 Q- R/ B* A2 v1 l- y
10.4.3 ADS中的可选项290
4 Y5 J' t% F# x10.5 汇编器的应用291
# @# a4 m" @' t10.5.1 ARM汇编器armasm中的可选项291
; {9 l3 R: I- [3 B10.5.2 ARM汇编器应用298
* |, {: ?1 W# Z- E+ D10.5.3 应用举例300
5 ^' \- a0 ` q1 a10.6 编译器的应用303
! m2 U4 u$ u1 Q6 E. G' ~$ ~) i10.6.1 ARM编译器中的可选项303
0 Z4 l6 j) e9 [5 K5 U4 N- k2 m10.6.2 ARM编译器的应用317
3 {( x$ E1 X/ K$ _4 j8 m" F. b; [第11章 程序的连接: F4 W9 L1 k5 Z
11.1 几个与连接有关的概念320
/ A2 M! N) p1 v: C8 ]* F11.2 连接器的应用326# ~$ @- c) e, Z; z
11.3 连接器选项设置334% A5 ^$ @$ M% { A' \/ U g. O5 d
11.4 连接器应用举例347
" y. F# L2 B* L+ o第12章 ARM调试工具AXD
( D6 T- S4 g1 t12.1 调试工具AXD361
" R W/ t0 F# B( \12.1.1 ARM调试工具介绍3617 S4 g v" j8 K5 z
12.1.2 调试工具AXD的使用方法363
" V. A: N' F: J: Q% Q1 V3 l12.2 在调试过程中使用断点371; [' l7 F: b' D i' _% J
12.2.1 设置断点371
- Z9 Q: \: e3 T' L0 l12.2.2 执行到断点处374
9 k9 n$ F$ A, }( s; ~/ n12.2.3 查找和修改断点3748 U1 f% |- C4 D7 ?* i6 k
12.2.4 断点管理下拉菜单374 s6 b7 f% j; E
12.2.5 观察断点375* v1 t; t( _. }% B& i( D1 Y0 m3 X2 S% s- f
12.2.6 删除断点376+ D2 z K2 P/ s3 @% \' H
12.3 AXD中其他工具介绍3768 L j! x8 E4 y
12.3.1 使用观测项376
+ j; {" `, i# i+ m5 q5 h- m12.3.2 在调试程序时观察变量381
% ]) e8 w2 A/ U }12.3.3 在调试程序时使用符号表3831 H1 H, [9 |0 J8 U& [
12.3.4 使用观测点3842 l0 J( Y; I# F4 U( C, P- P2 n+ ~* S
12.3.5 工具栏中的工具3879 m0 I: Z8 S0 x& ?0 [
12.4 数据格式389: t- C% X* x* B+ ?2 K3 C' S$ _
12.4.1 设置数据格式389, X" Z; S% J/ l) H+ `( @
12.4.2 设置默认的数据显示格式393+ O! N$ H1 X6 Z
* ?5 [4 |# r- E1 n |
|