当前位置:首页 > 工业技术
嵌入式Linux系统开发全程解析
嵌入式Linux系统开发全程解析

嵌入式Linux系统开发全程解析PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:韩超等著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2014
  • ISBN:9787121228889
  • 页数:426 页
图书介绍:本书是一本全面介绍嵌入式Linux开发的书,书中的内容涵盖了从程序生成工具、调试工具、引导加载器、Linux系统结构、Linux内核、驱动程序、用户空间编程、用户空间中间件等方面的内容。本书的内容前后照应、贴近实践、有较强的延伸型,有利于读者建立嵌入式Linux开发系统化的知识结构和技术理念。
《嵌入式Linux系统开发全程解析》目录

第1章 Linux的开发环境 1

1.1 开发环境概述 1

1.2 串口终端工具 2

1.3 TFTP 6

1.4 NFS 7

1.5 SAMBA共享 8

1.6 Linux系统的软件发布协议 9

第2章 程序生成和GCC 11

2.1 程序生成工具概述 11

2.1.1 GUN的GCC工具 11

2.1.2 ELF文件格式 14

2.2 GCC工具的使用 16

2.2.1 示例工程 16

2.2.2 编译、汇编和连接 18

2.2.3 预处理和汇编 20

2.2.4 归档工具(ar)和静态库 20

2.2.5 动态库 22

2.2.6 ELF格式文件信息读取(readelf) 22

2.2.7 符号信息工具(nm) 25

2.2.8 字符串工具(strings) 26

2.2.9 去除符号(strip) 27

2.2.10 目标文件复制(objcopy) 28

2.2.11 目标文件信息(objdump) 28

第3章 工程管理和make机制 33

3.1 make工具 33

3.2 Makefile的基本原则 34

3.2.1 Makefile的变量 34

3.2.2 Makefile的条件执行 36

3.2.3 Makefile中的函数 36

3.3 Makefile使用示例 39

3.3.1 简单的Makefile 39

3.3.2 依赖关系实例 39

3.3.3 隐含规则的编译实例 41

3.3.4 指定依赖的编译实例 44

3.4 自动生成Makefile 46

3.4.1 autoconf工具介绍 46

3.4.2 automake工具介绍 46

3.4.3 其他工具 47

3.4.4 自动生成Makefile的流程 47

第4章 调试和GDB 49

4.1 嵌入式系统的调试技术 49

4.1.1 调试技术 49

4.1.2 硬件调试 50

4.1.3 代码调试 51

4.2 Linux的基本信息 51

4.3 GDB调试和远程调试 52

4.4 GDB的安装与使用 57

4.4.1 使用gdbstub实现调试用户程序 57

4.4.2 GDB和GDB Server的编译 59

4.5 使用gdbserver调试 61

第5章 Linux系统的结构 65

5.1 Linux操作系统基本概念 65

5.1.1 Linux的进程信息 65

5.1.2 Linux的文件系统和文件信息 70

5.1.3 文件的另外三位属性 71

5.2 Linux系统的组成和构建 72

5.2.1 Linux系统的组成 72

5.2.2 嵌入式Linux的构建 73

5.3 Linux系统的启动流程 74

第6章 BootLoader及其构建 76

6.1 嵌入式Linux的BootLoader 76

6.1.1 BootLoader的开发要点 76

6.1.2 BootLoader的结构 78

6.2 U-Boot的使用 80

6.2.1 U-Boot概述 80

6.2.2 U-Boot的结构 81

6.2.3 U-Boot的生成 83

6.2.4 U-Boot的启动流程 84

6.3 U-Boot的命令 86

6.3.1 U-Boot命令概述 86

6.3.2 增加命令 88

6.4 U-Boot的移植 91

6.4.1 U-Boot的移植概述 92

6.4.2 U-Boot的扩展 92

6.4.3 板级支持 94

第7章 Linux内核及其构建 97

7.1 Linux内核概述 97

7.1.1 Linux内核结构 97

7.1.2 Linux源文件结构 98

7.2 嵌入式Linux的配置和编译 99

7.2.1 Linux内核配置结构 99

7.2.2 Linux内核的配置 99

7.2.3 Linux内核的生成 107

7.3 Linux内核的启动过程 108

7.4 特定系统的Linux的构建 114

7.4.1 Linux内核的移植 114

7.4.2 ARM处理器上运行的Linux系统 115

7.4.3 S3C6410 Linux内核的构建 117

7.4.4 S3C6410 Linux内核的移植内容 118

第8章 文件系统及其构建 123

8.1 Linux文件系统特性 123

8.2 Linux文件系统的结构 125

8.2.1 文件系统的主要接口 125

8.2.2 文件系统的实现 130

8.2.3 默认的公共实现 134

8.3 几种Linux使用的文件系统 136

8.3.1 EXT2/3(扩展文件系统2/3) 136

8.3.2 NFS(网络文件系统) 136

8.3.3 ROMFS(只读文件系统) 137

8.3.4 CRAMFS(压缩ROM文件系统) 137

8.3.5 JFFS2(日志Flash文件系统) 138

8.3.6 YAFFS(另一种Flash文件系统) 138

8.3.7 UBIFS(非排序块映像文件系统) 139

8.4 Linux文件系统的构建 140

8.4.1 根文件系统的结构 140

8.4.2 制作根文件系统映像 141

8.4.3 内核启动中根文件系统的参数 142

第9章 Linux用户空间的核心 143

9.1 嵌入式系统中的操作系统和系统关系 143

9.2 C语言库 144

9.3 Shell工具Busybox 147

9.3.1 Busybox配置和编译 148

9.3.2 Busybox的源代码结构 150

第10章 Linux用户空间的编程 152

10.1 Linux用户空间编程概述 152

10.2 文件的相关内容 154

10.2.1 文件的打开、关闭和读写等 155

10.2.2 文件的控制、映射和查询等 157

10.2.3 文件的其他操作 158

10.3 进程相关的内容 159

10.3.1 fork和exec 159

10.3.2 管道 161

10.3.3 System V IPC 162

10.3.4 POSIX IPC 165

10.4 信号相关的内容 166

10.5 pthread线程 168

10.5.1 线程的基本使用 169

10.5.2 线程的属性 171

10.5.3 线程互斥量 172

10.5.4 线程条件量 173

10.5.5 线程取消 175

10.6 dlopen机制 176

10.6.1 dlopen的结构和意义 176

10.6.2 在C语言中使用dlopen 178

10.6.3 在C++中使用dlopen 180

第11章 Linux用户空间的中间件 185

11.1 基于嵌入式Linux的系统与中间件 185

11.2 网络协议相关 186

11.2.1 Linux套接字编程的基础 186

11.2.2 TCP和UDP协议的流程 189

11.2.3 TCP编程实例 189

11.2.4 UDP编程实例 193

11.2.5 深入网络编程 196

11.2.6 用作IPC的UNIX Socket 198

11.3 GUI应用开发 201

11.3.1 Qt系统 203

11.3.2 MiniGUI应用程序 209

11.3.3 MicroWindows(Nano-XWindow) 216

11.4 数据库 217

11.4.1 关于嵌入式数据库 217

11.4.2 SQLite 218

第12章 Linux驱动基础 228

12.1 Linux驱动概述 228

12.1.1 驱动的理念和结构 228

12.1.2 驱动程序对用户空间的接口 230

12.2 设备文件和相关文件系统 230

12.2.1 设备文件 230

12.2.2 sys文件系统 231

12.2.3 proc文件系统 233

第13章 Linux的内核编程 237

13.1 Linux内核编程概述 237

13.2 内核模块的编写 237

13.2.1 Linux内核中的模块 237

13.2.2 内核模块的编译结构 239

13.3 内核编程接口 241

13.3.1 Linux编程风格 241

13.3.2 Linux编程主要接口 242

第14章 Linux的驱动核心架构 248

14.1 用户空间的接口 248

14.1.1 用户空间的驱动调用接口 248

14.1.2 系统调用 248

14.1.3 驱动的主要调用函数 249

14.2 字符设备和块设备的框架 250

14.2.1 文件操作file_operations 250

14.2.2 字符设备的基本框架 251

14.2.3 块设备的框架 252

14.2.4 字符设备和块设备的默认file_operations实现 254

14.3 网络协议和网络设备的框架 258

14.3.1 网络系统的核心 259

14.3.2 网络协议的实现 261

14.3.3 网络设备的框架 263

14.4 proc文件系统的框架 264

14.4.1 proc文件系统的编程接口 264

14.4.2 proc文件系统的实现 266

14.5 sys文件系统的框架 266

14.5.1 sys文件系统的编程接口 266

14.5.2 sys文件系统的实现 267

第15章 Linux驱动的要点 269

15.1 驱动程序的核心实现 269

15.2 设备、驱动和资源 273

15.3 中断的处理 276

15.4 中断的下半部 277

15.4.1 软中断 277

15.4.2 软中断之tasklet 278

15.4.3 软中断之定时器 279

15.5 竞态处理 280

15.5.1 自旋锁 280

15.5.2 信号量 280

15.6 阻塞处理 281

15.7 异步操作 282

第16章 几个典型的简单驱动 283

16.1 设备驱动概述 283

16.2 内存设备驱动 284

16.2.1 内存设备驱动的公共内容 284

16.2.2 空设备 286

16.2.3 零设备 287

16.2.4 满设备 288

16.3 内存块设备驱动 288

16.4 回环块设备驱动 291

16.5 回环网络设备驱动 294

第17章 几个典型的驱动框架和相应的驱动 296

17.1 Misc驱动框架 296

17.2 帧缓冲驱动框架和具体驱动 297

17.2.1 帧缓冲驱动框架 297

17.2.2 虚拟帧缓冲驱动 300

17.2.3 针对硬件实现的帧缓冲驱动 302

17.3 输入-事件驱动框架 305

17.3.1 输入-事件驱动框架概述 305

17.3.2 针对硬件的事件驱动 307

17.4 GPIO驱动框架和具体驱动 310

17.4.1 GPIO驱动框架 310

17.4.2 GPIO具体硬件的驱动 312

17.5 Power Supply驱动框架和具体驱动 312

17.5.1 Power Supply驱动框架 312

17.5.2 Power Supply驱动 313

17.6 TTY驱动框架和驱动 314

17.6.1 TTY驱动框架 314

17.6.2 伪TTY驱动 316

17.6.3 串口TTY和虚拟TTY 316

第18章 MTD系统和驱动 318

18.1 MTD概述 318

18.2 MTD的核心 319

18.2.1 MTD的接口部分 320

18.2.2 MTD的核心实现部分 322

18.3 MTD的设备层 322

18.3.1 MTD字符设备 322

18.3.2 MTD块设备 323

18.4 CFI硬件实现层 324

18.4.1 公用部分 324

18.4.2 ROM的MTD实现 325

18.4.3 RAM的MTD实现 325

18.4.4 Nor Flash的MTD实现 326

18.5 Nand Flash的硬件实现层 326

18.5.1 公用部分 326

18.5.2 GPIO的Nand Flash实现 327

18.5.3 处理器芯片上的Nand Flash实现 330

第19章 USB系统和驱动 331

19.1 USB概述 331

19.1.1 USB规范 331

19.1.2 USB的软件系统 333

19.2 Linux的USB主机端支持 334

19.2.1 USB主机端的软件结构 334

19.2.2 USB主机端的核心部分 335

19.2.3 USB驱动的实现 337

19.2.2.4 HCI的实现 339

19.3 Linux的USB设备端支持 340

19.3.1 USB设备端的软件结构 340

19.3.2 Gadget的核心部分 340

19.3.3 Gadget驱动 342

19.3.4 UDC驱动的实现 345

第20章 SPI总线和驱动 348

20.1 SPI概述 348

20.2 SPI总线驱动的框架 349

20.3 简单字符设备spidev 353

20.4 SPI主控制器的实现 355

20.4.1 GPIO实现的SPI主控制器 355

20.4.2 S3C64xx的SPI主控制器 356

20.5 SPI从设备的驱动 358

第21章 I2C总线和驱动 361

21.1 I2C概述 361

21.1.1 基本概念 361

21.1.2 SMBus 362

21.2 I2C总线驱动的框架 362

21.2.1 I2C核心框架 362

21.2.2 I2C总线接口 367

21.2.3 I2C设备和驱动 368

21.3 具体的I2C主控制器 370

21.4 I2C从设备的驱动 372

第22章 PCI总线和驱动 375

22.1 PCI概述 375

22.1.1 PCI的基本结构 375

22.1.2 PCI的总线信号 377

22.1.3 PCI的总线操作 378

22.1.4 PCI的总线配置 379

22.1.5 PCI的发展和衍生标准 381

22.2 PCI总线的驱动框架 381

22.3 PCI设备的驱动 384

22.3.1 PCI的桩实现 384

22.3.2 网卡的PCI实现 385

第23章 音频系统和驱动 389

23.1 音频系统概述 389

23.2 OSS架构 389

23.2.1 OSS系统的结构 390

23.2.2 OSS系统的核心 391

23.2.3 OSS系统的实现 392

23.3 ALSA架构 393

23.3.1 ALSA系统的结构 393

23.3.2 ALSA系统的核心 395

23.3.3 ALSA系统芯片层 395

23.3.4 ALSA的用户空间 400

第24章 视频系统和驱动 403

24.1 视频系统概述 403

24.2 Video for Linux系统 403

24.2.1 基本结构 404

24.2.2 Video for Linux的核心结构 405

24.2.3 Video for Linux的其他方面 410

24.2.4 Video for Linux驱动的接口 413

24.2.5 Video for Linux驱动的实现层 417

相关图书
作者其它书籍
返回顶部