内容简介
本书详细介绍了嵌入式Linux系统的方方面面,从嵌入式系统的发展、环境的搭建、相关的理论基础知识,再到深入地讲解嵌入式系统的开发,由易到难详细讲解了嵌入式系统开发的流程。本书分为4篇。第1篇是嵌入式Linux系统基础篇,主要介绍了嵌入式系统的发展,搭建嵌入式Linux系统环境,Linux程序开发基础和嵌入式Linux设备驱动开发基础等知识。第2篇是嵌入式Linux设备驱动核心理论篇,讲解了Linux设备驱动的一些基本理论知识,有并发竞态、阻塞非阻塞、驱动延迟操作、内存分配中断处理以及工程开发等相关知识。第3篇是字符设备驱动篇,主要讲解Linux字符设备驱动的相关内容,如基于内存的字符设备、按键控制led字符驱动、温度传感器、MP3播放器和动态图像系统开发。第4篇是块设备驱动篇,内容包括块设备驱动程序的开发、基于ramdisk的虚拟块设备驱动以及SD卡块设备驱动。
目录
目 录
第1章 嵌入式Linux系统简介 1
1.1 嵌入式与Linux系统概述 1
1.1.1 Linux操作系统及其发展 1
1.1.2 Linux发行版本 2
1.2 Windows与Linux文件系统的异同 4
1.2.1 Linux文件系统类型 4
1.2.2 Windows与Linux文件系统的相同点 5
1.2.3 Windows与Linux文件系统的不同点 5
1.3 Linux文件类型与属性 7
1.3.1 Linux文件类型 7
1.3.2 Linux文件属性 7
1.4 嵌入式Linux常用命令及工具 8
1.4.1 Linux常用命令 8
1.4.2 嵌入式Linux常用工具 9
小结 10
第2章 搭建嵌入式Linux学习环境 12
2.1 硬件开发平台 12
2.1.1 mini2440开发板硬件资源 12
2.1.2 外围设备 14
2.2 软件开发平台搭建 14
2.2.1 tftp服务器与nfs服务器搭建 15
2.2.2 交叉编译工具 16
2.2.3 uboot的移植 17
2.2.4 Linux内核移植 18
2.2.5 Linux根文件系统移植 19
小结 23
第3章 Linux应用程序学习 24
3.1 Linux shell脚本 24
3.1.1 语法 24
3.1.2 变量 25
3.1.3 shell脚本语句 26
3.1.4 注释 27
3.2 Linux下makefile的编写 27
3.3 Linux文件编程 28
3.3.1 文件与目录 29
3.3.2 系统调用 30
3.3.3 标准I/O库 32
3.4 线程 34
3.4.1 线程优点 34
3.4.2 线程分类 35
3.4.3 线程实现 35
3.5 网络编程 37
3.5.1 TCP/IP协议 37
3.5.2 TCP和UDP 38
3.5.3 套接字 39
小结 40
第4章 嵌入式Linux设备驱动开发基础 41
4.1 嵌入式Linux设备驱动的概述 41
4.1.1 Linux设备驱动的作用 41
4.1.2 Linux设备驱动的分类及特点 42
4.2 处理器与储存器 42
4.2.1 处理器 42
4.2.2 存储器 43
4.3 接口 45
4.3.1 串口 46
4.3.2 I2C 46
4.3.3 USB 47
4.3.4 以太网接口 48
4.4 Linux内核模块 49
小结 50
第5章 Linux设备驱动之并发与竞态 51
5.1 并发及其管理 51
5.2 自旋锁 52
5.2.1 自旋锁 API 52
5.2.2 自旋锁基本使用模式 53
5.2.3 其他自旋锁函数 54
5.2.4 读者/写者自旋锁 55
5.2.5 Linux内核自旋锁 55
5.3 信号量与互斥体 57
5.3.1 信号量 57
5.3.2 互斥体 62
5.4 原子操作 64
5.4.1 原子整数操作 64
5.4.2 原子位操作 65
5.5 中断屏蔽 65
小结 66
第6章 Linux设备驱动中的阻塞与非阻塞I/O 67
6.1 阻塞与非阻塞I/O 67
6.1.1 休眠 68
6.1.2 等待队列 68
6.1.3 阻塞和非阻塞操作 70
6.2 轮询操作 70
6.2.1 轮询概述 71
6.2.2 Linux应用程序中的轮询编程——select() 71
6.2.3 Linux设备驱动中的轮询编程——poll() 73
小结 75
第7章 Linux设备驱动之时间、延迟及延缓操作 76
7.1 Linux内核时间 76
7.1.1 处理器特定的寄存器 76
7.1.2 延迟操作 77
7.2 内核定时器 78
7.3 tasklet 80
7.4 工作队列 82
小结 84
第8章 Linux设备驱动之内存分配与I/O访问 85
8.1 内存空间与I/O空间 85
8.2 内存管理 85
8.3 内存分配 88
8.3.1 kmalloc与vmalloc 88
8.3.2 get_free_page和相关函数 89
8.4 设备I/O端口和I/O内存的访问 90
8.4.1 I/O寄存器和常规内存 90
8.4.2 操作I/O端口(申请,访问,释放) 91
8.4.3 操作I/O内存(申请,映射,访问,释放) 92
8.4.4 像I/O内存一样访问端口 93
8.4.5 ARM体系的I/O操作接口 94
8.5 I/O内存的静态映射 94
小结 96
第9章 Linux设备驱动之中断处理