《嵌入式Linux系统开发及应用教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:金伟正编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302476085
  • 页数:308 页
图书介绍:在介绍嵌入式操作系统一般原理的基础上,详细论述了嵌入式系统开发过程中的主要技术问题,注重原理讲解和实验相结合,培养学生的理论和实际动手能力。本书内容丰富、通俗易懂、图文并茂,注重理解与实例,可操作性强,大部分章节配有实例和源程序。本书可作为计算机学科、电子信息及电气学科等相关专业本科生、研究生的嵌入式课程的教材,也可供对嵌入式系统感兴趣的技术人员参考使用。

第1章 绪论 1

1.1 嵌入式系统概述 1

1.1.1 嵌入式系统的历史 1

1.1.2 嵌入式系统的特点 2

1.1.3 嵌入式处理器 2

1.1.4 嵌入式系统的发展趋势 3

1.2 嵌入式系统开发 4

1.2.1 需求分析及概要设计 4

1.2.2 嵌入式系统中的硬件及软件 6

1.2.3 嵌入式系统开发的一般过程 7

1.3 嵌入式操作系统 16

1.3.1 嵌入式操作系统的分类 16

1.3.2 嵌入式操作系统的特点 17

1.3.3 典型的嵌入式操作系统 18

1.3.4 嵌入式操作系统的选择 21

1.4 本章小结 21

1.5 思考题 22

第2章 Linux基础知识 23

2.1 认识Linux操作系统 23

2.1.1 Linux简明历史 23

2.1.2 Linux系统的特点和组成 25

2.1.3 Linux的开发过程 26

2.2 基本操作命令 28

2.2.1 字符界面简介 28

2.2.2 常用命令简介 28

2.3 Linux文件与目录系统 33

2.3.1 Linux文件系统类型介绍 33

2.3.2 Linux目录系统 36

2.4 shell简介 37

2.5 网络服务简介 38

2.5.1 Linux支持的网络协议 38

2.5.2 Linux的网络服务 39

2.6 本章小结 41

2.7 思考题 41

第3章 Linux编程环境 42

3.1 Linux编程环境介绍 42

3.1.1 开发工具环境 42

3.1.2 基于文本模式的开发平台 43

3.1.3 集成开发平台Eclipse+CDT 43

3.1.4 文档帮助环境 44

3.2 常用编辑器 45

3.2.1 VIM编辑器 46

3.2.2 Emacs编辑器 48

3.3 gcc编译器的使用 51

3.3.1 gcc的主要选项 52

3.3.2 GNUC扩展简介 55

3.4 GNU make管理项目 56

3.4.1 make简介 56

3.4.2 编写Makefile文件的规则 57

3.5 GDB调试 61

3.5.1 GDB命令介绍 61

3.5.2 GDB调试例程 65

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

3.6 本章小结 69

3.7 思考题 69

第4章 Linux外壳程序编程 70

4.1 创建和运行外壳程序 70

4.1.1 创建外壳程序 70

4.1.2 运行外壳程序 71

4.2 使用外壳变量 72

4.2.1 给变量赋值 72

4.2.2 读取变量的值 72

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

4.2.4 引号的作用 73

4.3 数值运算命令 74

4.4 条件表达式 77

4.4.1 if表达式 77

4.4.2 case表达式 78

4.5 循环语句 79

4.5.1 for语句 79

4.5.2 while语句 80

4.5.3 until语句 81

4.5.4 repeat语句 82

4.6 shift命令 82

4.7 select语句 83

4.8 函数 83

4.9 shell应用举例 85

4.10 本章小结 89

4.11 思考题 89

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

5.1 GNU跨平台开发工具链 90

5.1.1 基础知识 90

5.1.2 GNU跨平台开发工具链的建立过程 90

5.2 嵌入式Linux内核 97

5.3 嵌入式Linux根文件系统 98

5.4 Bootloader简介 99

5.5 本章小结 100

5.6 思考题 100

第6章 ARM调试环境 101

6.1 ARM调试工具简介 101

6.1.1 JTAG仿真器 101

6.1.2 Multi-ICE Server 102

6.2 ADS软件调试工具 104

6.2.1 使用Metrowork CodeWarrior for ARM Developer Suite 104

6.2.2 使用RealView Debugger 107

6.2.3 使用AXD Debugger 109

6.3 本章小结 116

6.4 思考题 116

第7章 嵌入式Bootloader技术 117

7.1 Bootloader的基本概念 117

7.1.1 Bootloader的安装点和启动过程 117

7.1.2 Bootloader的模式 118

7.1.3 Bootloader与主机之间的通信方式 118

7.2 Bootloader典型结构框架 119

7.2.1 Bootloader总体流程 119

7.2.2 Bootloader的stage1 120

7.2.3 Bootloader的stage2 122

7.3 典型Bootloader分析和移植 129

7.3.1 Blob 129

7.3.2 U-Boot 133

7.4 其他Bootloader简介 139

7.4.1 Redboot 139

7.4.2 ARMBoot 139

7.4.3 PPCBoot 139

7.5 本章小结 140

7.6 思考题 140

第8章 Linux内核配置 141

8.1 内核概述 141

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

8.3 内核开发的特点 144

8.3.1 没有libc库 144

8.3.2 GNU C 144

8.3.3 没有内存保护机制 145

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

8.3.5 容积小而固定的栈 146

8.3.6 同步和并发 146

8.3.7 可移植性的重要性 146

8.4 嵌入式Linux内核的配置 146

8.4.1 Makefile 147

8.4.2 配置文件 151

8.4.3 Linux内核配置选项 154

8.5 配置举例 159

8.6 本章小结 161

8.7 思考题 162

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

9.1 ARM微处理器 163

9.1.1 RISC体系结构 163

9.1.2 ARM微处理器的类型 164

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

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

9.2 ARM-Linux内存管理 168

9.2.1 内存管理单元(MMU) 168

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

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

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

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

9.3.1 task_struct数据结构 176

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

9.3.3 ARM_Linux的进程调度 189

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

9.4.1 Linux处理中断概述 195

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

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

9.5 Linux驱动程序简介 202

9.5.1 设备的分类 203

9.5.2 设备号 203

9.5.3 设备节点 204

9.5.4 用户空间和内核空间 204

9.6 Linux模块化机制 204

9.6.1 Linux的模块化 204

9.6.2 模块的载入 206

9.6.3 模块的卸载 207

9.7 ARM-Linux系统启动与初始化 207

9.7.1 内核数据结构的初始化 207

9.7.2 外设初始化 212

9.7.3 init进程和linittab文件 213

9.7.4 rc启动脚本 214

9.7.5 shell的启动 214

9.8 ARM-Linux内核裁减 215

9.9 ARM-Linux移植 217

9.9.1 移植准备 218

9.9.2 移植步骤 218

9.9.3 配置内核选项 218

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

9.10 本章小结 221

9.11 思考题 222

第10章 嵌入式文件系统 223

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

10.1.1 Linux文件系统概述 223

10.1.2 Linux文件系统布局 223

10.1.3 Linux支持的文件系统 229

10.2 嵌入式文件系统简介 231

10.2.1 NOR Flash与NAND Flash介绍 231

10.2.2 MTD介绍 232

10.2.3 cramfs文件系统简介 234

10.2.4 romfs文件系统简介 235

10.2.5 JFFS文件系统简介 237

10.2.6 YAFFS文件系统简介 238

10.3 构建根文件系统 239

10.4 根文件系统设置 241

10.5 BusyBox 243

10.5.1 BusyBox简介 243

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

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

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

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

10.7 本章小结 248

10.8 思考题 249

第11章 嵌入式Linux多线程编程 250

11.1 线程基本概念 250

11.1.1 Linux线程简介 250

11.1.2 Linux线程编程基础 251

11.2 多线程同步 254

11.2.1 互斥锁 254

11.2.2 条件变量 257

11.2.3 信号量 258

11.3 生产者-消费者问题 262

11.3.1 生产者-消费者问题简介 262

11.3.2 生产者-消费者问题实例 262

11.4 本章小结 266

11.5 思考题 266

第12章 嵌入式Web服务器设计 267

12.1 TCP/IP协议 267

12.1.1 TCP/IP协议栈 267

12.1.2 TCP/IP协议栈的数据流向 268

12.1.3 TCP协议与UDP协议 268

12.2 HTTP协议 270

12.2.1 HTTP协议的方法 270

12.2.2 HTTP协议消息头 272

12.2.3 HTTP协议使用举例 273

12.2.4 内核网络服务 274

12.3 socket编程基础 274

12.3.1 socket描述 274

12.3.2 socket描述符 275

12.4 嵌入式Web服务器介绍 276

12.4.1 协议标准 276

12.4.2 瘦Web服务器 276

12.4.3 嵌入式应用接口技术 277

12.4.4 实现形式 278

12.4.5 RomPager 278

12.4.6 EMIT 279

12.5 Web服务器构建 279

12.6 本章小结 282

12.7 思考题 283

第13章 嵌入式Linux的GUI 284

13.1 嵌入式GUI简介 284

13.1.1 MiniGUI 285

13.1.2 Qt/Embedded 285

13.1.3 Nano-X 286

13.1.4 OpenGUI 286

13.2 MiniGUI程序设计基础 287

13.2.1 MiniGUI V1.3.3软件包 287

13.2.2 MiniGUI的特点 288

13.2.3 窗口处理过程 290

13.2.4 MiniGUI的线程机制 291

13.2.5 MiniGUI的体系结构 292

13.2.6 MiniGUI的底层引擎 293

13.2.7 MiniGUI的三种运行模式 293

13.2.8 MiniGUI移植 294

13.3 Qt/Embedded程序设计基础 296

13.3.1 Qt/Embedded图形引擎实现基础 298

13.3.2 Qt/Embedded事件驱动基础 299

13.3.3 Qt/Embedded底层支持分析 300

13.3.4 Qt/Embedded移植 300

13.4 本章小结 305

13.5 思考题 306

参考文献 307