《嵌入式 Linux 系统开发入门》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:方元编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121335341
  • 页数:249 页
图书介绍:全书分为应用基础和实验两部分。基础部分介绍如何在Linux系统上工作与开发,系统使用侧重与开发相关的功能,软件开发侧重网络功能、多任务及设备驱动的开发。实验部分介绍从BootLoader到图形界面移植一个完整的操作系统。

第1部分 基础篇 2

第1章 Linux系统的基本使用方法 2

1.1 Linux系统的使用环境 2

1.1.1 Linux系统的目录结构 3

1.1.2 Linux系统的用户 3

1.2 命令行工作方式 4

1.2.1 终端 4

1.2.2 目录操作 5

1.2.3 文件操作 6

1.2.4 浏览文件 7

1.2.5 打包、压缩和解压 8

1.2.6 进程控制 8

1.2.7 管道与重定向 9

1.2.8 shell脚本程序 10

1.3 规则表达式 11

1.4 与开发相关的常用命令 12

1.4.1 文件比较 12

1.4.2 文本搜索 13

1.4.3 流编辑 13

1.5 文本编辑工具 14

1.5.1 vim工作模式 14

1.5.2 vim常用编辑命令 15

1.5.3 vim高级操作 17

本章练习 17

本章参考资源 18

第2章 Linux系统的主要开发工具 19

2.1 gcc工具链 19

2.1.1 gcc编译器 19

2.1.2 汇编器和链接器 20

2.2 代码分析与转换工具 20

2.2.1 函数地址解析addr2line 21

2.2.2 符号列表nm 21

2.2.3 目标文件转储objdump 22

2.2.4 代码剖析gprof 22

2.2.5 ELF符号解析readelf 24

2.2.6 代码瘦身strip 24

2.3 GNU Make 25

2.3.1 源代码的组织 25

2.3.2 第一个Makefile 27

2.3.3 GNU Make基本规则 27

2.3.4 完善Makefile 28

2.3.5 GNU Make的依赖 30

2.4 开源软件的移植 32

2.4.1 工具准备 32

2.4.2 源代码的组织结构 32

2.4.3 配置编译环境 33

2.4.4 编译和安装 34

2.5 调试工具 34

2.5.1 gdb使用示例 35

2.5.2 远程调试 36

2.6 版本控制系统 37

2.6.1 集中式版本控制系统svn 38

2.6.2 追溯历史、分支与合并 39

2.6.3 分布式版本控制系统git 40

2.6.4 git基本操作 40

2.6.5 git分支与合并 43

2.7 合理地组织程序 44

2.7.1 头文件的要求 44

2.7.2 C语言源文件 45

2.7.3 库的产生和作用 45

2.7.4 项目的目录组织结构 47

2.8 交叉编译工具链的制作 47

本章练习 52

本章参考资源 52

第3章 文件读写 53

3.1 文件系统的概念 53

3.2 文件与目录 54

3.2.1 Linux系统中的虚拟文件系统 54

3.2.2 Linux系统的文件类型 54

3.2.3 改变文件属性 56

3.3 文件描述符 57

3.3.1 标准I/O设备 57

3.3.2 有关文件操作的系统功能调用 58

3.3.3 文件描述符复制 59

3.3.4 文件描述符操作 59

3.3.5 文件共享与读写冲突 60

3.4 标准I/O库的文件操作 61

3.4.1 打开文件 61

3.4.2 文件流读写 62

3.4.3 文件流定位 63

3.4.4 格式化I/O文件操作函数 64

本章练习 64

本章参考资源 65

第4章 多任务机制 66

4.1 理解进程的概念 66

4.1.1 什么是进程 66

4.1.2 进程的状态 66

4.1.3 进程的创建和结束 67

4.1.4 创建进程的例子 68

4.2 进程间的数据交换 69

4.2.1 管道 69

4.2.2 共享内存 71

4.2.3 消息队列 73

4.3 守护进程 75

4.4 线程——轻量级进程 77

4.5 线程的竞争与同步 78

4.5.1 互斥锁 78

4.5.2 信号和信号量 79

4.5.3 进程与线程的对比 81

本章练习 81

本章参考资源 82

第5章 网络套接字编程 83

5.1 套接字API 83

5.1.1 两种类型的套接口 83

5.1.2 网络协议分层 84

5.1.3 关闭套接口 84

5.2 TCP网络程序分析 85

5.2.1 网络地址 86

5.2.2 端口 86

5.3 TCP服务器程序设计 88

5.4 简单的数据流对话 90

5.5 多任务数据流对话 95

5.6 基于数据报的对话程序 97

本章练习 100

本章参考资源 100

第6章 模块与设备驱动 101

6.1 设备驱动程序简介 101

6.1.1 内核功能划分 101

6.1.2 设备驱动程序的作用 102

6.1.3 设备和模块分类 102

6.2 构建和运行模块 103

6.2.1 第一个示例模块 103

6.2.2 模块的编译 104

6.2.3 模块的运行 105

6.2.4 内核模块与应用程序 105

6.3 模块的结构 106

6.3.1 模块的初始化和清除函数 107

6.3.2 内核符号表 108

6.3.3 模块的卸载 108

6.3.4 资源使用 109

6.4 字符设备驱动程序 112

6.4.1 timer的设计 112

6.4.2 文件操作 115

6.4.3 打开设备 117

6.4.4 I/O控制 124

6.4.5 阻塞型I/O 130

6.5 设备驱动程序的使用 133

6.5.1 驱动程序与应用程序 133

6.5.2 内核源码中的模块结构 134

6.5.3 将模块加入内核 135

6.6 调试技术 135

6.6.1 输出调试 136

6.6.2 查询调试 139

6.6.3 监视调试 142

6.6.4 故障调试 142

6.6.5 使用gdb调试工具 143

6.6.6 使用内核调试工具 144

6.7 硬件管理与中断处理 145

6.7.1 I/O寄存器和常规内存 145

6.7.2 中断 150

6.8 内核的定时 152

6.8.1 时间间隔 152

6.8.2 获取当前时间 154

6.8.3 延迟执行 156

6.8.4 定时器 157

本章练习 161

本章参考资源 161

第7章 嵌入式Linux系统开发 162

7.1 引导装载程序 162

7.2 内核设置 163

7.2.1 内核布局 164

7.2.2 内核链接和装入 164

7.2.3 参数传递和内核引导 165

7.3 设备驱动程序 166

7.3.1 帧缓冲区驱动程序 167

7.3.2 输入设备驱动程序 167

7.3.3 MTD驱动程序 167

7.3.4 MTD驱动程序设置 168

7.4 嵌入式设备的文件系统 169

7.4.1 扩展文件系统 169

7.4.2 日志闪存文件系统的第2版(JFFS2) 170

7.4.3 tmpfs 171

7.5 图形用户界面(GUI) 172

7.5.1 XFree86 4.X(带帧缓冲区支持的X11R6) 172

7.5.2 Microwindows 173

7.5.3 Microwindows上的FLTK API 173

7.5.4 Qt/Embedded 174

7.6 帧缓冲 174

第8章 GUI程序设计初步 177

8.1 基本组件介绍 177

8.1.1 一个简单的图形接口程序 177

8.1.2 按钮类组件 180

8.1.3 数据类组件 183

8.1.4 菜单栏与工具栏 184

8.2 画图区 185

8.3 界面布局方法 186

8.3.1 盒子 187

8.3.2 表格 188

8.3.3 对位 188

8.3.4 便签 188

8.3.5 对话框 188

8.4 GTK+界面设计工具 189

本章练习 191

本章参考资源 191

第2部分 实验篇 194

第9章 实验系统介绍 194

9.1 实验系统性能概括 194

9.2 软件 195

9.2.1 交叉编译工具链 195

9.2.2 工具链安装 195

9.2.3 嵌入式操作系统软件 195

9.3 实验系统搭建 196

第10章 嵌入式系统开发实验 197

10.1 实验目的 197

10.2 嵌入式系统开发过程 197

10.2.1 串口设置(使用minicom) 198

10.2.2 TFTP(简单文件传输协议) 199

10.2.3 NFS服务器架设 200

10.2.4 编译应用程序 200

10.3 实验报告要求 201

第11章 引导加载器 202

11.1 实验目的 202

11.2 BootLoader 202

11.2.1 BootLoader的作用 202

11.2.2 BootLoader程序结构框架 202

11.3 实验内容 203

11.3.1 获取U-Boot 203

11.3.2 配置BootLoader选项 203

11.3.3 制作TF卡 204

11.4 实验报告要求 204

第12章 内核配置和编译 205

12.1 实验目的 205

12.2 相关知识 205

12.2.1 内核源代码目录结构 205

12.2.2 内核配置的基本结构 205

12.2.3 编译规则Makefile 205

12.3 编译内核 206

12.3.1 Makefile的选项参数 206

12.3.2 内核配置项介绍 207

12.4 实验内容 208

12.5 实验报告要求 208

第13章 根文件系统的构建 209

13.1 实验目的 209

13.2 Linux文件系统的类型 209

13.2.1 EXT文件系统 209

13.2.2 NFS文件系统 210

13.2.3 JFFS2文件系统 210

13.2.4 YAFFS2 211

13.2.5 RAM Disk 211

13.3 文件系统的制作 212

13.3.1 BusyBox介绍 212

13.3.2 BusyBox的编译 212

13.3.3 配置文件系统 212

13.3.4 制作ramdisk文件镜像 214

13.3.5 制作init ramfs 215

13.4 实验内容 216

13.5 实验报告要求 216

第14章 图形用户接口 217

14.1 实验目的 217

14.2 原理概述 217

14.2.1 帧缓冲设备 217

14.2.2 帧缓冲与色彩 218

14.2.3 LCD控制器 218

14.2.4 帧缓冲设备操作 218

14.3 实验内容 220

14.3.1 实现基本画图功能 220

14.3.2 合理的软件结构 220

14.4 实验报告要求 220

第15章 音频接口程序设计 221

15.1 实验目的 221

15.2 接口介绍 221

15.3 应用软件设计 221

15.3.1 OSS 221

15.3.2 ALSA 222

15.4 实验内容 223

15.5 实验报告要求 223

第16章 嵌入式系统中的I/O接口驱动 224

16.1 实验目的 224

16.2 接口电路介绍 224

16.3 I/O端口地址映射 224

16.4 LED控制 225

16.5 实验内容 225

16.6 实验报告要求 226

第17章 触摸屏移植 227

17.1 实验目的 227

17.2 Linux系统的触摸屏支持 227

17.2.1 触摸屏的基本原理 227

17.2.2 内核配置 227

17.2.3 触摸屏库tslib 227

17.2.4 触摸屏库的安装和测试 228

17.3 实验内容 229

17.4 实验报告要求 229

第18章 Qt/Embedded移植 230

18.1 实验目的 230

18.2 Qt/Embedded介绍 230

18.2.1 Qt/Embedded软件包结构 230

18.2.2 编译环境设置 230

18.2.3 编译过程 231

18.2.4 Qt/Embedded的安装 232

18.2.5 Qt-4.8版本编译 233

18.3 实验要求 234

18.4 实验报告要求 235

第19章 MPlayer移植 236

19.1 实验目的 236

19.2 软件介绍 236

19.3 编译准备 236

19.4 编译 236

19.5 扩展功能 237

19.6 实验报告要求 237

第20章 GTK+移植 238

20.1 实验目的 238

20.2 GTK+的背景 238

20.3 GTK+库的依赖关系 238

20.4 编译过程 240

20.4.1 编译准备 240

20.4.2 一般方法 240

20.4.3 环境变量 241

20.4.4 一些特殊的设置 242

20.4.5 编译技巧 243

20.5 测试 244

20.6 实验要求 244

20.7 实验报告要求 244

第21章 实时操作系统RTEMS 245

21.1 实验目的 245

21.2 实时操作系统RTEMS简介 245

21.3 编译RTEMS 246

21.4 启用RTEMS终端 247

21.5 实验报告要求 247