首页资源分类嵌入式开发单片机 > 从51到ARM—32位嵌入式系统入门

从51到ARM—32位嵌入式系统入门

已有 462294个资源

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人消费电子

文档信息举报收藏

标    签: 51单片机ARM32位嵌入式系统

分    享:

文档简介

内容简介    本书从51系列单片机的一般知识出发,将ARM处理器和51系列单片机进行对比,引导读者去理解和学习ARM处理器的知识。内容分为3部分:第1部分是前4章,从大家所熟悉的51系列单片机的基础知识开始,介绍ARM处理器的基本知识,包括ARM和51系列的对比、中断处理系统、寄存器和存储器结构等;第2部分是5~9章,详细比较ARM指令和51系列指令之间的差异,进一步阐述ARM指令的含义和使用方法,从简单的51系列编程经验出发,介绍ARM处理器软件编程方法;第3部分是后3章,介绍ARM处理器开发工具的使用。 

   任何一个学习过51系列单片机的技术人员,借助本书都会很容易地学会ARM处理器的一般知识,了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。 

   本书可供电子信息类大学生、研究生或电子设计工程师阅读参考。 

 

  前言 第1:为什么非学ARM不可?

   (1) 单片机技术的应用在更广泛的范围内把电子产品带到我们身边,把我们每一个人都和“电脑”紧紧相连。仔细观察我们周围的生活,无处不包含单片机的踪影。以8051为代表的单片机渗透到到我们生活的方方面面。但从20世纪80年代到现在,单片机始终在8位机的档次上徘徊,8位的单片机始终主导着应用的潮流。16位单片机虽然也曾经掀起过波浪,但很快就销声匿迹了。可时至今日,我们还能使用8位的单片机做些什么呢?在20世纪80年代,凡是使用8051系列单片机的产品都是先进技术的体现,现在人们当然不会这样去审视一个产品。我们再也无法把51系列和一个技术先进的产品相提并论。32位单片机应用的高潮正悄悄到来。只有使用功能强大的32位单片机才能设计出轻巧多变的手机,才能设计出映像逼真的视频产品,才能设计出非同凡响的工业产品。

   (2) 每个工科院校电子信息类的毕业生都异口同声地说: 我会51系列单片机。当他说这句话的时候,他和别人是站在同一起跑线上的。可我们完全有可能和别人不站在同一起跑线上。 我们有很多人,毕业近十年了,一直在搞产品研发,但也始终工作在51系列单片机这一档次上。我们再也不要以熟知51系列而引以为荣,不要以精通51系列而作为一门工作技能。

   (3) 诚然,51系列及同档次的单片机并没有退出应用市场,在今后很长的时间内都会继续主导潮流,但在高端产品的应用领域不会再发挥作用。应用51系列的产品将是大众化的产品,进行51系列设计的工程师也只是大众化的工程师。你有什么理由不学ARM呢?

第2:学ARM为什么要从51系列学起?

   (1) 在单片机没有出现的20世纪80年代以前,学习计算机是从单板机开始的。在单片机出现以后,学习计算机一般都以51系列为基础。从51系列的基本概念出发,去理解和学习其他更复杂的计算机就要容易得多,因为很多基本概念是相同的。

   (2) 本书的目的在于帮助那些经验并不丰富的初学者,这些人一般只有51系列的经验而没有其他单片机经验,因此,只能以51系列为基础,去学习ARM处理器的知识。

第3: 学ARM究竟有多难?

   ARM处理器的确是一种很复杂的微处理器结构,但从应用的角度来说,只要有51系列的经验,学习ARM并不是很困难的事。

   (1) 学习ARM处理器只学习与应用有关的部分。关于ARM处理器的很多资料,都是直接对ARM说明书的译文。这些说明书中很大一部分都是关于ARM结构的论述,这些内容是写给芯片设计工程师看的,学习这些内容对应用人员毫无用处。

   (2) 应用ARM应该分为3个阶段: 第1阶段是学习ARM的基本内容;第2阶段是学习以ARM为核的单片机;第3阶段才是应用。这与学习51系列单片机不同。学习51系列单片机时,学会了基本内容也就学会了单片机。本书所讲述的是ARM的基本内容。

   (3) 与51系列的基本内容相近,ARM的基本内容主要包括中断响应过程、ARM指令集、存储器结构和汇编语言的程序结构,并没有比51系列更多的内容。从这几方面出发去学习ARM处理器,就会发现学习ARM并不是很困难的事。 

第4:本书的内容安排:

   本书的前4章是对ARM处理器的一般介绍,内容并不多,把这些内容与51系列对比学习,会很快了解ARM处理器的基本原理。对于这些内容以外的关于ARM的知识,建议初学者暂时不要去研究。

   第5章介绍ARM指令集,这一章的内容是汇编语言基础。第6章介绍Thumb指令集,它是ARM指令集的一个子集。在大多数情况下,因为所有的程序都可以使用ARM指令实现,初学者可以暂不学习Thumb指令集。但学过ARM指令集以后,学习Thumb指令集是一件很容易的事情。   

   第7章讲述伪指令,使用ARM汇编语言必须熟悉伪指令。

   第8章讲述软件的设计方法和汇编语言应用规则。第9章讲述C和C++语言的应用。

   在ARM应用中,学会使用开发工具是十分重要的。后面3章详细讲述开发工具的应用。第10章介绍ARM开发中一种常用的工具ADS,介绍怎样使用ADS编辑和编译程序。第11章介绍怎样使用ADS连接程序。第12章介绍怎样使用AXD调试程序。

第5:本书的目标

   通过学习本书前4章的内容,可以了解ARM处理器的基本概念。通过学习5~9章的内容,可以学会为ARM系统编程的一般方法。通过后3章的学习,可以学会使用ARM 开发工具。

   学习本书以后,应该了解软件设计的基本方法,并且能够使用开发工具进行程序编辑、编译、连接和调试,成为一个初步懂得ARM并可以进行软件设计的工程师。

   建议在学习本书时,应该重点学习后3章,并实际使用开发工具进行操作。只有这样,才可以使自己提高一大步。

   本书的第9章由我的同事刘涛编写,其余均由我编写。在编写过程中,得到张君、邓耀武、郑玉峰三同仁及清华大学蒋东翔博士的大力帮助,也得到北京航空航天大学出版社的大力支持,在此一并感谢。由于接触ARM处理器时间不长,本书不可避免存在一些错误,欢迎广大读者指正。交流请使用zxhjeket@yahoo.com.cn。赵星寒

2005年9月于北京 

 

  目录 第1章 几个基本概念1.1 从51系列单片机到ARM处理器1

1.2 ARM不是单片机2

1.3 51系列单片机和ARM处理器的比较3

1.4 以ARM为核的单片机4

1.4.1 处理器内核只和外部地址相关4

1.4.2 ARM怎样组成一个单片机6

1.4.3 一点启示7第2章 ARM处理器基础2.1 ARM处理器的数据格式8

2.1.1 基础知识8

2.1.2 ARM处理器的存储器结构9

2.1.3 ARM处理器的指令存储或数据存储13

2.1.4 地址对准15

2.2 处理器模式15

2.3 ARM内部寄存器17

2.3.1 ARM状态时的寄存器17

2.3.2 Thumb状态下的寄存器25

2.4 异常27第3章 ARM7TDMI简介3.1 概述29

3.2 结构和框图30

3.3.3 级流水线结构33

3.4 ARM处理器的寻址方式35

3.4.1 51系列与ARM系列寻址方法的比较35

3.4.2 寄存器寻址36

3.4.3 立即寻址36

3.4.4 寄存器移位寻址37

3.4.5 寄存器间接寻址39

3.4.6 变址寻址40

3.4.7 多寄存器寻址42

3.4.8 堆栈寻址42

3.4.9 寻址方式的应用43

3.4.1 0ARM指令寻址一览表44第4章 异常和中断4.1 概述45

4.2 复位异常46

4.3 未定义指令异常47

4.4 软件中断异常49

4.5 预取指中止异常49

4.6 数据中止异常50

4.7 中断请求(IRQ)异常 51

4.8 快速中断(FIQ)请求异常52

4.9 中断源和中断优先级53

4.10 异常中断的进入和退出54第5章 ARM指令集5.1 概述56

5.2 指令可选后缀59

5.2.1 S后缀60

5.2.2 后缀60

5.2.3 B后缀61

5.2.4 T后缀61

5.2.5 条件后缀62

5.3 ARM数据传送指令(存储器访问指令)64

5.3.1 关于数据传送64

5.3.2 数据传送中的几个问题66

5.3.3 ARM数据传送指令代码表70

5.3.4 数据传送指令代码详述71

5.4 ARM分支指令93

5.4.1 关于程序分支93

5.4.2 ARM分支指令详解94

5.5 ARM数据处理指令98

5.5.1 ARM数据处理指令的特点98

5.5.2 第2操作数99

5.5.3 ARM数据处理指令代码表101

5.5.4 ARM数据处理指令详述103

5.6 ARM指令集中和协处理器有关的指令120

5.7 ARM指令集中的软件中断指令125第6章 Thumb指令集

6.1 Thumb指令的特点129

6.2 Thumb指令和ARM指令的比较132

6.3 Thumb指令集中的数据传送类指令134

6.4 Thumb指令集中的分支指令146

6.5 Thumb指令集中的数据处理指令152

6.6 Thumb指令集中的软件中断指令164第7章 伪指令7.1 伪指令概述166

7.2 与ARM指令相关的伪指令167

7.3 与Thumb指令相关的伪指令177

7.4 通用伪指令180

7.4.1 为变量定义和赋值的伪指令180

7.4.2 定义各类寄存器名称的伪指令184

7.4.3 数据定义伪指令187

7.4.4 控制程序流向的伪指令196

7.4.5 其他伪指令201第8章 ARM系统设计和程序设计8.1 关于ARM处理器,我们学到了什么?207

8.2 程序设计的几个问题209

8.3 ARM指令和 Thumb指令的兼容性214

8.4 汇编程序规则221

8.4.1 组成222

8.4.2 书写格式223

8.4.3 汇编语言中的表达式224

8.5 汇编程序举例231第9章 C和C++语言的应用9.1 汇编语言与C/C++语言的比较237

9.2 C/C++语言的编程规范238

9.2.1 注释238

9.2.2 命名239

9.2.3 编辑风格239

9.3 如何编写针对ARM的高效C语言程序240

9.3.1 以空间换时间240

9.3.2 使用数学方法解决问题242

9.3.3 使用位操作242

9.3.4 嵌入汇编243

9.4 C、C++语言与汇编语言的混合编程244

9.4.1 在C、C++程序中使用内嵌的汇编指令的语法格式244

9.4.2 在C、C++程序中使用内嵌的汇编指令的注意事项245

9.4.3 内嵌汇编指令的应用举例247

9.4.4 从汇编程序中访问C程序变量248

9.4.5 在C++程序中使用C程序头文件249

9.4.6 汇编程序、C程序以及C++程序的相互调用举例250第10章 程序的编辑和编译10.1 程序设计过程254

10.1.1 编辑程序254

10.1.2 编译程序255

10.1.3 连接和调试程序257

10.2 ARM处理器开发工具介绍258

10.2.1 ARM处理器仿真系统特点258

10.2.2 ADS集成开发环境259

10.2.3 ADS开发系统的系统资源261

10.2.4 系统软件开发的步骤263

10.3 程序的编辑263

10.3.1 源程序是可移植的263

10.3.2 在CodeWarrior for ADS环境下编辑源文件266

10.3.3 建立工程项目总结271

10.3.4 建立C语言和C++语言源文件271

10.3.5 文件的管理272

10.3.6 编辑画面的设置273

10.3.7 ADS编辑功能介绍279

10.3.8 屏幕分割设置282

10.4 程序的编译283

10.4.1 有两种方式可以实现程序的编译283

10.4.2 命令行中的可选项和图形方式中的可选项286

10.4.3 ADS中的可选项290

10.5 汇编器的应用291

10.5.1 ARM汇编器armasm中的可选项291

10.5.2 ARM汇编器应用298

10.5.3 应用举例300

10.6 编译器的应用303

10.6.1 ARM编译器中的可选项303

10.6.2 ARM编译器的应用317第11章 程序的连接11.1 几个与连接有关的概念320

11.2 连接器的应用326

11.3 连接器选项设置334

11.4 连接器应用举例347第12章 ARM调试工具AXD12.1 调试工具AXD361

12.1.1 ARM调试工具介绍361

12.1.2 调试工具AXD的使用方法363

12.2 在调试过程中使用断点371

12.2.1 设置断点371

12.2.2 执行到断点处374

12.2.3 查找和修改断点374

12.2.4 断点管理下拉菜单374

12.2.5 观察断点375

12.2.6 删除断点376

12.3 AXD中其他工具介绍376

12.3.1 使用观测项376

12.3.2 在调试程序时观察变量381

12.3.3 在调试程序时使用符号表383

12.3.4 使用观测点384

12.3.5 工具栏中的工具387

12.4 数据格式389

12.4.1 设置数据格式389

12.4.2 设置默认的数据显示格式393参考文献

文件列表

.BMP
----|000005.BMP
----|000010.BMP
----|000024.BMP
----|000025.BMP
----|000027.BMP
----|000039.BMP
----|000059.BMP
----|000068.BMP
----|000074.BMP
----|000078.BMP
----|000092.BMP
----|000108.BMP
----|000109.BMP
----|000113.BMP
----|000122.BMP
----|Thumbs.db
.NET Compact Framework
.dep
----|lcd_lib.o.d
----|main.o.d
----|twi_i2c.o.d
.deps
----|ControlResource.Po
----|DCU99Editor.Po
----|DuplexEditor.Po
.eclipseme.tmp
----|emulation
----|----|PhoneBook.jad
----|----|PhoneBook.jar
verified
----|classes
----|----|com
----|----|----|north
----|----|----|----|phonebook
----|----|----|----|----|model
----|----|----|----|----|----|Account.class
----|----|----|----|----|----|ApplicationException.class
----|----|----|----|----|----|Index.class
----|----|----|----|----|----|Model$AccountFilter.class
----|----|----|----|----|----|Model$IndexFilter.class
----|----|----|----|----|----|Model.class
----|----|----|----|----|----|Preference.class
----|----|----|----|----|----|UserModel.class
ui
----|ConfirmationDialog.class
----|DetailInfoUI.class
----|Dialog.class
----|DialogListener.class
----|IndexFunctionUI$ListIndex.class
----|IndexFunctionUI.class
----|ListMerchantGroupUI.class
----|ListPhoneUI.class
----|LoginUI.class
----|MerchantGroupDetailInfoUI.class
----|NewPhoneUI.class
----|SearchPhoneUI.class
----|Title.class
----|UIController$1.class
----|UIController$EventID.class
----|UIController.class
----|WaitCanvas$1.class
----|WaitCanvas.class
----|WelcomeUI.class
PhoneBookMIDlet.class
.metadata
----|.plugins
----|----|org.eclipse.core.resources
----|----|----|.projects
----|----|----|----|Nios II Device Drivers
----|----|----|----|----|.location
----|----|----|----|----|.properties
hello_led_0
----|.markers
----|.properties
hello_led_0_syslib
----|.markers
----|.properties
.root
----|112.tree
.safetable
----|org.eclipse.core.resources
org.eclipse.core.runtime
----|.settings
----|----|org.eclipse.cdt.core.prefs
----|----|org.eclipse.cdt.ui.prefs
----|----|org.eclipse.ui.prefs
org.eclipse.ui.workbench
----|dialog_settings.xml
----|workbench.xml
.lock
.log
version.ini
.myeclipse
----|CVS
----|----|Repository
----|----|Root
.settings
----|CVS
----|----|Entries
----|----|Repository
----|----|Root
org.eclipse.core.resources.prefs
.sopc_builder
----|install.ptf
.svn
----|prop-base
props
text-base
----|readme.txt.svn-base
tmp
----|prop-base
props
text-base
all-wcprops
dir-prop-base
entries
format
.tmp_versions
----|dw4002.mod
. Online calibration of Nyquist-rate analog-to-digital converters.pdf
..dir.dat
.DS_Store
.NET Compact Framework mpact Framework
._.DS_Store
._CotEditor_346
._MacOS_Setup
._PortVaR
.actionScriptProperties
.apriori_config
.ccsproject
.classpath
.config.o.flags
.cproject
.cvsignore
.cxl
.depend
.dw4002.ko.cmd
.dw4002.mod.o.cmd
.dw4002.o.cmd
.dwg
.epautoconf.o.flags
.exe
.file_storage.o.flags
.flexProperties
.gitignore
.htaccess
.indent.pro
.message
.pdf
.project
.qmake.internal.cache
.screenrc
.synopsys_dc.setup
.synopsys_pt.setup
.untf
.usbstring.o.flags
.vimrc
.xhdl3.xref

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。