第一篇 Linux基础
第1章 Linux操作系统简介…………………………………………………………… 3
1.1 Linux内核……………………………………………………………………… 3
1.1.1 简 介……………………………………………………………………… 3
1.1.2 特 点……………………………………………………………………… 5
1.1.3 内核版本号………………………………………………………………… 7
1.1.4 组成部分…………………………………………………………………… 7
1.2 Linux发行版…………………………………………………………………… 11
1.3 嵌入式Linux ………………………………………………………………… 14
1.3.1 嵌入式Linux的特点…………………………………………………… 14
1.3.2 嵌入式Linux的产品形态……………………………………………… 14
第2章 安装Linux操作系统………………………………………………………… 16
2.1 获得Linux环境的三种方式………………………………………………… 16
2.2 发行版选择和ISO下载……………………………………………………… 17
2.3 VMwarePlayer软件………………………………………………………… 18
2.3.1 下载和安装………………………………………………………………… 18
2.3.2 设置虚拟化支持…………………………………………………………… 20
2.4 使用现成的虚拟机……………………………………………………………… 21
2.5 创建和配置虚拟机……………………………………………………………… 25
2.5.1 创建虚拟机………………………………………………………………… 25
2.5.2 虚拟机设置………………………………………………………………… 28
2.6 安装Ubuntu …………………………………………………………………… 30
2.6.1 实体机安装前准备………………………………………………………… 30
2.6.2 虚拟机安装前准备………………………………………………………… 32
2.6.3 正式安装Ubuntu ………………………………………………………… 34
2.7 初识Ubuntu …………………………………………………………………… 38
2.7.1 Ubuntu桌面……………………………………………………………… 38
2.7.2 输入法……………………………………………………………………… 39
2.7.3 系统设置…………………………………………………………………… 39
2.7.4 搜索软件和文件…………………………………………………………… 40
2.7.5 打开终端…………………………………………………………………… 41
2.7.6 安装软件…………………………………………………………………… 42
第3章 开始使用Linux ……………………………………………………………… 44
3.1 LinuxShell …………………………………………………………………… 44
3.1.1 Shell是什么……………………………………………………………… 44
3.1.2 Shell的种类和特点……………………………………………………… 45
3.2 Linux常见命令………………………………………………………………… 46
3.2.1 导航命令…………………………………………………………………… 47
3.2.2 目录操作命令……………………………………………………………… 49
3.2.3 文件操作命令……………………………………………………………… 53
3.2.4 网络操作命令……………………………………………………………… 63
3.2.5 安装和卸载文件系统……………………………………………………… 64
3.2.6 使用内核模块和驱动……………………………………………………… 66
3.2.7 重启和关机………………………………………………………………… 69
3.2.8 其他命令…………………………………………………………………… 69
3.3 Shell文件……………………………………………………………………… 72
3.4 Linux环境变量………………………………………………………………… 72
3.4.1 环境变量…………………………………………………………………… 72
3.4.2 修改环境变量……………………………………………………………… 73
第4章 Linux文件系统……………………………………………………………… 75
4.1 Linux目录结构………………………………………………………………… 75
4.1.1 Linux目录树……………………………………………………………… 75
4.1.2 Linux目录树标准………………………………………………………… 76
4.2 Linux的文件…………………………………………………………………… 77
4.2.1 Linux文件结构…………………………………………………………… 77
4.2.2 Linux文件名称…………………………………………………………… 78
4.2.3 文件类型…………………………………………………………………… 79
4.3 Linux文件系统………………………………………………………………… 80
4.3.1 Ext3文件系统特点……………………………………………………… 80
4.3.2 Ext4文件系统特点……………………………………………………… 81
4.3.3 其他文件系统……………………………………………………………… 83
第5章 Vi编辑器……………………………………………………………………… 86
5.1 Vi/Vim 编辑器………………………………………………………………… 86
5.2 Vi的模式……………………………………………………………………… 86
5.3 Vim 的安装…………………………………………………………………… 87
5.4 启动和关闭Vi ………………………………………………………………… 87
5.5 光标移动………………………………………………………………………… 88
5.6 文本编辑………………………………………………………………………… 89
5.6.1 文本输入…………………………………………………………………… 89
5.6.2 文本处理…………………………………………………………………… 90
5.7 配置Vi ………………………………………………………………………… 93
5.8 文件对比………………………………………………………………………… 95
第6章 嵌入式Linux开发环境构建………………………………………………… 96
6.1 嵌入式Linux开发模型……………………………………………………… 96
6.1.1 交叉编译…………………………………………………………………… 96
6.1.2 交叉编译器………………………………………………………………… 97
6.2 安装交叉编译器………………………………………………………………… 97
6.2.1 解压工具链压缩包………………………………………………………… 98
6.2.2 设置环境变量……………………………………………………………… 99
6.3 SSH 服务器…………………………………………………………………… 102
6.3.1 SSH 能做什么…………………………………………………………… 102
6.3.2 安装SSH 服务器………………………………………………………… 103
6.3.3 测试SSH 服务…………………………………………………………… 103
6.3.4 用Putty测试…………………………………………………………… 105
6.3.5 用SSHSecureShell测试……………………………………………… 107
6.4 NFS服务器…………………………………………………………………… 110
6.4.1 NFS能做什么…………………………………………………………… 110
6.4.2 安装NFS软件包………………………………………………………… 110
6.4.3 添加NFS共享目录……………………………………………………… 110
6.4.4 启动NFS服务…………………………………………………………… 112
6.4.5 测试NFS服务器………………………………………………………… 112
6.5 TFTP服务器………………………………………………………………… 113
6.5.1 TFTP能做什么………………………………………………………… 113
6.5.2 安装配置TFTP软件…………………………………………………… 113
6.5.3 配置TFTP服务器……………………………………………………… 114
6.5.4 启动TFTP服务………………………………………………………… 114
6.5.5 测试TFTP服务器……………………………………………………… 114
第二篇 EasyARM i.MX283A 开发平台
第7章 EasyARM i.MX283A 开发套件介绍……………………………………… 119
7.1 开发套件简介………………………………………………………………… 119
7.2 硬件资源……………………………………………………………………… 120
7.3 软件资源……………………………………………………………………… 121
7.4 开发所需配件………………………………………………………………… 122
7.5 产品组装……………………………………………………………………… 122
7.6 AP 283Demo扩展板……………………………………………………… 124
7.6.1 硬件特性………………………………………………………………… 124
7.6.2 外设接口布局…………………………………………………………… 125
第8章 EasyARM i.MX283A 入门实操…………………………………………… 126
8.1 开机和登录…………………………………………………………………… 126
8.1.1 启动方式设置…………………………………………………………… 126
8.1.2 供电连接………………………………………………………………… 127
8.1.3 串口硬件连接…………………………………………………………… 127
8.1.4 Windows环境串口登录………………………………………………… 130
8.1.5 Linux环境串口登录…………………………………………………… 133
8.2 关机和重启…………………………………………………………………… 138
8.3 查看系统信息………………………………………………………………… 138
8.3.1 查看系统内核版本……………………………………………………… 138
8.3.2 查看内存使用情况……………………………………………………… 139
8.3.3 查看磁盘使用情况……………………………………………………… 139
8.3.4 查看CPU 等的信息…………………………………………………… 139
8.4 设置开机自动启动…………………………………………………………… 140
8.5 加载驱动模块………………………………………………………………… 141
8.5.1 在Shell终端上加载和使用驱动模块………………………………… 141
8.5.2 在脚本文件中加载和使用驱动模块…………………………………… 141
8.6 网络设置……………………………………………………………………… 142
8.7 通过SSH 登录系统…………………………………………………………… 145
8.8 TF卡的使用………………………………………………………………… 146
8.9 U 盘的使用…………………………………………………………………… 147
8.10 USBDevice的使用………………………………………………………… 148
8.10.1 把TF卡作为虚拟U 盘的储存空间………………………………… 148
8.10.2 使用普通文件作为虚拟U 盘的存储空间…………………………… 149
8.11 LED使用…………………………………………………………………… 150
8.11.1 LED的操作接口……………………………………………………… 150
8.11.2 触发条件设置…………………………………………………………… 150
8.12 蜂鸣器的使用………………………………………………………………… 152
8.13 LCD背光控制……………………………………………………………… 152
8.14 触摸屏的校准………………………………………………………………… 152
8.15 GPIO操作…………………………………………………………………… 153
8.16 进阶操作……………………………………………………………………… 154
8.16.1 挂载NFS目录………………………………………………………… 154
8.16.2 使用NFS根文件系统………………………………………………… 154
8.16.3 使用TFTP启动内核………………………………………………… 158
8.16.4 内存文件系统…………………………………………………………… 159
第9章 系统固件的烧写……………………………………………………………… 160
9.1 NandFlash存储器分区……………………………………………………… 160
9.2 烧写流程图…………………………………………………………………… 160
9.3 格式化NandFlash…………………………………………………………… 161
9.3.1 通过USBBoot引导格式化NandFlash ……………………………… 161
9.3.2 通过SDBoot方式格式化NandFlash ……………………………… 164
9.4 TF卡烧写方案……………………………………………………………… 165
9.4.1 TF卡烧写用的固件…………………………………………………… 165
9.4.2 制作TF启动卡………………………………………………………… 166
9.4.3 固件烧写步骤…………………………………………………………… 167
9.5 USB烧写方案………………………………………………………………… 168
9.6 使用网络升级内核或文件系统……………………………………………… 172
9.6.1 网络升级用的固件……………………………………………………… 172
9.6.2 升级步骤………………………………………………………………… 172
9.6.3 故障排除………………………………………………………………… 174
第三篇 Linux应用编程
第10章 LinuxC编程环境………………………………………………………… 179
10.1 GCC ………………………………………………………………………… 180
10.1.1 GCC简介……………………………………………………………… 180
10.1.2 GCC工具软件………………………………………………………… 180
10.1.3 GCC基本使用方法…………………………………………………… 181
10.1.4 GCC编译控制选项…………………………………………………… 187
10.1.5 创建静态库和共享库…………………………………………………… 191
10.1.6 arm linux gcc ……………………………………………………… 192
10.2 GNU make ………………………………………………………………… 192
10.2.1 make和GNU make…………………………………………………… 192
10.2.2 给hello.c编写一个Makefile ………………………………………… 193
10.2.3 Makefile的规则………………………………………………………… 194
10.2.4 make命令……………………………………………………………… 202
10.3 GDB ………………………………………………………………………… 203
10.3.1 GDB介绍……………………………………………………………… 203
10.3.2 GDB基本命令………………………………………………………… 203
10.3.3 GDB调试范例………………………………………………………… 205
10.3.4 GDB远程调试………………………………………………………… 208
10.3.5 GDB图形前端DDD …………………………………………………… 211
10.4 用于C/C++语言的EclipseIDE ………………………………………… 213
10.4.1 Eclipse简介…………………………………………………………… 213
10.4.2 安装用于C/C++语言的EclipseIDE ……………………………… 214
10.4.3 启动Eclipse …………………………………………………………… 214
10.4.4 创建C工程…………………………………………………………… 215
10.4.5 本地编译和调试………………………………………………………… 220
10.4.6 交叉编译和远程调试…………………………………………………… 221
10.4.7 Eclipse中的GCC设置……………………………………………… 228
10.4.8 导入已有的工程文件…………………………………………………… 231
10.5 Windows下开发Linux应用程序………………………………………… 232
10.5.1 安装交叉编译器………………………………………………………… 232
10.5.2 安装JDK ……………………………………………………………… 238
10.5.3 安装用于C/C++Developers的EclipseIDE ……………………… 241
10.5.4 启动Eclipse …………………………………………………………… 242
10.5.5 创建C工程…………………………………………………………… 244
10.5.6 交叉编译工程…………………………………………………………… 247
10.5.7 建立远程SSH 连接…………………………………………………… 248
10.5.8 远程调试………………………………………………………………… 254
第11章 Linux文件I/O …………………………………………………………… 259
第12章 进程与进程间通信………………………………………………………… 276
第13章 Linux多线程编程………………………………………………………… 312
第14章 嵌入式GUI编程…………………………………………………………… 337
第15章 特殊硬件接口编程………………………………………………………… 393
第16章 Linux串口编程…………………………………………………………… 458
第17章 C语言网络编程入门……………………………………………………… 473
第18章 Shell编程初步……………………………………………………………… 503
参考文献 ……………………………………………………………………………… 528