第1章 嵌入式系统基础 1
1.1嵌入式系统概述 1
1.1.1嵌入式系统的基本概念 1
1.1.2嵌入式系统的体系结构 2
1.1.3几种常用的嵌入式操作系统 2
1.1.4嵌入式系统发展趋势 5
1.2 ARM处理器硬件开发平台 6
1.2.1嵌入式处理器简介 6
1.2.2 ARM处理器简介 6
1.2.3 S3C2410处理器介绍 10
1.3嵌入式软件开发流程 13
1.3.1嵌入式系统开发概述 13
1.3.2嵌入式软件开发概述 14
1.4实验内容:使用JTAG烧写NAND Flash 18
小结 21
思考与练习 21
第2章 嵌入式Linux C语言程序开发工具 22
2.1嵌入式Linux下C语言概述 22
2.2编辑器vim 23
2.2.1 vim的基本模式 23
2.2.2 vim的基本操作 24
2.3编译器gcc 26
2.3.1 gcc的简介 26
2.3.2 gcc的编译流程 27
2.3.3 gcc的常用编译选项 29
2.4调试器GDB 34
2.4.1 gdb使用流程 34
2.4.2 gdb基本命令 37
2.4.3 gdbserver远程调试 40
2.5 make工程管理器 42
2.5.1 makefile基本结构 43
2.5.2 makefile变量 43
2.5.3 makefile规则 46
2.5.4 make管理器的使用 47
2.6 autotools 47
2.6.1 autotools使用流程 47
2.6.2使用autotools所生成的makefile 50
2.7实验内容 51
2.7.1 vim使用练习 51
2.7.2用gdb调试程序的bug 52
2.7.3编写包含多文件的makefile 53
2.7.4使用autotools生成包含多文件的makefile 53
小结 54
思考与练习 54
第3章 嵌入式Linux C语言基础 55
3.1预处理 55
3.1.1预定义 55
3.1.2文件包含 60
3.1.3条件编译 61
3.2 C语言中的内存分配 62
3.2.1 C语言程序所占内存分类 63
3.2.2堆和栈的区别 63
3.3程序的可移植性考虑 64
3.3.1字长和数据类型 64
3.3.2数据对齐 65
3.3.3字节顺序 65
3.4 C和汇编的接口 66
3.4.1内嵌汇编的语法 66
3.4.2编译器优化介绍 69
3.4.3 C语言关键字volatile 69
3.4.4 memory描述符 69
3.5 ARM Linux内核常见数据结构 70
3.5.1链表 70
3.5.2树、二叉树、平衡树 75
3.5.3哈希表 82
小结 87
思考与练习 87
第4章 嵌入式Linux开发环境的搭建 88
4.1构建嵌入式Linux开发环境 88
4.1.1嵌入式交叉编译环境搭建 89
4.1.2主机交叉开发环境配置 90
4.2 Bootloader 94
4.2.1 Bootloader的种类 94
4.2.2 U-Boot编译与使用 95
4.2.3 U-Boot移植 102
4.3 Linux内核与移植 103
4.3.1 Linux内核结构 104
4.3.2 Linux内核配置与编译 105
4.3.3 Linux内核移植 108
4.4嵌入式文件系统构建 112
小结 115
思考与练习 116
第5章 嵌入式Linux文件I/O编程 117
5.1 Linux系统调用及用户编程接口 117
5.1.1系统调用 117
5.1.2用户编程接口 118
5.1.3系统命令 118
5.2 Linux文件I/O系统概述 118
5.2.1虚拟文件系统 118
5.2.2通用文件模型 119
5.2.3 Linux中文件及文件描述符 121
5.3底层文件I/O操作 121
5.3.1基本文件操作 121
5.3.2文件锁 124
5.3.3多路复用 126
5.4嵌入式Linux串口应用编程 131
5.4.1串口概述 131
5.4.2串口设置详解 132
5.4.3串口使用详解 140
5.5标准I/O编程 143
5.5.1基本操作 143
5.5.2其他操作 146
5.6实验内容 148
5.6.1文件读写及上锁 148
5.6.2多路复用式串口操作 153
小结 156
思考与练习 156
第6章 嵌入式Linux多任务编程 157
6.1 Linux下多任务概述 157
6.1.1任务 157
6.1.2进程 157
6.1.3线程 162
6.2进程控制编程 163
6.2.1进程编程基础 163
6.2.2 Linux守护进程 167
6.3进程间通信 171
6.3.1 Linux下进程间通信概述 171
6.3.2管道通信 172
6.3.3信号通信 177
6.3.4信号量 183
6.3.5共享内存 187
6.3.6消息队列 188
6.4多线程编程 193
6.4.1线程基本编程 193
6.4.2线程之间的同步与互斥 196
6.4.3线程属性 198
6.5实验内容 200
6.5.1编写多进程程序 200
6.5.2编写守护进程 204
6.5.3有名管道通信实验 205
6.5.4共享内存实验 209
6.5.5多线程实验 212
小结 216
思考与练习 217
第7章 嵌入式Linux网络编程 218
7.1 TCP/IP概述 218
7.1.1 TCP/IP的分层模型 218
7.1.2 TCP/IP分层模型特点 219
7.1.3 TCP/IP核心协议 220
7.2网络编程基本知识 222
7.2.1套接字概述 222
7.2.2地址及顺序处理 223
7.2.3套接字编程 228
7.2.4编程实例 231
7.3网络高级编程 234
7.4 Web服务器 240
7.4.1 Web服务器的工作原理 240
7.4.2 Web服务器的编程实现 242
7.4.3运行Web服务器 246
7.5实验内容:NTP的客户端实现 247
小结 252
思考与练习 252
第8章 嵌入式Linux设备驱动编程 253
8.1设备驱动编程基础 253
8.1.1 Linux设备驱动概述 253
8.1.2 Linux内核模块编程 254
8.2字符设备驱动编程 263
8.2.1字符设备驱动编写流程 263
8.2.2重要数据结构 263
8.2.3设备驱动程序主要组成 264
8.3 GPIO驱动程序实例 270
8.3.1 GPIO工作原理 270
8.3.2 GPIO驱动程序 272
8.4按键驱动程序实例 277
8.4.1中断编程 277
8.4.2按键工作原理 278
8.4.3按键驱动程序 279
8.4.4按键驱动的测试程序 285
小结 287
思考与练习 287
第9章 Qt图形编程 288
9.1嵌入式GUI简介 288
9.1.1 Qt/Embedded 289
9.1.2 MiniGUI 289
9.1.3 Microwindows、 Tiny X等 289
9.2 Qt/Embedded开发入门 290
9.2.1 Qt/Embedded介绍 290
9.2.2 Qt/Embedded信号和插槽机制 292
9.2.3搭建Qt/Embedded开发环境 295
9.2.4 Qt/Embedded窗口部件 298
9.2.5 Qt/Embedded图形界面编程 300
9.2.6 Qt/Embedded对话框设计 302
9.3实验内容:使用Qt编写“Hello, World”程序 306
小结 309
思考与练习 310
第10章 综合实例——视频监控系统 311
10.1视频监控系统概述 311
10.1.1系统组成 311
10.1.2音视频服务器 312
10.1.3音视频客户端 312
10.1.4通信传输控制协议 313
10.2基本数据结构 315
10.3功能实现 317
10.3.1传输控制 317
10.3.2用户检验 321
10.3.3控制命令处理 322
10.3.4云台转动控制 324
10.3.5线程相关 327
小结 328
思考与练习 328
参考文献 329