首页>参考读物>计算机科学与技术>计算机组织与体系结构

ARM原理与嵌入式系统实战
作者 : 范圣一
出版日期 : 2007-07-30
ISBN : 7-111-21501-1
定价 : 42.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 347
开本 : 16开
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

要了解ARM SoC首先要掌握微处理器控制,微处理器控制是嵌入式系统的基础。为了让读者更容易地了解ARM SoC,本书的各个章节都穿插了处理器控制的概念。本书也不只是一本探讨16/32位微控制器的书,而且是一本探讨嵌入式系统的书。另外,本书探讨的内容不仅包括硬件和软件的设计,还涉及如何设计嵌入式系统的内容。
  本书在硬件方面会从电源、Reset开始到设计一个以ARM为主的最基本电路;软件方面则从Reset exception开始,到建立一个以ARM为主的开机程序(Boot Loader)。为求容易理解,本书所使用的硬件电路都会先以方块图表示,最后以完整电路呈现,软件也用最简单的程序来解释。

本书主要内容:
  ● ARM的内核及SoC的结构。
  ● ARM的内核原理及使用。
  ● 如何编写ARM的开机程序。
  ● 嵌入式系统的编译器及汇编语言。
  ● 各种内存的原理。
  ● 如何设计一套嵌入式系统。
  ● 以S3C44B0X为例设计一套嵌入式系统。

图书特色

封底文字

要了解ARM SoC首先要掌握微处理器控制,微处理器控制是嵌入式系统的基础。为了让读者更容易地了解ARM SoC,本书的各个章节都穿插了处理器控制的概念。本书也不只是一本探讨16/32位微控制器的书,而且是一本探讨嵌入式系统的书。另外,本书探讨的内容不仅包括硬件和软件的设计,还涉及如何设计嵌入式系统的内容。 本书在硬件方面会从电源、Reset开始到设计一个以ARM为主的最基本电路;软件方面则从Reset exception开始,到建立一个以ARM为主的开机程序(Boot Loader)。为求容易理解,本书所使用的硬件电路都会先以方块图表示,最后以完整电路呈现,软件也用最简单的程序来解释。 本书主要内容: ● ARM的内核及SoC的结构。 ● ARM的内核原理及使用。 ● 如何编写ARM的开机程序。 ● 嵌入式系统的编译器及汇编语言。 ● 各种内存的原理。 ● 如何设计一套嵌入式系统。 ● 以S3C44B0X为例设计一套嵌入式系统。

图书序言

笔者自1995年开始接触ARM SoC,在使用过程中深感学习ARM不仅是学习一个16/32位的CPU。要了解ARM必须从整体的嵌入式系统开始,有非常多的相关知识是在学习ARM之前必须具备的,我们不仅要具备微处理器的概念,还要了解Flash、SDRAM的原理和使用方式,又要学习嵌入式编译器。如果只是写一写ARM的应用程序实在无法描述ARM SoC的深奥,但是市面上确实很难找到一本从基本嵌入式系统原理到结合ARM SoC的书,这也是笔者在使用ARM十年后想要写这本书的原因。
  本书的结构分为3大部分,分别是基础篇、原理篇及实例篇。基础篇讲述在学习ARM前必须具备的相关知识,原理篇讲述以ARM CPU为基础的基本概念,实例篇是将前两篇所讲述的概念以S3C44B0X(韩国三星公司所出的以ARM7TDMI为内核)为例设计出一套系统。
  笔者学习的过程中深感我们是使用ARM SoC而不是设计ARM SoC,所以有关ARM内核概念的阐述,并没有非常多的篇幅,而多着墨于探讨如何应用ARM SoC,这不只是一本探讨ARM CPU内核的书,更是一本探讨ARM的原理和应用的书。
  要了解ARM SoC,势必要了解微处理器控制,微处理器控制是嵌入式系统的基础,为了让读者更容易了解ARM SoC,笔者在各个不同的章节穿插了微处理器控制的概念,这不只是一本探讨16/32位微控制器的书,更是一本探讨嵌入式系统的书。
  本书着重于如何以ARM为基础来设计一套嵌入式系统,既然是设计嵌入式系统,当然就不只是软/固件设计,还包含了硬件的设计,这不只是一本探讨硬件或软件设计的书,更是一本探讨如何设计一个嵌入式系统的书。
  本书许多地方的程序均用汇编语言编写,但限于篇幅的关系并没有讲述ARM的汇编语言,请读者自行参考其他书。
  本书在硬件上会从电源、Reset开始到设计一个以ARM为主的最基本电路,软件上会从Reset exception开始,到建立一个以ARM为主的引导程序(Boot Loader),为使读者容易学习,所使用的硬件电路都会先以方块图表示,最后以完整电路呈现,软件亦用最简单的程序解释。本书的主要内容包括:
·ARM的内核及SoC的结构。
·如何编写ARM的开机程序。
·嵌入式系统的编译器及汇编语言。
·各种内存的原理。
·如何设计一套嵌入式系统(软件及硬件)。
·以S3C44B0X为例设计一套嵌入式系统。

作者简介

范圣一:暂无简介

推荐序

随着技术的进步,32位的ARM处理器已经取代了大多数8051的市场。在许多嵌入式系统和消费性电子产品中都可以看到ARM的踪迹。但ARM有许多先进的架构,因此在软件、固件设计乃至于硬件设计上,都不同于 8051。加上SoC的设计隐藏其中,更加提高了技术层次。这些优点都可以从过去工作中所接触到的众多研发工程师身上得到验证。就大多数工程师的需求而言,一本涵盖ARM软件开发与硬件架构,甚至外围接口的整合设计的参考书籍,是完成产品设计不可缺少的工具。但是市面上可获得的信息相当有限。 与作者认识多年,得知他深厚的微处理器实战经验,丰富的产品设计经历。从硬件实验板的设计到软件链接库的开发,他均能独立完成。再加上他在授课当中,跟实际从事研发的工程师有许多的互动,使得在规划本书章节与内容时,多了一份符合研发人员需要的贴心考虑,让本书不同于其他介绍ARM或微处理器的相关书籍。本书由基础到进阶实例的章节安排,涵盖架构与开发工具的介绍,并说明了相关的外围电路与内存等,让读者很容易循序进入ARM的设计领域,并且可以充分掌握设计者的系统观。这是一本适合研发人员的工具书,更是一本适合微处理器应用的教学参考书。 传识信息股份有限公司  课程开发经理 林昭宏 2006年2月

图书目录

推荐序
序言
第1章  ARM处理器概述 1
1.1  ARM公司简介 1
1.2  ARM微处理器的种类 1
1.3  ARM的广泛应用 4
1.4  如何学习ARM 5
1.5  如何使用这本书 5
1.6  参考资料 6
基 础 篇
第2章  ARM的常用存储器 7
2.1 存储器的分类与存取原理 7
2.1.1  对称式 7
2.1.2  非对称式 8
2.2  对称式存储器 9
2.2.1  ROM 9
2.2.2  SRAM 10
2.2.3  Flash Memory 12
2.3  非对称式存储器 14
2.3.1  DRAM 14
2.3.2  SDRAM 16
2.4  总结 18
第3章  ARM内核与SoC 19
3.1  ARM内核和SoC的结构 19
3.2  ARM内核、高速缓存及写入缓冲区 20
3.2.1  高速缓存的定义 21
3.2.2  写入缓冲区的定义 22
3.3  调试接口简介 22
3.4  总结 24
第4章  ADS编译器与AXD调试器 25
4.1  ADS编译器 25
4.2  AXD调试器 25
4.3  ADS的伪指令 27
4.3.1  指导性伪指令 27
4.3.2  数据定义伪指令 30
4.3.3  输出报告型伪指令 35
4.3.4  符号定义伪指令 36
4.3.5  汇编语言控制伪指令 42
4.3.6  与ARM汇编语言组合的伪指令 44
原 理 篇
第5章  ARM的硬件引导流程 47
5.1  ARM硬件引导的流程 47
5.1.1  电源 47
5.1.2  时钟 48
5.1.3  系统复位 49
5.1.4  存储器总线模式 50
5.2  ARM的存储接口 50
第6章  ARM的操作模式及寄存器 56
6.1  ARM的存储器格式及操作模式 56
6.1.1  大尾数法 56
6.1.2  小尾数法 56
6.2  ARM的寄存器 58
第7章  ARM的汇编语言 62
7.1  ARM的指令概述 62
7.1.1  ARM的指令格式 62
7.1.2  ARM 的指令摘要 63
7.2  条件字段 64
7.3  ARM指令说明 65
7.3.1  跳转和交换 65
7.3.2  跳转和跳转连结指令 67
7.3.3  数据处理指令 68
7.3.4  程序状态寄存器的转移指令 75
7.3.5  乘法和乘加运算 77
7.3.6  长乘法和长乘加法运算 79
7.3.7  单笔数据转移指令 81
7.3.8  HALFWORD和有正负号的数据
转移指令 84
7.3.9  整块数据转移指令 88
7.3.10  单个数据交换指令 95
7.3.11  软件中断指令 96
7.3.12  协处理器数据操作指令 97
7.3.13  协处理器的数据交换指令 99
7.3.14  协处理器寄存器的转移指令 100
7.3.15  无定义的指令 102
7.4  指令集的范例 103
7.4.1  使用条件指令 103
7.4.2  除法和余数 103
7.4.3  溢出侦测 104
7.4.4  使用位移方法来做常数的乘法 105
第8章  ARM的异常事件 106
8.1  ARM的异常事件 106
8.1.1  异常的种类和产生原因 106
8.1.2  异常向量表 107
8.2  ARM的软件引导程序 108
8.3  如何编写ARM的异常事件 111
8.4  软件中断异常 115
8.4.1  软件中断的指令分析 115
8.4.2  软件中断的动作 115
8.4.3  编写软件中断 116
8.5  总结 121
第9章  ADS编译器的设置和汇编语言
的关系 122
9.1  编译器的基本概念 122
9.2  预编译 122
9.3  连接器的基本概念 124
9.4  在ADS下建立一个工程 126
9.5  ADS工程中文件所在位置及说明 133
9.6  ADS其他重要设置 135
第10章  ARM的软件引导流程 140
10.1  ADS的二进制文件格式 140
10.2  ARM引导软件的初始化 144
10.3  ARM的系统规划 147
10.4  汇编语言和C语言的窗口 148
实 例 篇
第11章  S3C44B0X的系统架构 152
11.1  时钟和电源管理 152
11.2  系统总线控制器 153
11.3  外围总线控制器 154
第12章  目标芯片的主要硬件电路 156
12.1  电源电路 156
12.2  时钟电路 156
12.3  复位电路 159
12.4  系统设定 160
12.5  内存电路 161
12.6  ROM/SRAM存储器区块操作 163
12.7  ROM/SRAM区块的电路 165
12.8  SDRAM区块电路 167
第13章  存储器控制器 170
13.1  存储器映像 170
13.2  复位前的存储器硬件设置 171
13.3  存储器控制器寄存器 172
13.4  SROM存储器控制器寄存器 173
13.5  SROM/SDRAM存储器控制器寄存器 175
13.6  存储器控制器的实例 181
13.6.1  硬件架构 181
13.6.2  存储器寄存器设置实例 183
13.7  存储器控制器软件设置实例 187
第14章  目标芯片的系统配置 192
14.1  内部存储器 192
14.2  非高速缓存区域 193
14.3  写入缓冲区 194
14.4  目标芯片系统配置的特殊寄存器 194
14.5  系统配置软件设定实例 197
第15章  时钟和电源管理 199
15.1  功能概述 199
15.2  相位锁相回路 200
15.3  时钟控制逻辑操作 201
15.3.1  相位锁相回路的锁定时间 201
15.3.2  电源复位 201
15.3.3  一般模式下改变相位锁相回路
的设置 202
15.4  时钟电路架构 202
15.5  时钟和相位锁相回路产生器的使用
条件 203
15.6  电源管理 203
15.6.1  正常模式 203
15.6.2  空闲模式 203
15.6.3  停止模式 203
15.6.4  慢速空闲模式 205
15.6.5  慢速模式 205
15.6.6  唤醒与解冻状态 207
15.6.7  电源管理设置注意事项 207
15.6.8  电源管理状态模式转换 208
15.7  时钟及电源管理寄存器 209
15.8  软件设置实例 211
第16章  目标芯片的看门狗定时器 213
16.1  看门狗定时器操作原理 213
16.2  看门狗定时器的特殊寄存器 214
16.3  看门狗定时器的特殊寄存器 216
第17章  目标芯片的引导程序
(不含中断) 217
17.1  软件引导流程 217
17.2  Init.s 程序说明 217
17.3  Init1.s 程序说明 224
17.4  Memcfg.s 定义文件说明 229
17.5  Option.s 定义文件说明 232
17.6  Init1工程的存储器使用 233
第18章  目标芯片的中断控制器 236
18.1  中断控制器的操作方法 236
18.1.1  程序状态寄存器中的F-bit和I-bit 236
18.1.2  中断模式 237
18.1.3  未处理中断寄存器 237
18.1.4  中断屏蔽寄存器 237
18.2  中断源 237
18.3  中断优先级产生模块 238
18.4  中断优先级顺序 239
18.5  向量式中断模式—仅提供中断请求 239
18.6  向量式中断的范例 240
18.7  非向量式中断的范例 246
18.8  中断控制器的特殊寄存器 247
第19章  目标芯片的引导程序 258
第20章  进入C语言之前 268
20.1  存储器规划 268
20.2  第一个以C为主的工程 269
20.2.1  再论ADS的设置 269
20.2.2  44b0工程内容及路径 269
20.2.3  C语言(44b0.c)与汇编语言
(SYSInit.s)的关系 270
20.2.4  44b0.h 271
20.2.5  什么是volatile 271
20.3  加入以调试为主的程序(44blib.c)
及通用头文件(stdafx.h) 274
第21章  目标芯片的输入输出端口 276
21.1  目标芯片端口结构总览 276
21.2  端口的控制叙述 279
21.2.1  端口的结构寄存器 279
21.2.2  端口的数据寄存器 279
21.2.3  端口的上拉寄存器 279
21.2.4  外部中断控制寄存器 279
21.3  输入输出端口控制寄存器 280
21.3.1  端口A控制寄存器 280
21.3.2  端口B控制寄存器 280
21.3.3  端口C控制寄存器 281
21.3.4  端口D控制寄存器 282
21.3.5  端口E 控制寄存器 283
21.3.6  端口F控制寄存器 284
21.3.7  端口G控制寄存器 285
21.3.8  特殊上拉电阻控制寄存器 286
21.3.9  外部中断控制寄存器 287
21.3.10  外部中断未处理寄存器 288
21.4  目标板对输入输出端口的设定 289
21.4.1  端口A的设定 289
21.4.2  端口B的设定 290
21.4.3  端口C的设定 291
21.4.4  端口D的设定 291
21.4.5  端口E的设定 291
21.4.6  端口F的设定 292
21.4.7  端口G的设定 293
21.5  PortInit函数 293
21.6  新增System.c到BootC.mcp 294
21.7  设定系统定义控制器 295
第22章  C语言的异常处理和中断处理
程序 296
22.1  C语言的异常处理 296
22.2  C语言的中断处理 299
第23章  异步串行收发器控制器 306
23.1  异步串行收发器的操作原理 306
23.1.1  数据发送 306
23.1.2  数据接收 307
23.1.3  自动流量控制 308
23.1.4  无自动流量控制 308
23.2  中断或直接内存存取的操作 309
23.3  异步串行收发器的先进先出缓冲区的
错误状态指示 310
23.4  波特率的产生 311
23.5  回路检查模式 311
23.6  中止信号 312
23.7  红外线模式 312
23.8  异步串行收发器控制器的特殊
寄存器 312
23.9  异步串行收发器的实例 319
23.9.1  波特率 319
23.9.2  异步串行收发器数据的帧 320
23.9.3  以轮询的方法来操作异步串行
收发器 322
23.9.4  用中断的方法来操作异步串行
收发器 327
23.9.5  异步串行收发器的其他操作 335
23.9.6  加入Uart.c 335
第24章  存储器控制器实例 338
24.1  LED的电路及其原理 338
24.2  Debug_LED 函数 339
24.3  总结 339
附录  341

教学资源推荐
作者: 李平 杜涛 罗和平
作者: 李林功 吴飞青 王兵 丁晓
作者: 陈虎 吴涛 张安定
作者: (美)David A. Patterson 加州大学伯克利分校 John L. Hennessy 斯坦福大学 著
参考读物推荐
作者: 高显生 编著
作者: [英]姚文祥(Joseph Yiu) 著
作者: 陆平 赵培 左奇 等编著
作者: [丹麦]克劳斯·埃尔克(Klaus Elk) 著