译者序
前言
第一部分 入门指导
第1章 嵌入式和实时空间
1.1 什么是嵌入式
1.2 什么是实时
1.3 为什么Linux适用
1.3.1 开源
1.3.2 移植和定制
1.4 哪里用嵌入式Linux
1.5 开源协议
1.6 资源
第2章 安装Linux
2.1 发行版
2.1.1 Debian GNU
2.1.2 Fedora
2.1.3 Red Hat企业版Linux
2.1.4 SUSE
2.1.5 Ubuntu
2.2 硬件需求
2.3 安装方案
2.3.1 单机版
2.3.2 双启动
2.3.3 虚拟化
2.4 DVD 还是激活CD
2.5 安装过程
2.5.1 磁盘分区
2.5.2 包的选择
2.6 资源
第3章 Linux入门
3.1 运行Linux——KDE
3.1.1 文件管理器
3.1.2 shell 窗口
3.2 Linux属性
3.3 保护模式架构
3.3.1 实模式
3.3.2 保护模式
3.3.3 平面与分段的存储器模型
3.3.4 分页
3.4 Linux进程模型
3.4.1 fork()函数
3.4.2 execve()函数
3.5 Linux文件系统
3.5.1 文件权限
3.5.2 “根”用户
3.5.3 /proc文件系统
3.5.4 文件系统等级标准
3.5.5 挂载文件系统
3.6 系统配置
3.7 shell
3.8 获得帮助
3.9 资源
第4章 主机开发环境
4.1 交叉开发工具——GNU工具链
4.1.1 GCC
4.1.2 make
4.1.3 GDB
4.2 安装软件
4.2.1 DVD上有什么
4.2.2 安装交叉工具链
4.2.3 安装根文件系统
4.3 终端仿真器minicom
4.4 网络
4.4.1 网络地址
4.4.2 无线怎么样
4.4.3 网络文件系统
4.4.4 普通文件传输协议
4.5 资源
第5章 硬件
5.1 嵌入式硬件
5.2 ARM单板计算机
5.3 其他的板怎么样
5.3.1 BeagleBoard
5.3.2 Gumstix
5.3.3 Raspberry Pi
5.4 设置Mini2440
5.5 Flash存储器和文件系统
5.5.1 Flash存储器——NAND和NOR
5.5.2 Flash中的根文件系统
5.6 板的准备工作
5.6.1 例程
5.6.2 factory_images
5.6.3 脚本文件
5.6.4 过程
5.6.5 最后几步
5.6.6 哪里会出错
5.7 boot loader
5.8 资源
第6章 Eclipse 集成开发环境
6.1 概述
6.1.1 插件
6.1.2 工作台
6.2 安装
6.3 使用Eclipse
6.4 C开发环境——CDT
6.4.1 创建一个新工程
6.4.2 给工程添加源代码
6.4.3 编程助手
6.4.4 代码模板
6.4.5 自动补齐
6.5 程序
6.6 生成工程
6.7 使用CDT调试
6.7.1 调试视图
6.7.2 变量视图
6.7.3 断点视图
6.7.4 存储器视图
6.8 完成调试
6.9 总结
6.10 资源
第二部分 交叉开发环境中的应用编程
第7章 从用户空间访问硬件
7.1 回顾
7.2 ARM I
7.3 我们的第一个程序——从Linux访问I/O/
7.3.1 创建一个工程
7.3.2 目标执行环境
7.4 led 程序
7.5 一个数据采集的例子
7.6 资源
第8章 调试嵌入式软件
8.1 使用Eclipse进行远程调试
8.2 thermostat
8.3 主机工作站作为调试环境
8.4 调试器服务框架(DSF)
8.4.1 安装SSH
8.4.2 为根添加一个口令
8.4.3 配置RSE
8.4.4 使用RSE调试
8.5 资源
第9章 Posix 线程
9.1 线程
9.2 同步——互斥量
9.2.1 互斥量属性
9.2.2 解决资源共享问题而引入的问题——优先级倒置
9.3 通信——条件变量
9.4 线程终止和取消
9.5 Pthread实现
9.6 更新thermostat
9.6.1 Linux设备驱动
9.6.2 底层I
9.6.3 thermostat.c中需要的改变
9.7 调试多线程程序
9.8 资源
第10章 嵌入式网络
10.1 Sockets
10.1.1 服务器进程
10.1.2 客户进程
10.1.3 socket 属性
10.2 一个简单的例子
10.2.1 服务器
10.2.2 客户
10.3 远程thermostat
10.4 嵌入式网络服务器
10.4.1 HTTP的背景
10.4.2 使用了网络的thermostat
10.4.3 动态网络内容
10.4.4 表单和POST方法
10.4.5 生成和尝试
10.5 一个“真正的”网络服务——boa
10.6 嵌入式E-mail
10.7 其他应用级协议
10.8 资源
第11章 配置和生成内核
11.1 开始
11.1.1 内核版本编号
11.1.2 内核源树
11.2 内核makefile
11.3 修补内核
11.4 配置内核——make config、menuconfig、xconfig
11.4.1 xconfig 选项
11.4.2 .config 文件
11.5 表象背后——真正发生了什么
11.6 生成内核
11.7 引导新内核
11.8 资源
第12章 内核模块和设备驱动
12.1 内核模块
12.1.1 一个模块的例子
12.1.2 破坏内核
12.1.3 内核模块和GPL
12.1.4 生成内核模块
12.1.5 模块的作用
12.2 什么是设备驱动
12.3 Linux设备驱动
12.3.1 /dev目录
12.3.2 底层用户空间I/O API
12.3.3 内部驱动结构
12.3.4 驱动数据结构
12.3.5 init()和exit()
12.3.6 open()和release()
12.3.7 read()和write()
12.3.8 生成和运行驱动
12.4 调试内核代码
12.4.1 printk
12.4.2 /proc 文件
12.5 处理中断
12.5.1 注册中断handler
12.5.2 探测中断
12.5.3 延迟处理——“bottom half”
12.6 将你的驱动生成至内核
12.7 资源
第三部分 组件和工具
第13章 BusyBox和Linux初始化
13.1 BusyBox简介
13.2 配置和安装BusyBox
13.2.1 BusyBox设置
13.2.2 小程序
13.2.3 生成和安装
13.3 使用BusyBox
13.4 thermostat 显示示例
13.4.1 ANSI终端Escape 序列
13.4.2 thermostat 显示
13.4.3 ncurses库
13.5 用户空间初始化
13.5.1 第一步boot loader
13.5.2 u-boot
13.5.3 Linux内核
13.5.4 init进程
13.6 资源
第14章 u-boot boot loader和准备发布
14.1 u-boot
14.1.1 背景
14.1.2 安装和配置u-boot
14.1.3 测试一个新的u-boot
14.1.4 通过JTAG重新编程NOR
14.2 创建一个flash文件系统
14.2.1 关于flash分区的更多考虑
14.2.2 扁平设备树
14.3 资源
第15章 源代码控制——git
15.1 背景
15.2 git介绍
15.2.1 文件状态和生命周期
15.2.2 分支和合并
15.3 配置git
15.4 图形化git
15.5 资源
第16章 build工具
16.1 Buildroot
16.2 开源嵌入式
16.2.1 开始
16.2.2 个人观点
16.3 安卓
16.3.1 应用开发
16.3.2 平台开发
16.4 总结
16.5 资源
附录A u-boot命令
附录B 为什么软件不应该有版权
展开