· 以ARM9处理器为背景,以Realview MDK为主要开发环境
· 将嵌入式软硬件理论讲解和嵌入式实验实践融合在一起
· 侧重实践,辅以代码,从分析的角度来学习嵌入式开发的各种技术
《嵌入式系统技术与设计(第2版)》在全面介绍ARM处理器的体系结构、编程模型、指令系统和最新的RealView MDK开发环境的同时,以英蓓特公司的EduKit-Ⅲ实验教学系统为平台,以ARM9处理器S3C2410为核心,详细介绍了系统的设计及相关接口的操作,并提供了大量的实验例程。本书最后详细讲解了嵌入式Linux系统各个组成部分在教学系统上的移植过程。
《嵌入式系统技术与设计(第2版)》可作为高等院校计算机、电子信息、通信工程、自动化等专业嵌入式系统教程的教材,也可作为相关嵌入式系统开发人员的参考书。
嵌入式系统技术与设计(第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