书籍详情
Linux嵌入式实时应用开发实战(原书第3版)
作者:(美)Doug Abbott
出版社:机械工业出版社
出版时间:2015-02-01
ISBN:9787111488576
定价:¥59.00
购买这本书可以去
内容简介
这本新版的《Linux嵌入式实时应用开发实战》(原书第3版)从实战的角度介绍了正在快速发展的嵌入式Linux技术,内容包含了基础和最新开发技术。本书是新手在嵌入式环境中使用Linux的理想入门读物,不但包含了重要的概念和具体的应用,还收录了作者在此领域的切身经历和实践方法。本书特点以基于ARM的单板机(SBC)为目标板讲解嵌入式开发开源、Linux和嵌入式技术的基础网络、图形界面和Android编程教会读者搭建简单的系统环境和工具链告诉读者如何使用模拟器进行早期应用程序测试教会读者使用一些Linux的组件和工具教会读者配置和生成Linux内核、BusyBox和U-Boot bootloader
作者简介
Doug Abbott 是一位在嵌入式领域拥有30多年经验的顾问,他在面向工业和科研领域的数据采集产品方面拥有非常丰富的软硬件开发经验。Doug在加州大学伯克利分校讲授PC技术和实时编程课程,是一位颇受学生爱戴的导师,由他发起和组织的研讨在学校非常受欢迎。有数百位资深工程师接受过他的实时编程技术和多任务操作系统培训。
目录
译者序
前言
第一部分 入 门 指 导
第1章 嵌入式和实时空间 / 2
1.1 什么是嵌入式 / 2
1.2 什么是实时 / 3
1.3 为什么Linux适用 / 3
1.3.1 开源 / 4
1.3.2 移植和定制 / 5
1.4 哪里用嵌入式Linux / 5
1.5 开源协议 / 6
1.6 资源 / 8
第2章 安装Linux / 9
2.1 发行版 / 9
2.1.1 Debian GNU/Linux / 10
2.1.2 Fedora / 10
2.1.3 Red Hat企业版Linux / 11
2.1.4 SUSE / 11
2.1.5 Ubuntu / 11
2.2 硬件需求 / 12
2.3 安装方案 / 12
2.3.1 单机版 / 12
2.3.2 双启动 / 12
2.3.3 虚拟化 / 15
2.4 DVD 还是激活CD / 15
2.5 安装过程 / 15
2.5.1 磁盘分区 / 16
2.5.2 包的选择 / 17
2.6 资源 / 18
第3章 Linux入门 / 19
3.1 运行Linux——KDE / 19
3.1.1 文件管理器 / 20
3.1.2 shell 窗口 / 20
3.2 Linux属性 / 21
3.3 保护模式架构 / 22
3.3.1 实模式 / 22
3.3.2 保护模式 / 23
3.3.3 平面与分段的存储器模型 / 24
3.3.4 分页 / 24
3.4 Linux进程模型 / 25
3.4.1 fork()函数 / 25
3.4.2 execve()函数 / 27
3.5 Linux文件系统 / 27
3.5.1 文件权限 / 28
3.5.2 “根”用户 / 29
3.5.3 /proc文件系统 / 29
3.5.4 文件系统等级标准 / 30
3.5.5 挂载文件系统 / 32
3.6 系统配置 / 33
3.7 shell / 33
3.8 获得帮助 / 36
3.9 资源 / 37
第4章 主机开发环境 / 38
4.1 交叉开发工具——GNU工具链 / 38
4.1.1 GCC / 38
4.1.2 make / 39
4.1.3 GDB / 40
4.2 安装软件 / 40
4.2.1 DVD上有什么 / 40
4.2.2 安装交叉工具链 / 41
4.2.3 安装根文件系统 / 42
4.3 终端仿真器minicom / 42
4.4 网络 / 44
4.4.1 网络地址 / 44
4.4.2 无线怎么样 / 46
4.4.3 网络文件系统 / 47
4.4.4 普通文件传输协议 / 48
4.5 资源 / 49
第5章 硬件 / 50
5.1 嵌入式硬件 / 50
5.2 ARM单板计算机 / 50
5.3 其他的板怎么样 / 51
5.3.1 BeagleBoard / 51
5.3.2 Gumstix / 52
5.3.3 Raspberry Pi / 53
5.4 设置Mini2440 / 53
5.5 Flash存储器和文件系统 / 54
5.5.1 Flash存储器——NAND
和NOR / 54
5.5.2 Flash中的根文件系统 / 55
5.6 板的准备工作 / 56
5.6.1 例程 / 56
5.6.2 factory_images / 57
5.6.3 脚本文件 / 57
5.6.4 过程 / 58
5.6.5 最后几步 / 60
5.6.6 哪里会出错 / 61
5.7 boot loader / 61
5.8 资源 / 62
第6章 Eclipse 集成开发环境/ 63
6.1 概述 / 63
6.1.1 插件 / 65
6.1.2 工作台 / 66
6.2 安装 / 67
6.3 使用Eclipse / 67
6.4 C开发环境——CDT / 68
6.4.1 创建一个新工程 / 68
6.4.2 给工程添加源代码 / 69
6.4.3 编程助手 / 70
6.4.4 代码模板 / 71
6.4.5 自动补齐 / 71
6.5 程序 / 71
6.6 生成工程 / 72
6.7 使用CDT调试 / 72
6.7.1 调试视图 / 74
6.7.2 变量视图 / 75
6.7.3 断点视图 / 75
6.7.4 存储器视图 / 75
6.8 完成调试 / 76
6.9 总结 / 76
6.10 资源 / 76
第二部分 交叉开发环境中的应用编程
第7章 从用户空间访问硬件 / 78
7.1 回顾 / 78
7.2 ARM I/O架构 / 78
7.3 我们的第一个程序——
从Linux访问I/O / 80
7.3.1 创建一个工程 / 80
7.3.2 目标执行环境 / 81
7.4 led 程序 / 82
7.5 一个数据采集的例子 / 84
7.6 资源 / 86
第8章 调试嵌入式软件 / 87
8.1 使用Eclipse进行远程调试 / 87
8.2 thermostat / 91
8.3 主机工作站作为调试环境 / 92
8.4 调试器服务框架(DSF) / 96
8.4.1 安装SSH / 96
8.4.2 为根添加一个口令 / 98
8.4.3 配置RSE / 98
8.4.4 使用RSE调试 / 100
8.5 资源 / 101
第9章 Posix 线程 / 102
9.1 线程 / 103
9.2 同步——互斥量 / 105
9.2.1 互斥量属性 / 106
9.2.2 解决资源共享问题而引入的
问题——优先级倒置 / 107
9.3 通信——条件变量 / 109
9.4 线程终止和取消 / 109
9.5 Pthread实现 / 111
9.6 更新thermostat / 113
9.6.1 Linux设备驱动 / 113
9.6.2 底层I/O API / 114
9.6.3 thermostat.c中需要的改变 / 115
9.7 调试多线程程序 / 116
9.8 资源 / 116
第10章 嵌入式网络 / 117
10.1 Sockets / 117
10.1.1 服务器进程 / 118
10.1.2 客户进程 / 118
10.1.3 socket 属性 / 119
10.2 一个简单的例子 / 119
10.2.1 服务器 / 119
10.2.2 客户 / 120
10.3 远程thermostat / 121
10.4 嵌入式网络服务器 / 123
10.4.1 HTTP的背景 / 123
10.4.2 使用了网络的thermostat / 124
10.4.3 动态网络内容 / 125
10.4.4 表单和POST方法 / 126
10.4.5 生成和尝试 / 126
10.5 一个“真正的”网络服务器
——boa / 127
10.6 嵌入式E-mail / 128
10.7 其他应用级协议 / / 131
10.8 资源 / 131
第11章 配置和生成内核 / 132
11.1 开始 / 132
11.1.1 内核版本编号 / 133
11.1.2 内核源树 / 133
11.2 内核makefile / 135
11.3 修补内核 / 135
11.4 配置内核——make config、
menuconfig、xconfig / 136
11.4.1 xconfig 选项 / 140
11.4.2 .config 文件 / 140
11.5 表象背后——真正发生了什么 / 141
11.6 生成内核 / 142
11.7 引导新内核 / 143
11.8 资源 / 144
第12章 内核模块和设备驱动 / 145
12.1 内核模块 / 145
12.1.1 一个模块的例子 / 146
12.1.2 破坏内核 / 147
12.1.3 内核模块和GPL / 148
12.1.4 生成内核模块 / 148
12.1.5 模块的作用 / 149
12.2 什么是设备驱动 / 150
12.3 Linux设备驱动 / 151
12.3.1 /dev目录 / 151
12.3.2 底层用户空间I/O API / 152
12.3.3 内部驱动结构 / 152
12.3.4 驱动数据结构 / 152
12.3.5 init()和exit() / 153
12.3.6 open()和release() / 154
12.3.7 read()和write() / 154
12.3.8 生成和运行驱动 / 155
12.4 调试内核代码 / 156
12.4.1 printk / 156
12.4.2 /proc文件 / 157
12.5 处理中断 / 158
12.5.1 注册中断handler / 159
12.5.2 探测中断 / 160
12.5.3 延迟处理——“bottom
half” / 161
12.6 将你的驱动生成至内核 / 162
12.7 资源 / 164
第三部分 组件和工具
第13章 BusyBox和Linux初始化 / 166
13.1 BusyBox简介 / 166
13.2 配置和安装BusyBox / 167
13.2.1 BusyBox设置 / 169
13.2.2 小程序 / 169
13.2.3 生成和安装 / 170
13.3 使用BusyBox / 171
13.4 thermostat 显示示例 / 171
13.4.1 ANSI终端Escape 序列 / 172
13.4.2 thermostat 显示 / 172
13.4.3 ncurses库 / 173
13.5 用户空间初始化 / 173
13.5.1 第一步boot loader / 173
13.5.2 u-boot / 173
13.5.3 Linux内核 / 174
13.5.4 init进程 / 174
13.6 资源 / 175
第14章 u-boot boot loader和准备发布 / 176
14.1 u-boot / 176
14.1.1 背景 / 176
14.1.2 安装和配置u-boot / 177
14.1.3 测试一个新的u-boot / 178
14.1.4 通过JTAG重新编程NOR / 178
14.2 创建一个flash文件系统 / 179
14.2.1 关于flash分区的更多
考虑 / 180
14.2.2 扁平设备树 / 181
14.3 资源 / 182
第15章 源代码控制——git / 183
15.1 背景 / 183
15.2 git介绍 / 184
15.2.1 文件状态和生命周期 / 186
15.2.2 分支和合并 / 187
15.3 配置git / 188
15.4 图形化git / 189
15.5 资源 / 192
第16章 build工具 / 193
16.1 Buildroot / 193
16.2 开源嵌入式 / 195
16.2.1 开始 / 196
16.2.2 个人观点 / 197
16.3 安卓 / 197
16.3.1 应用开发 / 198
16.3.2 平台开发 / 199
16.4 总结 / 199
16.5 资源 / 200
附录A u-boot命令 / 201
附录B 为什么软件不应该有版权 / 207
前言
第一部分 入 门 指 导
第1章 嵌入式和实时空间 / 2
1.1 什么是嵌入式 / 2
1.2 什么是实时 / 3
1.3 为什么Linux适用 / 3
1.3.1 开源 / 4
1.3.2 移植和定制 / 5
1.4 哪里用嵌入式Linux / 5
1.5 开源协议 / 6
1.6 资源 / 8
第2章 安装Linux / 9
2.1 发行版 / 9
2.1.1 Debian GNU/Linux / 10
2.1.2 Fedora / 10
2.1.3 Red Hat企业版Linux / 11
2.1.4 SUSE / 11
2.1.5 Ubuntu / 11
2.2 硬件需求 / 12
2.3 安装方案 / 12
2.3.1 单机版 / 12
2.3.2 双启动 / 12
2.3.3 虚拟化 / 15
2.4 DVD 还是激活CD / 15
2.5 安装过程 / 15
2.5.1 磁盘分区 / 16
2.5.2 包的选择 / 17
2.6 资源 / 18
第3章 Linux入门 / 19
3.1 运行Linux——KDE / 19
3.1.1 文件管理器 / 20
3.1.2 shell 窗口 / 20
3.2 Linux属性 / 21
3.3 保护模式架构 / 22
3.3.1 实模式 / 22
3.3.2 保护模式 / 23
3.3.3 平面与分段的存储器模型 / 24
3.3.4 分页 / 24
3.4 Linux进程模型 / 25
3.4.1 fork()函数 / 25
3.4.2 execve()函数 / 27
3.5 Linux文件系统 / 27
3.5.1 文件权限 / 28
3.5.2 “根”用户 / 29
3.5.3 /proc文件系统 / 29
3.5.4 文件系统等级标准 / 30
3.5.5 挂载文件系统 / 32
3.6 系统配置 / 33
3.7 shell / 33
3.8 获得帮助 / 36
3.9 资源 / 37
第4章 主机开发环境 / 38
4.1 交叉开发工具——GNU工具链 / 38
4.1.1 GCC / 38
4.1.2 make / 39
4.1.3 GDB / 40
4.2 安装软件 / 40
4.2.1 DVD上有什么 / 40
4.2.2 安装交叉工具链 / 41
4.2.3 安装根文件系统 / 42
4.3 终端仿真器minicom / 42
4.4 网络 / 44
4.4.1 网络地址 / 44
4.4.2 无线怎么样 / 46
4.4.3 网络文件系统 / 47
4.4.4 普通文件传输协议 / 48
4.5 资源 / 49
第5章 硬件 / 50
5.1 嵌入式硬件 / 50
5.2 ARM单板计算机 / 50
5.3 其他的板怎么样 / 51
5.3.1 BeagleBoard / 51
5.3.2 Gumstix / 52
5.3.3 Raspberry Pi / 53
5.4 设置Mini2440 / 53
5.5 Flash存储器和文件系统 / 54
5.5.1 Flash存储器——NAND
和NOR / 54
5.5.2 Flash中的根文件系统 / 55
5.6 板的准备工作 / 56
5.6.1 例程 / 56
5.6.2 factory_images / 57
5.6.3 脚本文件 / 57
5.6.4 过程 / 58
5.6.5 最后几步 / 60
5.6.6 哪里会出错 / 61
5.7 boot loader / 61
5.8 资源 / 62
第6章 Eclipse 集成开发环境/ 63
6.1 概述 / 63
6.1.1 插件 / 65
6.1.2 工作台 / 66
6.2 安装 / 67
6.3 使用Eclipse / 67
6.4 C开发环境——CDT / 68
6.4.1 创建一个新工程 / 68
6.4.2 给工程添加源代码 / 69
6.4.3 编程助手 / 70
6.4.4 代码模板 / 71
6.4.5 自动补齐 / 71
6.5 程序 / 71
6.6 生成工程 / 72
6.7 使用CDT调试 / 72
6.7.1 调试视图 / 74
6.7.2 变量视图 / 75
6.7.3 断点视图 / 75
6.7.4 存储器视图 / 75
6.8 完成调试 / 76
6.9 总结 / 76
6.10 资源 / 76
第二部分 交叉开发环境中的应用编程
第7章 从用户空间访问硬件 / 78
7.1 回顾 / 78
7.2 ARM I/O架构 / 78
7.3 我们的第一个程序——
从Linux访问I/O / 80
7.3.1 创建一个工程 / 80
7.3.2 目标执行环境 / 81
7.4 led 程序 / 82
7.5 一个数据采集的例子 / 84
7.6 资源 / 86
第8章 调试嵌入式软件 / 87
8.1 使用Eclipse进行远程调试 / 87
8.2 thermostat / 91
8.3 主机工作站作为调试环境 / 92
8.4 调试器服务框架(DSF) / 96
8.4.1 安装SSH / 96
8.4.2 为根添加一个口令 / 98
8.4.3 配置RSE / 98
8.4.4 使用RSE调试 / 100
8.5 资源 / 101
第9章 Posix 线程 / 102
9.1 线程 / 103
9.2 同步——互斥量 / 105
9.2.1 互斥量属性 / 106
9.2.2 解决资源共享问题而引入的
问题——优先级倒置 / 107
9.3 通信——条件变量 / 109
9.4 线程终止和取消 / 109
9.5 Pthread实现 / 111
9.6 更新thermostat / 113
9.6.1 Linux设备驱动 / 113
9.6.2 底层I/O API / 114
9.6.3 thermostat.c中需要的改变 / 115
9.7 调试多线程程序 / 116
9.8 资源 / 116
第10章 嵌入式网络 / 117
10.1 Sockets / 117
10.1.1 服务器进程 / 118
10.1.2 客户进程 / 118
10.1.3 socket 属性 / 119
10.2 一个简单的例子 / 119
10.2.1 服务器 / 119
10.2.2 客户 / 120
10.3 远程thermostat / 121
10.4 嵌入式网络服务器 / 123
10.4.1 HTTP的背景 / 123
10.4.2 使用了网络的thermostat / 124
10.4.3 动态网络内容 / 125
10.4.4 表单和POST方法 / 126
10.4.5 生成和尝试 / 126
10.5 一个“真正的”网络服务器
——boa / 127
10.6 嵌入式E-mail / 128
10.7 其他应用级协议 / / 131
10.8 资源 / 131
第11章 配置和生成内核 / 132
11.1 开始 / 132
11.1.1 内核版本编号 / 133
11.1.2 内核源树 / 133
11.2 内核makefile / 135
11.3 修补内核 / 135
11.4 配置内核——make config、
menuconfig、xconfig / 136
11.4.1 xconfig 选项 / 140
11.4.2 .config 文件 / 140
11.5 表象背后——真正发生了什么 / 141
11.6 生成内核 / 142
11.7 引导新内核 / 143
11.8 资源 / 144
第12章 内核模块和设备驱动 / 145
12.1 内核模块 / 145
12.1.1 一个模块的例子 / 146
12.1.2 破坏内核 / 147
12.1.3 内核模块和GPL / 148
12.1.4 生成内核模块 / 148
12.1.5 模块的作用 / 149
12.2 什么是设备驱动 / 150
12.3 Linux设备驱动 / 151
12.3.1 /dev目录 / 151
12.3.2 底层用户空间I/O API / 152
12.3.3 内部驱动结构 / 152
12.3.4 驱动数据结构 / 152
12.3.5 init()和exit() / 153
12.3.6 open()和release() / 154
12.3.7 read()和write() / 154
12.3.8 生成和运行驱动 / 155
12.4 调试内核代码 / 156
12.4.1 printk / 156
12.4.2 /proc文件 / 157
12.5 处理中断 / 158
12.5.1 注册中断handler / 159
12.5.2 探测中断 / 160
12.5.3 延迟处理——“bottom
half” / 161
12.6 将你的驱动生成至内核 / 162
12.7 资源 / 164
第三部分 组件和工具
第13章 BusyBox和Linux初始化 / 166
13.1 BusyBox简介 / 166
13.2 配置和安装BusyBox / 167
13.2.1 BusyBox设置 / 169
13.2.2 小程序 / 169
13.2.3 生成和安装 / 170
13.3 使用BusyBox / 171
13.4 thermostat 显示示例 / 171
13.4.1 ANSI终端Escape 序列 / 172
13.4.2 thermostat 显示 / 172
13.4.3 ncurses库 / 173
13.5 用户空间初始化 / 173
13.5.1 第一步boot loader / 173
13.5.2 u-boot / 173
13.5.3 Linux内核 / 174
13.5.4 init进程 / 174
13.6 资源 / 175
第14章 u-boot boot loader和准备发布 / 176
14.1 u-boot / 176
14.1.1 背景 / 176
14.1.2 安装和配置u-boot / 177
14.1.3 测试一个新的u-boot / 178
14.1.4 通过JTAG重新编程NOR / 178
14.2 创建一个flash文件系统 / 179
14.2.1 关于flash分区的更多
考虑 / 180
14.2.2 扁平设备树 / 181
14.3 资源 / 182
第15章 源代码控制——git / 183
15.1 背景 / 183
15.2 git介绍 / 184
15.2.1 文件状态和生命周期 / 186
15.2.2 分支和合并 / 187
15.3 配置git / 188
15.4 图形化git / 189
15.5 资源 / 192
第16章 build工具 / 193
16.1 Buildroot / 193
16.2 开源嵌入式 / 195
16.2.1 开始 / 196
16.2.2 个人观点 / 197
16.3 安卓 / 197
16.3.1 应用开发 / 198
16.3.2 平台开发 / 199
16.4 总结 / 199
16.5 资源 / 200
附录A u-boot命令 / 201
附录B 为什么软件不应该有版权 / 207
猜您喜欢