《嵌入式系统技术与设计(第2版)》

图书作者:刘洪涛 苗德行 丛书名称: 21世纪高等教育计算机规划教材 出版日期:2012年11月

编辑推荐理由

推荐评分:5.0分

多年嵌入式人才培养及项目研发经验总结

数百家企业嵌入式研发岗位人才需求汇总

数十所嵌入式专业大学院校教学现状调研

侧重实践及案例分析并辅以代码加以讲解

图书简介

《嵌入式系统技术与设计(第2版)》在全面介绍ARM处理器的体系结构、编程模型、指令系统和最新的RealView MDK开发环境的同时,以英蓓特公司的EduKit-Ⅲ实验教学系统为平台,以ARM9处理器S3C2410为核心,详细介绍了系统的设计及相关接口的操作,并提供了大量的实验例程。本书最后详细讲解了嵌入式Linux系统各个组成部分在教学系统上的移植过程。 《嵌入式系统技术与设计(第2版)》可作为高等院校计算机、电子信息、通信工程、自动化等专业嵌入式系统教程的教材,也可作为相关嵌入式系统开发人员的参考书。

图书目录

  • ※第1章 嵌入式系统概述 1

  • 1.1 嵌入式系统简介 1
  • 1.2 嵌入式系统发展趋势 1
  • 1.3 嵌入式系统的硬件和软件特征 2
  • 1.4 ARM系列处理器简介 4
  • 1.4.1 ARM7处理器系列 5
  • 1.4.2 ARM9处理器系列 5
  • 1.4.3 ARM9E处理器系列 6
  • 1.4.4 ARM10处理器系列 6
  • 1.4.5 ARM10E处理器系列 6
  • 1.4.6 ARM11处理器系列 7
  • 1.4.7 SecureCore处理器系列 7
  • 1.4.8 StrongARM和Xscale处理器系列 7
  • 1.4.9 Cortex和MPCore处理器系列 7
  • 1.4.10 各种处理器系列之间的比较 7
  • 本章小结 8
  • 思考题 8
  • ※第2章 ARM体系结构与指令集 9

  • 2.1 ARM体系结构的特点 9
  • 2.2 ARM处理器工作模式 9
  • 2.3 寄存器组织 10
  • 2.3.1 通用寄存器 11
  • 2.3.2 状态寄存器 12
  • 2.3.3 程序计数器 14
  • 2.4 流水线 15
  • 2.4.1 流水线的概念与原理 15
  • 2.4.2 流水线的分类 15
  • 2.4.3 影响流水线性能的因素 16
  • 2.5 ARM存储系统 17
  • 2.5.1 协处理器 18
  • 2.5.2 存储管理单元 18
  • 2.5.3 高速缓冲存储器 19
  • 2.6 异常 19
  • 2.6.1 异常的种类 19
  • 2.6.2 异常的优先级 20
  • 2.6.3 构建异常向量表 20
  • 2.6.4 异常响应流程 22
  • 2.6.5 从异常处理程序中返回 23
  • 2.7 ARM处理器的寻址方式 24
  • 2.7.1 数据处理指令寻址方式 24
  • 2.7.2 内存访问指令寻址方式 25
  • 2.8 ARM处理器的指令集 28
  • 2.8.1 数据操作指令 28
  • 2.8.2 乘法指令 33
  • 2.8.3 Load/Store指令 35
  • 2.8.4 单数据交换指令 40
  • 2.8.5 跳转指令 41
  • 2.8.6 状态操作指令 43
  • 2.8.7 协处理器指令 45
  • 2.8.8 异常产生指令 46
  • 本章小结 48
  • 思考题 48
  • ※第3章 ARM汇编语言程序设计 49

  • 3.1 ARM/Thumb混合编程 49
  • 3.1.1 Thumb指令的特点及实现 49
  • 3.1.2 ARM/Thumb交互工作基础 50
  • 3.1.3 ARM/Thumb交互子程序 52
  • 3.2 ARM汇编器支持的伪操作 57
  • 3.2.1 伪操作概述 57
  • 3.2.2 符号定义伪操作 57
  • 3.2.3 数据定义伪操作 60
  • 3.2.4 汇编控制伪操作 64
  • 3.2.5 杂项伪操作 68
  • 3.3 ARM汇编器支持的伪指令 75
  • 3.3.1 ADR伪指令 75
  • 3.3.2 ADRL伪指令 75
  • 3.3.3 LDR伪指令 76
  • 3.4 汇编语言与C/C++的混合编程 77
  • 3.4.1 内联汇编 77
  • 3.4.2 嵌入型汇编 79
  • 3.4.3 汇编代码访问C全局变量 82
  • 3.4.4 C++中使用C头文件 82
  • 3.4.5 混合编程调用举例 83
  • 本章小结 87
  • 思考题 87
  • ※第4章 嵌入式软件基础实验 88

  • 4.1 Realview MDK简介 88
  • 4.2 ULINK2仿真器简介 89
  • 4.3 使用Realview MDK创建一个工程 89
  • 4.3.1 选择工具集 89
  • 4.3.2 创建工程并选择处理器 90
  • 4.3.3 建立一个新的源文件 91
  • 4.3.4 工程中文件的加入 91
  • 4.3.5 工程基本配置 91
  • 4.3.6 工程的编译链接 96
  • 4.4 嵌入式软件开发基础实验 96
  • 4.4.1 ARM汇编指令实验一 96
  • 4.4.2 ARM汇编指令实验二 101
  • 4.4.3 Thumb汇编指令实验 102
  • 4.4.4 ARM处理器工作模式实验 103
  • 4.4.5 C语言实验程序一 106
  • 4.4.6 C语言实验程序二 108
  • 4.4.7 汇编语言与C语言相互调用
  • 实例 111
  • 本章小结 113
  • ※第5章 ARM应用系统设计 114

  • 5.1 SoC系统概述 114
  • 5.2 S3C2410概述 114
  • 5.3 S3C2410系统功能电路设计 115
  • 5.3.1 概述 115
  • 5.3.2 电源电路 117
  • 5.3.3 时钟电路 117
  • 5.3.4 复位电路 118
  • 5.3.5 JTAG接口电路 118
  • 5.3.6 Nor Flash电路 119
  • 5.3.7 Nand Flash电路 121
  • 5.3.8 SDRAM电路 123
  • 5.3.9 串行接口电路 125
  • 5.3.10 以太网接口电路 126
  • 5.3.11 蜂鸣器电路及其PWM电路 126
  • 5.3.12 按键电路 126
  • 5.3.13 实时时钟 126
  • 5.3.14 A/D转换器电路 128
  • 5.3.15 IIS音频接口电路 128
  • 5.3.16 SD卡接口电路 129
  • 5.3.17 LCD电路 129
  • 5.3.18 USB接口电路 130
  • 5.3.19 印制电路板设计的注意事项 130
  • 本章小结 131
  • 思考题 131
  • ※第6章 S3C2410系统接口操作原理及实验 132

  • 6.1 I/O接口实验 132
  • 6.1.1 实验目的 132
  • 6.1.2 实验设备 132
  • 6.1.3 实验内容 132
  • 6.1.4 实验原理 133
  • 6.1.5 实验操作步骤 134
  • 6.1.6 实验参考程序 135
  • 6.2 串口通信实验 136
  • 6.2.1 实验目的 136
  • 6.2.2 实验设备 136
  • 6.2.3 实验内容 136
  • 6.2.4 实验原理 136
  • 6.2.5 实验操作步骤 141
  • 6.2.6 实验参考程序 142
  • 6.3 中断实验 142
  • 6.3.1 实验目的 142
  • 6.3.2 实验设备 143
  • 6.3.3 实验内容 143
  • 6.3.4 实验原理 143
  • 6.3.5 实验操作步骤 147
  • 6.3.6 实验参考程序 149
  • 6.4 键盘控制实验 151
  • 6.4.1 实验目的 151
  • 6.4.2 实验设备 151
  • 6.4.3 实验内容 151
  • 6.4.4 实验原理 151
  • 6.4.5 实验设计 153
  • 6.4.6 实验操作步骤 154
  • 6.4.7 实验参考程序 154
  • 6.5 实时时钟实验 155
  • 6.5.1 实验目的 155
  • 6.5.2 实验设备 155
  • 6.5.3 实验内容 156
  • 6.5.4 实验原理 156
  • 6.5.5 实验设计 157
  • 6.5.6 实验操作步骤 158
  • 6.5.7 实验参考程序 159
  • 6.6 看门狗实验 160
  • 6.6.1 实验目的 160
  • 6.6.2 实验设备 160
  • 6.6.3 实验内容 160
  • 6.6.4 实验原理 161
  • 6.6.5 实验设计 162
  • 6.6.6 实验操作步骤 163
  • 6.6.7 实验参考程序 164
  • 6.7 IIC串行通信实验 165
  • 6.7.1 实验目的 165
  • 6.7.2 实验设备 165
  • 6.7.3 实验内容 165
  • 6.7.4 实验原理 165
  • 6.7.5 实验设计 170
  • 6.7.6 实验操作步骤 171
  • 6.7.7 实验参考程序 171
  • 6.8 A/D转换实验 173
  • 6.8.1 实验目的 173
  • 6.8.2 实验设备 173
  • 6.8.3 实验内容 173
  • 6.8.4 实验原理 174
  • 6.8.5 实验设计 176
  • 6.8.6 实验操作步骤 176
  • 6.8.7 实验参考程序 177
  • 6.9 Nand Flash读写实验 178
  • 6.9.1 实验目的 178
  • 6.9.2 实验设备 178
  • 6.9.3 实验内容 178
  • 6.9.4 实验原理 178
  • 6.9.5 实验设计 182
  • 6.9.6 实验操作步骤 182
  • 6.9.7 实验参考程序 182
  • 本章小结 184
  • ※第7章 嵌入式操作系统及开发简述 185

  • 7.1 嵌入式Linux简介 185
  • 7.2 构建嵌入式Linux开发环境 185
  • 7.2.1 交叉开发环境介绍 186
  • 7.2.2 安装交叉开发工具 186
  • 7.2.3 主机交叉开发环境配置 188
  • 7.3 Bootloader 190
  • 7.3.1 Bootloader的种类 191
  • 7.3.2 U-Boot工程简介 192
  • 7.3.3 U-Boot编译 192
  • 7.3.4 U-Boot的移植思路 195
  • 7.3.5 U-Boot的烧写 196
  • 7.3.6 U-Boot的常用命令 197
  • 7.4 Linux内核与移植 202
  • 7.4.1 Linux内核结构 203
  • 7.4.2 Linux内核配置系统 204
  • 7.4.3 Linux内核编译选项 209
  • 7.5 移植Linux 2.6内核到S3C2410平台简述 213
  • 7.5.1 移植的概念 213
  • 7.5.2 设备驱动移植 217
  • 7.5.3 Nand Flash移植 218
  • 7.6 嵌入式文件系统构建 220
  • 7.6.1 文件系统简介 220
  • 7.6.2 嵌入式文件系统的特点和种类 220
  • 7.6.3 文件系统的组成 226
  • 7.6.4 利用BusyBox构建文件系统 229
  • 7.6.5 利用NFS调试新建的文件系统 232
  • 本章小结 234
  • 思考题 234
  • ※第8章 嵌入式Linux实验 235

  • 8.1 搭建嵌入式Linux开发环境 235
  • 8.1.1 实验目的 235
  • 8.1.2 实验环境 235
  • 8.1.3 实验步骤 236
  • 8.2 移植U-Boot实验 238
  • 8.2.1 实验目的 238
  • 8.2.2 实验环境 238
  • 8.2.3 实验步骤 238
  • 8.3 烧写U-Boot实验 247
  • 8.3.1 实验目的 247
  • 8.3.2 实验环境 248
  • 8.3.3 实验步骤 248
  • 8.4 添加U-Boot命令实验 250
  • 8.4.1 实验目的 250
  • 8.4.2 实验环境 250
  • 8.4.3 实验步骤 250
  • 8.5 Linux内核编译与下载实验 250
  • 8.5.1 实验目的 250
  • 8.5.2 实验环境 250
  • 8.5.3 实验步骤 251
  • 8.6 Linux内核移植实验 252
  • 8.6.1 CS8900A网卡驱动移植 252
  • 8.6.2 Nand Flash驱动移植 254
  • 8.6.3 Yaffs2文件系统移植 256
  • 8.6.4 LCD驱动移植 257
  • 8.6.5 USB驱动移植 258
  • 8.7 文件系统制作实验 259
  • 8.7.1 实验目的 259
  • 8.7.2 实验环境 259
  • 8.7.3 实验步骤 259
  • 8.8 编写Linux内核模块实验 264
  • 8.8.1 实验目的 264
  • 8.8.2 实验环境 264
  • 8.8.3 实验步骤 264
  • 8.9 编写带参数的Linux内核模块实验 265
  • 8.9.1 实验目的 265
  • 8.9.2 实验环境 265
  • 8.9.3 实验步骤 265
  • 8.10 编写Linux字符驱动程序之LED实验 265
  • 8.10.1 实验目的 265
  • 8.10.2 实验环境 266
  • 8.10.3 实验步骤 266
  • 8.11 编写Linux字符驱动程序之PWM实验 269
  • 8.11.1 实验目的 269
  • 8.11.2 实验环境 269
  • 8.11.3 实验步骤 270
  • 8.12 编写Linux字符驱动程序之键盘扫描实验 272
  • 8.12.1 实验目的 272
  • 8.12.2 实验环境 273
  • 8.12.3 实验步骤 273
  • 本章小结 281
  • 参考文献 282