译者序
前言
第一部分 入 门 指 导
第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
· · · · · · (
收起)