专家指导委员会 1
前言 1
第1章 Linux系统入门基础 1
1.1 认识Linux操作系统 1
1.1.1 Linux和Unix的简明历史 1
1.1.2 Linux系统的特点和组成 3
1.1.3 Linux的开发过程 4
1.2.2 常用命令简介 6
1.2.1 字符界面简介 6
1.2 基本操作命令 6
1.3 Linux文件与目录系统 11
1.3.1 Linux文件系统类型介绍 11
1.3.2 Linux目录系统 14
1.4 shell简介 16
1.5 网络服务简介 18
1.5.1 Linux支持的网络协议 18
1.5.2 Linux的网络服务 19
2.1.1 系统平台环境 21
2.1.2 开发工具环境 21
第2章 Linux程序设计基础——C环境 21
2.1 Linux编程环境介绍 21
2.1.3 基于文本模式的开发平台 22
2.1.4 集成开发平台Eclipse+CDT 23
2.1.5 文档帮助环境 24
2.2 常用编辑器 25
2.2.1 VIM编辑器 26
2.2.2 Emacs编辑器 29
2.3 gcc编译器的使用 32
2.3.1 gcc的主要选项 33
2.3.2 GNU C扩展简介 36
2.4.1 make简介 37
2.4 GNU make管理项目 37
2.4.2 编写Makefile文件的规则 38
2.5 GDB调试 42
2.5.1 GDB命令介绍 42
2.5.2 GDB调试例程 46
2.5.3 基于GDB的图形界面调试工具 49
第3章 Linux shell编程 51
3.1 创建和运行外壳程序 51
3.1.1 创建外壳程序 51
3.1.2 运行外壳程序 51
3.2.1 给变量赋值 52
3.2 使用外壳变量 52
3.2.2 读取变量的值 53
3.2.3 位置变量和其他系统变量 53
3.2.4 引号的作用 54
3.3 数值运算命令 55
3.4 条件表达式 57
3.4.1 if表达式 57
3.4.2 case表达式 58
3.5.1 for语句 60
3.5 循环语句 60
3.5.2 while语句 61
3.5.3 until语句 62
3.6 shift命令 63
3.7 select语句 63
3.8 repeat语句 64
3.9 函数 64
3.10 shell应用举例 67
4.1.1 基础知识 71
4.1.2 GNU跨平台开发链的建立过程 71
第4章 构建嵌入式Linux系统 71
4.1 GNU跨平台开发工具链 71
4.2 嵌入式Linux内核 78
4.3 嵌入式Linux根文件系统 79
4.4 BootLoader简介 80
第5章 嵌入式BootLoader技术 83
5.1 BootLoader的基本概念 83
5.1.1 BootLoader所支持的CPU和嵌入式板 83
5.1.2 BootLoader的安装点和启动过程 84
5.1.3 BootLoader的操作模式 84
5.2 BootLoader典型结构框架 85
5.1.4 BootLoader与主机之间的通信方式 85
5.2.1 BootLoader的stage1 86
5.2.2 BootLoader的stage2 88
5.3 典型BootLoader(Blob)分析和移植 94
5.3.1 Blob简介 94
5.3.2 Blob的运行过程分析 95
5.3.3 Blob的移植 97
第6章 ARM-Linux内核分析 100
6.1 ARM微处理器 100
6.1.1 RISC体系结构 100
6.1.2 ARM微处理器的寄存器结构 101
6.1.3 ARM微处理器的指令结构 102
6.2 ARM-Linux的内存管理 103
6.2.1 内存管理单元MMU 103
6.2.2 ARM-Linux的存储管理机制 103
6.2.3 ARM-Linux存储机制的建立 105
6.2.4 ARM-Linux对进程虚拟空间的管理 107
6.3 ARM-Linux进程管理与调度 109
6.3.1 task_struct数据结构 109
6.3.2 Linux进程的创建、执行和消亡 113
6.3.3 ARM-Linux的进程调度 117
6.4 ARM-Linux中断响应与处理 118
6.4.1 ARM的异常中断种类 118
6.4.2 ARM处理器对异常中断的响应及返回过程 119
6.5 ARM-Linux系统启动与初始化 123
6.5.1 内核数据结构的初始化 123
6.5.2 外设初始化 126
6.5.3 init进程和inittab文件 126
6.5.4 rc启动脚本 127
6.6 Linux模块化机制 128
6.6.1 Linux的模块化 128
6.5.5 shell的启动 128
6.6.2 模块的载入 129
6.6.3 模块的卸载 130
6.7 ARM-Linux内核裁减 130
第7章 嵌入式文件系统 133
7.1 Linux文件系统结构与特征 133
7.1.1 Linux文件系统概述 133
7.1.2 Linux文件系统布局 133
7.1.3 Linux支持的文件系统 136
7.2 嵌入式文件系统简介 137
7.2.1 嵌入式文件系统JFFS简介 138
7.2.2 嵌入式文件系统YAFFS简介 139
7.3 构建根文件系统 140
7.4 根文件系统设置 142
7.5 BusyBox 144
7.5.1 BusyBox简介 144
7.5.2 使用BusyBox构建根文件系统 146
第8章 嵌入式Linux多线程编程 149
8.1 线程基本概念 149
8.1.1 Linux线程简介 149
8.1.2 Linux线程编程基础 149
8.2.1 互斥锁 154
8.2 多线程同步 154
8.2.2 条件变量 156
8.2.3 信号量 158
8.3 生产者-消费者问题 161
8.3.1 生产者-消费者问题简介 161
8.3.2 生产者-消费者问题实例 162
第9章 简单嵌入式Web服务器设计 167
9.1 HTTP协议基础 167
9.1.1 HTTP协议概述 167
9.1.2 HTTP协议的方法 168
9.1.3 HTTP协议消息头 169
9.1.4 HTTP协议使用举例 171
9.2 socket编程基础 172
9.2.1 socket描述 172
9.2.2 TCP/IP模型 172
9.2.3 socket描述符 173
9.3 嵌入式Web服务器系统结构 174
9.3.1 协议标准 174
9.3.2 瘦Web服务器 174
9.3.3 嵌入式应用接口技术 175
9.3.5 EMIT 176
9.3.4 实现形式 176
9.3.6 RomPager 177
9.4 Web服务器构建 177
第10章 嵌入式GUI 182
10.1 嵌入式GUI简介 182
10.1.1 MiniGUI 182
10.1.2 Qt/Embedded 183
10.1.3 Nano-X 184
10.1.4 OpenGUI 185
10.2 MiniGUI程序设计基础 185
10.2.1 MiniGUI的特点 186
10.2.2 窗口处理过程 188
10.2.3 MiniGUI的线程机制 189
10.2.4 MiniGUI的体系结构 190
10.2.5 MiniGUI的底层引擎 191
10.2.6 MiniGUI的三种运行模式 192
10.3 Qt/Embedded程序设计基础 193
10.3.1 Qt/Embedded的图形引擎实现基础 195
10.3.2 Qt/Embedded的事件驱动基础 197
10.3.3 Qt/Embedded底层支持分析 197
10.4 嵌入式GUI的移植 198
参考文献 205