第1章 ARM嵌入式系统概论 1
1.1 ARM处理器系列 1
1.2 ARM处理器的系统结构 2
1.3 ARM处理器的选择 2
1.4 操作系统的选择 5
1.4.1 ARM-Linux 5
1.4.2 μC/OS-Ⅱ 6
1.4.3 eCos 6
1.5 ARM嵌入式系统的一般结构 7
1.5.1 ARM嵌入式系统的硬件结构 7
1.5.2 ARM嵌入式系统的软件结构 8
1.6 硬件基础知识 9
1.6.1 电容 9
1.6.2 电感和磁珠 11
1.6.3 电阻 11
1.6.4 电平转换 12
第2章 嵌入式开发环境 13
2.1 建立嵌入式系统的硬件开发环境 13
2.1.1 恒温烙铁 13
2.1.2 热风枪 14
2.1.3 万用表 14
2.1.4 示波器 15
2.2 建立嵌入式系统的软件开发环境 16
2.2.1 在虚拟机上运行Linux操作系统 16
2.2.2 其他常用辅助工具(secureCRT、超级终端和串口工具) 17
2.3 研发调试烧写工具 18
2.3.1 制作JTAG烧写下载线 18
2.3.2 烧写程序Jflash简介 20
2.4 深入分析Jflash 20
2.4.1 计算机并行口编程 20
2.4.2 Jflash源文件 22
2.4.3 main函数 22
2.4.4 Jflash中的JTAG技术细节 27
2.4.5 移植Jflash到新的硬件平台 33
2.4.6 Nor Flash的烧写过程 40
2.4.7 Nand Flash的烧写过程 43
2.5 编译环境的建立 47
第3章 嵌入式系统的“Hello,World!” 48
3.1 最小系统硬件设计 48
3.2 嵌入式系统的“Hello,World!” 51
3.3 代码解释 55
第4章 引导程序 65
4.1 BootLoader概述 65
4.2 处理器启动的硬件设计 69
4.3 BootLoader(vivi)的代码分析 73
4.4 从Nand Flash装载引导程序 85
4.5 vivi的移植 89
第5章 Linux操作系统移植 106
5.1 Linux操作系统目录结构 106
5.2 引导程序与Linux操作系统 108
5.3 移植到新平台的相关代码分析 110
5.4 编译内核 124
5.5 制作根文件系统 127
第6章 Linux设备驱动程序 131
6.1 概述 131
6.2 Linux设备驱动模型 132
6.2.1 sysfs文件系统 132
6.2.2 内核相关数据结构 133
6.3 一个简单的设备驱动程序 136
6.4 设备驱动程序与硬件 142
6.5 用户程序和内核之间传递数据 144
6.6 中断处理 146
6.7 软中断和tasklets 149
6.8 /proc文件系统 154
第7章 I2C总线设备 157
7.1 I2C总线接口设计 157
7.2 简单的I2C设备驱动程序 165
7.3 Linux的I2C驱动程序结构 170
7.4 用户模式下访问I2C设备 178
7.5 I2C接口的实时时钟设备驱动 179
第8章 串行通信接口 189
8.1 串行通信接口规范 189
8.2 RS485规范 192
8.3 串行接口硬件设计 193
8.4 RS485接口硬件设计 197
8.5 Linux串口设备驱动程序 198
第9章 Flash存储设备 220
9.1 概述 220
9.2 Flash硬件接口设计 221
9.3 MTD驱动程序结构 223
9.4 Nor Flash设备驱动程序 230
9.5 Nand Flash设备驱动程序 232
9.6 Yaffs2文件系统 239
第10章 以太网接口 251
10.1 概述 251
10.2 以太网接口硬件设计 253
10.3 Linux网络设备驱动程序结构 255
10.4 DM9000驱动程序 267
第11章 液晶显示屏接口设计 282
11.1 概述 282
11.2 液晶屏接口设计 283
11.3 通用I/O接口驱动液晶屏 294
11.4 Linux帧缓冲设备驱动程序结构 296
11.5 S3C2410液晶显示设备驱动程序 302
第12章 嵌入式系统的电磁兼容基本设计 314
12.1 概述 314
12.2 浪涌防护设计 316
12.3 电快速瞬变脉冲群防护设计 320
12.4 静电防护设计 323
参考文献 330