内容简介
第1章 嵌入式Linux开发环境
1.1 嵌入式介绍
1.1.1 嵌入式系统定义
1.1.2 嵌入式操作系统
1.1.3 常见的嵌入式操作系统
1.2 虚拟机及Linux系统安装
1.2.1 安装VMware Workstation软件
1.2.2 在VMware Workstation虚拟机安装Red Hat Linux系统
1.3 Linux常用命令
1.3.1 系统询问命令
1.3.2 文件操作命令
1.3.3 目录操作命令
1.3.4 口令、权限命令
1.3.5 文件压缩命令
1.3.6 网络相关命令
1.3.7 其他命令
1.4 Linux下的编辑工具
1.4.1 编辑器分类
1.4.2 VIM的使用
1.5 主机开发环境的配置
1.5.1 超级终端配置图解
1.5.2 Minicom配置
1.5.3 TFTP服务
1.5.4 NFS服务
1.5.5 Telnet服务
1.6 Red Hat下通过安装镜像文件使用yum安装软件
1.6.1 修改yum配置文件
1.6.2 安装卸载软件的方法
1.7 Makefile编写规则
1.7.1 Makefile简介
1.7.2 Makefile的基本结构
1.7.3 Makefile中的变量
1.7.4 Makefile的隐含规则
1.8 交叉编译工具基础知识
1.8.1 交叉编译工具链的安装
1.8.2 arm-linux-gcc选项
1.8.3 arm-linux-ld选项
1.8.4 arm-linux-objcopy
1.8.5 arm-linux-objdump
1.9 小知识
第2章 BootLoader移植与开发
2.1 U-Boot的目录结构
2.1.1 BootLoader简介
2.1.2 常用BootLoader介绍
2.1.3 U-Boot 1.3.4 目录介绍
2.2 U-Boot的制作过程
2.3 U-Boot运行过程
2.3.1 程序启动过程
2.3.2 U-Boot的两个阶段
2.4 U-Boot源码分析
2.5 U-Boot应用:主要用于启动内核进行准备工作
2.5.1 U-Boot的应用
2.5.2 BootLoader与内核的交互
2.6 U-Boot的重要数据结构
2.6.1 gd全局数据变量指针
2.6.2 bd电路板数据指针
2.6.3 环境变量指针
2.6.4 设备相关设置
2.6.5 命令结构体类型定义
第3章 Linux内核裁剪
3.1 嵌入式Linux内核启动过程
3.1.1 Linux版本及特点
3.1.2 内核代码初始化分析
3.1.3 setup_arch()函数分析
3.1.4 rest_init()函数分析
3.1.5 挂接根文件系统
3.1.6 初始化设备驱动程序
3.2 Linux内核源码目录介绍
3.3 Linux内核配置系统分析
3.3.1 内核中的Kconfig文件介绍
3.3.2 Linux内核源码Makefile文件分析
3.4 针对S3C2440开发板移植内核的过程
3.5 添加驱动程序到内核源码
第4章 根文件系统移植与制作
4.1 分析Linux文件系统层次标准
4.2 根文件系统各目录作用
4.3 移植Busybox开源代码、构造根文件系统
4.3.1 Busybox的诞生
4.3.2 Busybox许可证
4.3.3 POSIX环境
4.4 制作Linux根文件系统
4.4.1 下载并配置安装Busybox
4.4.2 完善根文件系统
4.4.3 通过NFS服务测试文件系统
第5章 Linux驱动介绍
5.1 驱动原理
5.2 内核模块的主要相关命令
5.3 设备分类
5.4 设备驱动程序工作原理
5.5 应用程序、库、内核、驱动程序的软件关系
5.6 Linux驱动程序开发步骤
5.7 驱动程序的加载和卸载
5.8 关键概念
5.8.1 不可剥夺型内核(non-preemptive kernel)(分时操作系统内核)
5.8.2 可剥夺型内核(preemptive kernel)(实时操作系统内核)
5.8.3 可重入函数
5.8.4 资源
5.8.5 共享资源
5.8.6 代码的临界段
5.8.7 实时系统的特点
5.8.8 死锁
5.8.9 Linux的进程状态描述
5.8.1 0 Linux内核的三种调度方法
5.8.1 1 所有任务都采用Linux分时调度策略时
5.8.1 2所有任务都采用FIFO调度策略时
5.8.1 3所有任务都采用RR调度策略时
5.8.1 4进程调度依据(系统进程调度原理)
5.8.1 5描述进程的数据结构task_struct(任务结构体)
5.8.1 6 Linux使用内核函数goodness()对进程进行加权处理
5.9 中断与异常
5.9.1 Linux异常处理体系结构概述
5.9.2 中断注册方法
5.1 0并发和竞态
5.1 0.1 并发及其管理
5.1 0.2 信号量和互斥体
5.1 0.3 自旋锁
第6章 字符设备驱动开发
6.1 主设备号和次设备号
6.2 重要数据结构
6.2.1 file_operations结构
6.2.2 file结构
6.3 字符设备注册方式
6.3.1 早期版本的字符设备注册(2.6 版本以前)
6.3.2 杂项(miscdevice)设备注册
6.3.3 Linux 2.6 的版本设备注册
6.4 打印信息
6.5 高级字符驱动程序操作
6.5.1 ioctl
6.5.2 定位设备(llseek实现)
6.5.3 休眠
6.5.4 阻塞和非阻塞操作
6.5.5 poll和select
6.5.6 与read和write的交互
6.5.7 刷新待处理输出
6.6 异步通知
6.7 内核同步机制
6.7.1 原子操作
6.7.2 信号量(semaphore)
6.7.3 自旋锁(spinlock)
第7章 LED驱动开发与应用编程
7.1 LED驱动程序(xyd2440_leds.c)
7.2 LED驱动程序的Makefile
7.3 LED驱动测试程序(leds_app.c)
7.4 操作步骤
第8章 按键驱动开发与应用编程
8.1 按键的硬件原理
8.2 按键驱动中的数据结构
8.3 按键驱动的模块加载函数和卸载函数
8.4 按键设备驱动中断处理程序
8.5 按键设备驱动的打开函数和释放函数
8.6 按键设备驱动的读函数
8.7 按键驱动程序范例
8.8 操作步骤
第9章 LCD驱动开发实例分析
9.1 FrameBuffer的原理
9.2 FrameBuffer在Linux中的实现和机制
9.3 Linux内核中的platform机制
9.4 S3C2440 LCD驱动分析
9.5 S3C2440LCD驱动移动移植
9.5.1 代码修改
9.5.2 修改Kconfig——添加新屏支持到内核菜单
9.5.3 修改内核配置
9.6 FrameBuffer应用例子
9.6.1 应用程序源码
9.6.2 操作步骤
第10章 输入子系统和触摸屏
10.1 认识输入子系统
10.1.1 为什么需要输入子系统
10.1.2 相关API
10.1.3 一个简单的按键驱动的例子
10.2 触摸屏驱动分析
10.2.1 Linux内核定时器
10.2.2 触摸屏驱动代码分析
10.3 触摸屏的校准
10.3.1 触摸屏的校准介绍
10.3.2 tslib库的编译使用
10.3.3 将tslib校准引用到自己的项目中
第11章 网络驱动开发与应用编程
11.1 TCP/IP概述
11.1.1 TCP/IP族
11.1.2 TCP和UDP
11.2 TCP/IP网络基础编程
11.2.1 socket概述
11.2.2 地址及顺序处理
11.2.3 socket基础编程
11.3 DM9000网卡驱动程序移植
11.3.1 DM9000网卡特性
11.3.2 DM9000网卡与S3C2440硬件连接
11.3.3 DM9000与开发板接口定义
11.3.4 DM9000驱动移植到S3C2440的步骤
11.4 DM9000网卡驱动源码解析
11.4.1 两个重要的结构体的简单介绍:sk_buff和net_device
11.4.2 驱动代码具体分析
11.4.3 dm9000_netdev_ops和dm9000_ethtod_ops
11.4.4 平台设备驱动的结构体定义
11.4.5 驱动初始化函数
11.4.6 probe函数
11.4.7 remove函数:设备的删除函数
11.4.8 打开、关闭函数和操作函数
第12章 基于Qt Creator环境的Qt开发
12.1 概要说明
12.2 安装步骤
12.3 QtCreator测试
12.4 Qt Ctreator中配置ARM版本交叉编译环境
12.5 交叉编译ARM版本Qt4程序
第13章 产品封装、发布
13.1 Linux内核镜像格式
13.2 Linux内核镜像的产生过程
13.3 嵌入式Linux常用文件系统
13.4 制作常用的文件系统镜像
13.4.1 制作Cramfs文件系统和部署
13.4.2 制作JFFS2文件系统镜像和部署
13.4.3 制作YAFFS2文件系统镜像和部署
第14章 S3C6410平台Linux环境搭建
14.1 概述
14.2 编译器的安装
14.3 编译U-Boot和内核
14.3.1 编译U-Boot
14.3.2 编译内核
14.4 烧写内核到NAND Flash
14.4.1 制作用于一键烧写Linux的SD卡
14.4.2 烧写Linux到开发板的NAND Flash中
14.5 文件程序或文件下载到开发板中
14.5.1 通过超级终端下载
14.5.2 通过SD卡复制
附录A Linux开发平台硬件介绍
A.1 S3C2440系列芯片介绍
A.2 S3C2440开发板硬件设计说明
A.2.1 电源设计
A.2.2 复位电路
A.2.3 系统时钟电路
A.2.4 JTAG接口电路
A.2.5 GPIO电路、指示灯电路、按键电路
A.2.6 蜂鸣器电路
A.2.7 串口电路
A.2.8 A/D和D/A电路
A.2.9 外部Flash芯片
A.2.10 SD卡接口电路
A.2.11 SDARM芯片模块
A.2.12 NOR Flash芯片模块
A.2.13 NAND Flash芯片模块
A.2.14 USB接口
A.2.15 网络模块
A.2.16 音频输入与输出电路
A.2.17 LCD接口和CMOS摄像接口
A.2.18 系统总线接口
A.2.19 开发板完整原理图
附录B JTAG仿真调试器下载程序的过程
附录C J-Link仿真调试器的使用
附录D Linux常用命令介绍
参考文献