Linux系统移植 第2版
作者:刘刚,赵剑川等编著
出版时间: 2014年版
内容简介
“Linux典藏大系”自2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道“最受读者喜爱的原创IT技术图书奖”,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域最知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者进行了广泛的交流,取得了良好的学习效果。2014年2月“Linux典藏大系“全新升级版(第2版)正式出版,第2版图书迎合了Linux技术的最新发展,全部采用当前最流行和稳定的Linux发行版或者相关工具,是Linux爱好者学习Linux的好帮手。 《Linux系统移植(第2版)》是获得了大量读者好评的“Linux典藏大系”中的《Linux系统移植》的第2版。《Linux系统移植(第2版)》由浅入深,全面、系统地介绍了Linux系统移植的各方面知识。书中的每个章节都有相应的实例编译或移植过程,每个移植实例都具有代表性,在实际应用和开发中有很高的参考价值。另外,《Linux系统移植(第2版)》赠送17.5小时多媒体教学视频及书中涉及的实例源程序,便于读者高效、直观地学习。《Linux系统移植(第2版)》分为4篇。第1篇简单介绍了Linux内核和嵌入式Linux系统开发环境搭建;第2篇介绍了一个最基本的嵌入式系统的组成部分、Bootloader移植、内核移植和文件系统移植;第3篇介绍了LCD、触摸屏、USB、网卡、音频、SD卡、NandFlash等流行的设备驱动移植过程;第4篇从嵌入式产品角度出发,介绍了GUI、Qtopia、嵌入式数据库BerkeleyDB和SQLite、嵌入式Web服务器BOA和Thttpd、JVM虚拟机的移植及目前流行的VoIP技术和相关协议。《Linux系统移植(第2版)》适合嵌入式Linux系统入门人员、Linux系统开发和移植、系统分析师等相关人员阅读,也适合作为大中专院校相关专业的实验教材使用。
目录
第1篇 系统移植基础篇
第1章 Linux内核介绍
1.1 系统调用接口
1.1.1 Linux系统调用
1.1.2 用户编程接口
1.1.3 系统调用与服务例程的对应关系
1.1.4 系统调用过程
1.1.5 系统调用传递的参数
1.2 进程管理
1.2.1 进程
1.2.2 进程描述符
1.2.3 进程状态
1.2.4 进程调度
1.2.5 进程地址空间
1.3 内存管理
1.3.1 内存管理技术
1.3.2 内存区管理
1.3.3 内核中获取内存的几种方式
1.4 虚拟文件系统
1.4.1 虚拟文件系统作用
1.4.2 文件系统的注册
1.4.3 文件系统的安装和卸载
1.5 设备驱动程序
1.5.1 字符设备驱动程序
1.5.2 块设备驱动程序
1.5.3 网络设备驱动程序
1.5.4 内存与1/0操作
1.6 小结
第2章 嵌入式Linux开发环境搭建
2.1 虚拟机及Linux安装
2.1.1 虚拟机的安装
2.1.2 虚拟机和主机通信设置
2.1.3 虚拟机与主机共享文件
2.1.4 虚拟机与主机文件传输
2.2 交叉编译工具
2.2.1 交叉编译工具安装
2.2.2 交叉编译器测试
2.3 超级终端和Minicom
2.3.1 超级终端软件的安装
2.3.2 配置Minicom
2.3.3 配置SecureCRT
2.4 内核、文件系统加载工具
2.4.1 烧写Bootloader
2.4.2 内核和文件系统下载
2.4.3 应用程序和文件传输
2.5 在开发中使用网络文件系统(NFS)
2.5.1 虚拟机设置
2.5.2 虚拟机的IP地址设置
2.5.3 验证网络连接
2.5.4 设置共享目录
2.5.5 启动NFS服务
2.5.6 修改共享配置后
2.5.7 挂载NFS
2.5.8 双网卡挂载NFS
2.6 小结
第2篇 系统移植技术篇
第3章 Bootloader移植
3.1 Bootloader介绍
3.1.1 Bootloader与嵌入式Linux系统的关系
3.1.2 Bootloader基本概念
3.1.3 Bootloader启动过程
3.2 Bootloader之U-Boot
3.2.1 U-Boot优点
3.2.2 U-Boot的主要功能
3.2.3 U-Boot目录结构
3.2.4 U-Boot的编译
3.3 小结
第4章 Linux内核裁剪与移植
4.1 Linux内核结构
4.1.1 内核的主要组成部分
4.1.2 内核源码目录介绍
4.2 内核配置选项
4.2.1一般选项
4.2.2 内核模块加载方式支持选项
4.2.3 系统调用、类型、特性、启动相关选项
4.2.4 网络协议支持相关选项
4.2.5 设备驱动支持相关选项
4.2.6 文件系统类型支持相关选项
4.2.7 安全相关选项
4.2.8 其他选项
4.3 内核裁剪及编译
4.3.1 安装内核源代码
4.3.2 检查编译环境设置
4.3.3 配置内核
4.3.4 编译内核
4.4 内核升级
4.4.1 准备升级内核文件
4.4.2 移植过程
4.5 小结
第5章 嵌入式文件系统制作
5.1 文件系统选择
5.1.1 Flash硬件方案比较
5.1.2 嵌入式文件系统的分层结构
5.2 基于Flash的文件系统
5.2.1 JFFS文件系统(Journalling Flash File System)
5.2.2 YAFFS文件系统(Yet Another Flash File System)
5.2.3 Cramfs文件系统(Compressed ROM File System)
5.2.4 Romfs文件系统(ROM File System)
5.3 基于RAM的文件系统
5.4 文件系统的制作
5.4.1 制作Ramdisk文件系统
5.4.2 制作YAFFS2文件系统
5.4.3 制作JFFS2文件系统
5.4.4 其他文件系统制作
5.5 小结
第3篇 系统移植与驱动篇
第6章 LCD驱动移植
6.1 认识LCD相关硬件原理
6.1.1 LCD概述
6.1.2 LCD控制器
6.1.3 LCD控制器方块图
6.1.4 LCD控制器操作
6.1.5 LCD控制寄存器
6.2 LCD参数设置
6.3 内核LCD驱动机制
6.3.1 FrameBuffer概述
6.3.2 FrameBuffer 设备驱动的结构
6.4 Linux 2.6.32的LCD驱动源码分析
6.4.1 LCD驱动开发的主要工作
6.4.2 s3c2410fb_init()函数分析
6.4.3 s3c2410fb_probe()函数分析
6.4.4 s3c2410fb_remove()函数分析
6.5 移植内核中的LCD驱动
6.5.1 LCD硬件电路图
6.5.2 修改LCD源码
6.5.3 配置内核
6.6 小结
第7章 触摸屏驱动移植
7.1 触摸屏概述
7.1.1 触摸屏工作原理
7.1.2 触摸屏的主要类型
7.2 S3C2440 ADC接口使用
7.2.1 S3C2440触摸屏接口概述
7.2.2 S3C2440触摸屏接口操作
7.3 2.6内核触摸屏驱动源码分析(s3c2410_ts.c源码分析)
7.4 Linux内核输入子系统介绍
7.4.1 Input子系统概述
7.4.2 输入设备结构体
7.4.3 输入链路的创建过程
7.4.4 使用Input子系统
7.4.5 编写输入设备驱动需要完成的工作
7.5 触摸屏驱动移植和内核编译
7.5.1 修改初始化源码
7.5.2 修改硬件驱动源码s3c2440_ts.c
7.5.3 修改Kconfig和Makefile
7.5.4 配置编译内核
7.5.5 触摸屏测试程序设计
7.6 小结
第8章 USB设备驱动移植
8.1 USB协议
8.1.1 USB协议的系统主要组成部分
8.1.2 总线物理拓扑结构
8.1.3 USB设备、配置、接口、端点
8.1.4 USB设备状态
8.1.5 USB枚举过程
8.1.6 USB请求块(URB)
8.2 USB主机驱动
8.2.1 USB主机驱动结构和功能
8.2.2 主机控制器驱动(usb_hcd)
8.2.3 OHCI主机控制器驱动
8.2.4 S3C24XX OHCI主机控制器驱动实例
8.3 USB设备驱动
8.3.1 USB骨架程序分析
8.3.2 USB驱动移植的时钟设置
8.4 USB鼠标键盘驱动
8.4.1 USB鼠标驱动代码分析
8.4.2 USB键盘驱动代码分析
8.4.3 内核中添加USB鼠标键盘驱动
8.5 U盘驱动
8.5.1 内核配置
8.5.2 移植和测试
8.6 小结
第9章 网卡驱动程序移植
9.1 以太网概述
9.1.1 以太网连接
9.1.2 以太网技术概述
9.1.3 以太网的帧结构
9.2 网络设备驱动程序体系结构
9.2.1 嵌入式Linux网络驱动程序介绍
9.2.2 Linux网络设备驱动的体系结构
9.2.3 网络设备驱动程序编写方法
9.2.4 网络设备驱动程序应用实例
9.3 net_device 数据结构
9.3.1 全局信息
9.3.2 硬件信息
9.3.3 接口信息
9.3.4 设备方法
9.3.5 公用成员
9.4 DM9000网卡概述
9.4.1 DM9000网卡总体介绍
9.4.2 DM9000网卡的特点
9.4.3 内部寄存器
9.4.4 功能描述
9.5 DM9000网卡驱动程序移植
9.5.1 DM9000网卡连接
9.5.2 驱动分析--硬件的数据结构
9.5.3 驱动分析--数据读写函数
9.5.4 驱动分析--重置网卡
9.5.5 驱动分析--初始化网卡
9.5.6 驱动分析--打开和关闭网卡
9.5.7 驱动分析--数据包的发送与接收
9.5.8 DM9000网卡驱动程序移植
9.6 小结
第10章 音频设备驱动程序移植
10.1 音频设备接口
10.2 Linux音频设备驱动--OSS驱动框架
10.3 Linux音频设备驱动--ALSA驱动框架
10.4 音频设备应用程序编写
10.5 音频设备驱动移植
10.6 音频播放程序madplay的移植
10.7 小结
第11章 SD卡驱动移植
11.1 SD卡简介
11.2 SD卡驱动程序分析
11.3 SD卡移植步骤
11.4 小结
第12章 NandFlash驱动移植
12.1 NandFlash介绍
12.2 NandFlash驱动介绍
12.3 NandFlash驱动移植
12.4 小结
第4篇 系统移植高级篇
第13章 MiniGUI与移植
13.1 MiniGUI在上位机中的安装
13.2 MiniGUI的交叉编译和移植
13.3 小结
第14章 Qt开发与Qtopia移植
14.1 Qt安装与编程
14.2 Qtopia Core在X86平台上的安装和应用
14.3 Qtopia Core在嵌入式Linux上的移植
14.4 小结
第15章 嵌入式数据库Berkeley DB移植
15.1 数据库的基本概念
15.2 Berkeley DB数据库安装
15.3 使用Berkeley DB数据库
15.4 移植Berkeley DB数据库
15.5 小结
第16章 嵌入式数据库SQLite移植
16.1 SQLite支持的SQL语句
16.2 SQLite数据库编译、安装和使用
16.3 移植SQLite
16.4 移植SQLite数据库
16.5 小结
第17章 嵌入式Web服务器BOA移植
17.1 BOA介绍
17.2 BOA编译和HTML页面测试
17.3 CGI脚本测试
17.4 BOA交叉编译与移植
17.5 BOA与SQLite结合
17.6 小结
第18章 嵌入式Web服务器Thttpd移植
18.1 Thttpd介绍
18.2 Thttpd编译和HTML页面测试
18.3 CGI脚本测试
18.4 Thttpd交叉编译与移植
18.5 Thttpd与嵌入式数据库结合
18.6 小结
第19章 JVM及其移植
19.1 JVM介绍
19.2 类装载
19.3 垃圾回收
19.4 解析器
19.5 Java编程浅析
19.6 KVM执行过程
19.7 PC机安装JVM
19.8 KVM移植和测试
19.9 小结
第20章 VoIP技术与Linphone编译
20.1 VoIP介绍
20.2 oSIP协议概述
20.3 oSIP状态机
20.4 oSIP解析器
20.5 oSIP事务层
20.6 SIP建立会话的过程
20.7 RTP协议
20.8 Linphone编译与测试
20.9 Linphone交叉编译
20.10 小结