《嵌入式Linux系统开发与应用》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:金伟正编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:9787121131530
  • 页数:310 页
图书介绍:嵌入式系统技术已被广泛应用于军事、工业控制系统、信息家电、通信设备、医疗仪器、智能仪器仪表等众多领域。本书在介绍嵌入式操作系统的一般原理和技术基础上,着重介绍主流的、广受欢迎的Linux操作系统设计与实现,包括Linux的内核开发原理。注重原理讲解和实验相结合,培养学生的理论和实际动手能力。全书分为12章,内容包括嵌入式系统概论、Linux基础知识、Linux程序开发环境、嵌入式BootLoader技术、Linux内核配置、嵌入式文件系统、嵌入式Web设计、嵌入式Linux的GUI等内容。

第1章 嵌入式系统概论 1

1.1 嵌入式系统概述 1

1.1.1 嵌入式系统的历史 1

1.1.2 什么是嵌入式系统 2

1.1.3 嵌入式系统的特点 2

1.1.4 嵌入式处理器 2

1.1.5 嵌入式系统的应用领域 5

1.1.6 嵌入式系统的发展趋势 6

1.2 嵌入式系统开发 7

1.2.1 需求分析和概要设计 7

1.2.2 嵌入式系统中的硬件 8

1.2.3 嵌入式系统中的软件 12

1.2.4 嵌入式系统软件开发的一般过程 16

1.2.5 嵌入式应用程序的开发 17

1.3 嵌入式操作系统 21

1.3.1 嵌入式操作系统概述 21

1.3.2 嵌入式操作系统的分类 22

1.3.3 嵌入式操作系统的特点 24

1.3.4 典型的嵌入式操作系统 25

1.3.5 嵌入式操作系统的选择 29

1.4 Linux操作系统 29

1.4.1 Linux操作系统概述 29

1.4.2 Linux的重要性 31

1.4.3 嵌入式Linux系统开发平台 33

1.4.4 Linux的发展前景 33

1.5 思考题 35

第2章 Linux基础知识 36

2.1 认识Linux操作系统 37

2.1.1 Linux简明历史 37

2.1.2 Linux系统的特点和组成 39

2.1.3 Linux的开发过程 41

2.2 基本操作命令 43

2.2.1 字符界面简介 43

2.2.2 常用命令简介 44

2.3 Linux文件与目录系统 48

2.3.1 Linux文件系统类型介绍 48

2.3.2 Linux目录系统 51

2.4 Shell简介 53

2.5 网络服务简介 55

2.5.1 Linux支持的网络协议 55

2.5.2 Linux的网络服务 57

2.6 思考题 58

第3章 Linux编程环境 59

3.1 Linux编程环境介绍 59

3.1.1 系统平台环境 59

3.1.2 开发工具环境 59

3.1.3 基于文本模式的开发平台 60

3.1.4 集成开发平台Eclipse+CDT 60

3.1.5 文档帮助环境 62

3.2 常用编辑器 63

3.2.1 VIM编辑器 63

3.2.2 Emacs编辑器 66

3.3 gcc编译器的使用 69

3.3.1 gcc的主要选项 70

3.3.2 GNU C扩展简介 74

3.4 GNU make管理项目 75

3.4.1 make简介 75

3.4.2 编写Makefile文件的规则 76

3.5 GDB调试 80

3.5.1 GDB命令介绍 80

3.5.2 GDB调试例程 83

3.5.3 基于GDB的图形界面调试工具 86

3.6 思考题 87

第4章 Linux外壳程序编程 88

4.1 创建和运行外壳程序 88

4.1.1 创建外壳程序 88

4.1.2 运行外壳程序 89

4.2 使用外壳变量 90

4.2.1 给变量赋值 90

4.2.2 读取变量的值 90

4.2.3 位置变量和其他系统变量 91

4.2.4 引号的作用 91

4.3 数值运算命令 92

4.4 条件表达式 94

4.4.1 if表达式 94

4.4.2 case表达式 95

4.5 循环语句 97

4.5.1 for语句 97

4.5.2 while语句 98

4.5.3 until语句 99

4.6 shift命令 99

4.7 select语句 100

4.8 repeat语句 101

4.9 函数 101

4.10 Shell应用举例 103

4.11 思考题 107

第5章 构建嵌入式Linux开发平台 108

5.1 GNU跨平台开发工具链 108

5.2 嵌入式Linux内核 115

5.3 嵌入式Linux根文件系统 116

5.4 BootLoader简介 117

5.5 思考题 118

第6章 ARM调试环境 119

6.1 ARM调试工具简介 119

6.1.1 JTAG仿真器 119

6.1.2 Multi-ICE Server 120

6.2 ADS软件调试工具 121

6.2.1 使用Metrowork Code Warrior for ARM Developer Suite 122

6.2.2 使用RealView Debugger 124

6.2.3 使用AXD Debugger 126

第7章 嵌入式BootLoader技术 132

7.1 BootLoader的基本概念 132

7.1.1 BootLoader所支持的CPU和嵌入式板 132

7.1.2 BootLoader的安装点和启动过程 133

7.1.3 BootLoader的模式 133

7.1.4 BootLoader与主机之间的通信方式 134

7.2 BootLoader典型结构框架 135

7.2.1 BootLoader总体流程 135

7.2.2 BootLoader的stage1 135

7.2.3 BootLoader的stage2 137

7.3 典型BootLoader分析和移植 145

7.3.1 U-Boot 145

7.3.2 Blob 152

7.4 其他BootLoader介绍 155

7.4.1 Redboot 155

7.4.2 ARMBoot 156

7.4.3 PPCBoot 156

7.4.4 ViVi 156

7.4.5 Yamon 156

7.5 思考题 156

第8章 Linux内核配置 157

8.1 内核概述 157

8.2 嵌入式Linux内核代码结构 158

8.3 内核开发的特点 160

8.3.1 没有libc库 160

8.3.2 GNU C 160

8.3.3 没有内存保护机制 162

8.3.4 不要轻易在内核中使用浮点数 162

8.3.5 容积小而固定的栈 162

8.3.6 同步和并发 162

8.3.7 可移植性的重要性 163

8.4 嵌入式Linux内核的配置 163

8.4.1 Makefile 163

8.4.2 配置文件 168

8.4.3 Linux内核配置选项 171

8.5 配置举例 177

8.6 思考题 179

第9章 ARM-Linux内核分析和移植 180

9.1 ARM微处理器 180

9.1.1 RISC体系结构 180

9.1.2 ARM微处理器的类型 181

9.1.3 ARM微处理器的寄存器结构 183

9.1.4 ARM微处理器的指令结构 185

9.2 ARM-Linux内存管理 186

9.2.1 内存管理单元MMU 186

9.2.2 ARM-Linux的存储管理机制 186

9.2.3 ARM-Linux存储机制的建立 186

9.2.4 ARM-Linux对进程虚拟空间的管理 191

9.3 ARM-Linux进程管理与调度 195

9.3.1 task_struct数据结构 195

9.3.2 Linux进程的创建、执行和消亡 204

9.3.3 ARM_Linux的进程调度 210

9.4 ARM-Linux中断与中断处理 217

9.4.1 Linux处理中断概述 217

9.4.2 ARM体系程序的执行流程 221

9.4.3 ARM的异常中断种类 221

9.4.4 ARM处理器对异常中断的响应及返回过程 222

9.5 ARM-Linux系统启动与初始化 224

9.5.1 内核数据结构的初始化 225

9.5.2 外设初始化 230

9.5.3 init进程和linittab文件 231

9.5.4 rc启动脚本 232

9.5.5 Shell的启动 232

9.6 Linux驱动程序简介 233

9.6.1 设备的分类 234

9.6.2 设备号 234

9.6.3 设备节点 235

9.6.4 用户空间和内核空间 235

9.7 Linux模块化机制 235

9.7.1 Linux的模块化 235

9.7.2 模块的载入 237

9.7.3 模块的卸载 238

9.8 ARM-Linux内核裁减 238

9.9 嵌入式Linux的移植 240

9.9.1 移植准备 240

9.9.2 移植步骤 240

9.9.3 配置内核选项 241

9.9.4 修改Kernel文件系统部分代码 242

9.10 思考题 244

第10章 嵌入式文件系统 245

10.1 Linux文件系统结构与特征 245

10.1.1 Linux文件系统概述 245

10.1.2 Linux文件系统布局 245

10.1.3 Linux支持的文件系统 252

10.2 嵌入式文件系统简介 253

10.2.1 NOR Flash与NAND Flash介绍 254

10.2.2 MTD介绍 254

10.2.3 cramfs文件系统简介 256

10.2.4 romfs文件系统简介 257

10.2.5 嵌入式文件系统JFFS简介 259

10.2.6 嵌入式文件系统YAFFS简介 260

10.3 构建根文件系统 261

10.4 根文件系统设置 263

10.5 BusyBox 265

10.5.1 BusyBox简介 265

10.5.2 使用BusyBox构建根文件系统 267

10.6 嵌入式文件系统的设计 269

10.6.1 文件系统格式的选型的基本策略 269

10.6.2 混合型文件系统的设计 269

10.7 思考题 270

第11章 嵌入式Web服务器设计 271

11.1 TCP/IP协议 271

11.1.1 TCP/IP协议栈 271

11.1.2 TCP/IP协议栈的数据流向 272

11.1.3 TCP协议与UDP协议 273

11.2 HTTP协议 274

11.2.1 HTTP协议的方法 274

11.2.2 HTTP协议消息头 276

11.2.3 HTTP协议使用举例 277

11.2.4 内核网络服务 278

11.3 Socket编程基础 278

11.3.1 Socket描述 278

11.3.2 Socket描述符 279

11.4 嵌入式Web服务器系统结构 280

11.4.1 协议标准 280

11.4.2 瘦Web服务器 280

11.4.3 嵌入式应用接口技术 281

11.4.4 实现形式 282

11.4.5 EMIT 282

11.4.6 RomPager 282

11.5 Web服务器构建 283

11.6 思考题 286

第12章 嵌入式Linux的GUI 287

12.1 嵌入式GUI简介 287

12.1.1 MiniGUI 288

12.1.2 Qt/Embedded 288

12.1.3 Nano-X 289

12.1.4 OpenGUI 289

12.2 MiniGUI程序设计基础 290

12.2.1 MiniGUI V1.3.3软件包 290

12.2.2 MiniGUI的特点 291

12.2.3 窗口处理过程 293

12.2.4 MiniGUI的线程机制 294

12.2.5 MiniGUI的体系结构 295

12.2.6 MiniGUI的底层引擎 296

12.2.7 MiniGUI的三种运行模式 297

12.2.8 MiniGUI移植 298

12.3 Qt/Embedded程序设计基础 299

12.3.1 Qt/Embedded的图形引擎实现基础 301

12.3.2 Qt/Embedded的事件驱动基础 303

12.3.3 Qt/Embedded底层支持分析 304

12.3.4 Qt/Embedded的移植 304

12.4 思考题 309

参考文献 310