内容简介
第一篇 Linux基础
第1章 Linux操作系统简介
1.1 Linux内核
1.1.1 简介
1.1.2 特点
1.1.3 内核版本号
1.1.4 组成部分
1.2 Linux发行版
1.3 嵌入式Linux
1.3.1 嵌入式Linux的特点
1.3.2 嵌入式Linux的产品形态
第2章 安装Linux操作系统
2.1 获得Linux环境的三种方式
2.2 发行版选择和ISO下载
2.3 VMware Player软件
2.3.1 下载和安装
2.3.2 设置虚拟化支持
2.4 使用现成的虚拟机
2.5 创建和配置虚拟机
2.5.1 创建虚拟机
2.5.2 虚拟机设置
2.6 安装Ubuntu
2.6.1 实体机安装前准备
2.6.2 虚拟机安装前准备
2.6.3 正式安装Ubuntu
2.7 初识Ubuntu
2.7.1 Ubuntu桌面
2.7.2 输入法
2.7.3 系统设置
2.7.4 搜索软件和文件
2.7.5 打开终端
2.7.6 安装软件
第3章 开始使用Linux
3.1 Linux Shell
3.1.1 Shell是什么
3.1.2 Shell的种类和特点
3.2 Linux常见命令
3.2.1 导航命令
3.2.2 目录操作命令
3.2.3 文件操作命令
3.2.4 网络操作命令
3.2.5 安装和卸载文件系统
3.2.6 使用内核模块和驱动
3.2.7 重启和关机
3.2.8 其他命令
3.3 Shell文件
3.4 Linux环境变量
3.4.1 环境变量
3.4.2 修改环境变量
第4章 Linux文件系统
4.1 Linux目录结构
4.1.1 Linux目录树
4.1.2 Linux目录树标准
4.2 Linux的文件
4.2.1 Linux文件结构
4.2.2 Linux文件名称
4.2.3 文件类型
4.3 Linux文件系统
4.3.1 Ext3文件系统特点
4.3.2 Ext4文件系统特点
4.3.3 其他文件系统
第5章 Vi编辑器
5.1 Vi/Vim编辑器
5.2 Vi的模式
5.3 Vim的安装
5.4 启动和关闭Vi
5.5 光标移动
5.6 文本编辑
5.6.1 文本输入
5.6.2 文本处理
5.7 配置Vi
5.8 文件对比
第6章 嵌入式Linux开发环境构建
6.1 嵌入式Linux开发模型
6.1.1 交叉编译
6.1.2 交叉编译器
6.2 安装交叉编译器
6.2.1 解压工具链压缩包
6.2.2 设置环境变量
6.3 SSH服务器
6.3.1 SSH能做什么
6.3.2 安装SSH服务器
6.3.3 测试SSH服务
6.3.4 用Putty测试
6.3.5 用SSH Secure Shell测试
6.4 NFS服务器
6.4.1 NFS能做什么
6.4.2 安装NFS软件包
6.4.3 添加NFS共享目录
6.4.4 启动NFS服务
6.4.5 测试NFS服务器
6.5 TFTP服务器
6.5.1 TFTP能做什么
6.5.2 安装配置TFTP软件
6.5.3 配置TFTP服务器
6.5.4 启动TFTP服务
6.5.5 测试TFTP服务器
第二篇 EasyARM-i.MX283A开发平台
第7章 EasyARM-i.MX283A开发套件介绍
7.1 开发套件简介
7.2 硬件资源
7.3 软件资源
7.4 开发所需配件
7.5 产品组装
7.6 AP-283Demo扩展板
7.6.1 硬件特性
7.6.2 外设接口布局
第8章 EasyARM-i.MX283A入门实操
8.1 开机和登录
8.1.1 启动方式设置
8.1.2 供电连接
8.1.3 串口硬件连接
8.1.4 Windows环境串口登录
8.1.5 Linux环境串口登录
8.2 关机和重启
8.3 查看系统信息
8.3.1 查看系统内核版本
8.3.2 查看内存使用情况
8.3.3 查看磁盘使用情况
8.3.4 查看CPU等的信息
8.4 设置开机自动启动
8.5 加载驱动模块
8.5.1 在Shell终端上加载和使用驱动模块
8.5.2 在脚本文件中加载和使用驱动模块
8.6 网络设置
8.7 通过SSH登录系统
8.8 TF卡的使用
8.9 U盘的使用
8.10 USB Device的使用
8.10.1 把TF卡作为虚拟U盘的储存空间
8.10.2 使用普通文件作为虚拟U盘的存储空间
8.11 LED使用
8.11.1 LED的操作接口
8.11.2 触发条件设置
8.12 蜂鸣器的使用
8.13 LCD背光控制
8.14 触摸屏的校准
8.15 GPIO操作
8.16 进阶操作
8.16.1 挂载NFS目录
8.16.2 使用NFS根文件系统
8.16.3 使用TFTP启动内核
8.16.4 内存文件系统
第9章 系统固件的烧写
9.1 Nand Flash存储器分区
9.2 烧写流程图
9.3 格式化Nand Flash
9.3.1 通过USB Boot引导格式化Nand Flash
9.3.2 通过SD Boot方式格式化Nand Flash
9.4 TF卡烧写方案
9.4.1 TF卡烧写用的固件
9.4.2 制作TF启动卡
9.4.3 固件烧写步骤
9.5 USB烧写方案
9.6 使用网络升级内核或文件系统
9.6.1 网络升级用的固件
9.6.2 升级步骤
9.6.3 故障排除
第三篇 Linux应用编程
第10章 Linux C编程环境
10.1 GCC
10.1.1 GCC简介
10.1.2 GCC工具软件
10.1.3 GCC基本使用方法
10.1.4 GCC编译控制选项
10.1.5 创建静态库和共享库
10.1.6 arm-linux-gcc
10.2 GNU make
10.2.1 make和GNU make
10.2.2 给hello.c编写一个Makefile
10.2.3 Makefile的规则
10.2.4 make命令
10.3 GDB
10.3.1 GDB介绍
10.3.2 GDB基本命令
10.3.3 GDB调试范例
10.3.4 GDB远程调试
10.3.5 GDB图形前端DDD
10.4 用于C/C++语言的Eclipse IDE
10.4.1 Eclipse简介
10.4.2 安装用于C/C++语言的Eclipse IDE
10.4.3 启动Eclipse
10.4.4 创建C工程
10.4.5 本地编译和调试
10.4.6 交叉编译和远程调试
10.4.7 Eclipse中的GCC设置
10.4.8 导入已有的工程文件
10.5 Windows下开发Linux应用程序
10.5.1 安装交叉编译器
10.5.2 安装JDK
10.5.3 安装用于C/C++Developers的Eclipse IDE
10.5.4 启动Eclipse
10.5.5 创建C工程
10.5.6 交叉编译工程
10.5.7 建立远程SSH连接
10.5.8 远程调试
第11章 Linux文件I/O
11.1 Linux文件I/O概述
11.2 文件描述符
11.3 常用文件I/O操作和函数
11.3.1 open
11.3.2 close
11.3.3 read
11.3.4 write
11.3.5 fsync
11.3.6 文件操作范例
11.3.7 lseek
11.3.8 ioctl
11.4 I/O操作和蜂鸣器
第12章 进程与进程间通信
12.1 进程环境
12.1.1 程序与进程
12.1.2 进程环境
12.2 进程基本操作
12.2.1 创建进程
12.2.2 终止进程
12.2.3 exec族函数
12.2.4 wait()函数
12.2.5 守护进程
12.3 信号
12.3.1 常用的信号
12.3.2 信号函数
12.4 进程间通信
12.4.1 管道
12.4.2 共享内存
12.4.3 信号量
第13章 Linux多线程编程
13.1 Linux多线程概述
13.1.1 什么是线程
13.1.2 线程与进程的关系
13.1.3 为什么要使用多线程
13.2 POSIX Threads概述
13.3 线程管理
13.3.1 线程ID
13.3.2 创建与终止
13.3.3 连接与分离
13.3.4 线程属性
13.4 线程安全
13.5 互斥量
13.5.1 临界区
13.5.2 什么是互斥量
13.5.3 创建与销毁
13.5.4 加锁与解锁
13.5.5 死锁和避免
13.6 条件变量
13.6.1 为什么需要条件变量
13.6.2 创建与销毁
13.6.3 等待与通知
第14章 嵌入式GUI编程
14.1 Qt和Qt/Embedded
14.1.1 Qt介绍
14.1.2 Qt/Embedded介绍
14.2 Qt/Embedded交叉编译环境的搭建
14.2.1 环境介绍
14.2.2 安装tslib1.4
14.2.3 编译qt4.7.3-arm
14.3 Qt SDK的搭建
14.3.1 Qt SDK简介
14.3.2 Qt SDK的安装
14.4 qmake
14.4.1 .pro文件例程
14.4.2 .pro文件常见配置
14.4.3 Helloworld程序
14.5 Qt Creator
14.5.1 Qt Creator的配置
14.5.2 Qt Creator使用范例
14.6 在嵌入式环境运行Qt程序
14.6.1 将程序编译成嵌入式版本
14.6.2 在目标板上运行程序
14.7 Qt帮助文档
14.8 Qt编程实战
14.8.1 按钮
14.8.2 标签和文本框
14.8.3 布局管理器
14.8.4 信号与槽
14.8.5 主窗口(MainWindow)
14.8.6 菜单栏、工具栏和状态栏
14.8.7 事件
14.8.8 经典游戏贪食蛇实例
第15章 特殊硬件接口编程
15.1 点亮一个LED灯
15.1.1 LED的操作接口
15.1.2 LED的控制
15.1.3 在C程序中操作LED
15.2 GPIO硬件编程
15.2.1 GPIO和sysfs操作接口
15.2.2 GPIO的基本操作
15.2.3 在C程序中操作GPIO
15.2.4 EasyARM-i.MX283A GPIO应用编程
15.3 用户态SPI编程
15.3.1 SPI编程接口
15.3.2 编程范例
15.4 用户态I2C编程
15.4.1 I2C编程接口
15.4.2 编程范例
15.5 按键应用层编程
15.5.1 按键驱动加载和卸载
15.5.2 在图形界面中使用按键驱动
15.5.3 按键编程
15.5.4 编程范例
15.6 用户态ADC编程
15.6.1 ADC驱动模块的加载
15.6.2 操作接口
15.6.3 C程序操作示例
15.7 温度检测和报警系统
15.7.1 EEPROM控制模块
15.7.2 环境温度读取模块
15.7.3 数码管显示模块
15.7.4 按键处理模块
15.7.5 控制处理模块
15.7.6 主程序的实现
15.7.7 测试方法
第16章 Linux串口编程
16.1 串口的基本操作
16.1.1 打开串口
16.1.2 关闭串口
16.1.3 发送数据
16.1.4 读取数据
16.1.5 串口范例1
16.2 串口属性的设置
16.2.1 终端属性描述
16.2.2 获取和设置终端属性
16.2.3 设置波特率
16.2.4 设置数据位
16.2.5 设置奇偶校验
16.2.6 设置停止位
16.2.7 其他设置
16.2.8 串口属性设置函数
16.2.9 串口范例2
第17章 C语言网络编程入门
17.1 网络基本概念
17.1.1 OSI模型
17.1.2 TCP/IP协议基本概念
17.1.3 字节序
17.1.4 客户机/服务器模型
17.2 编程接口BSD Socket
17.2.1 Socket简介
17.2.2 基础数据结构和函数
17.2.3 BSD Socket常用操作
17.3 实例:TCP/UDP ECHO服务器
17.3.1 面向流的Socket
17.3.2 面向数据报的Socket
第18章 Shell编程初步
18.1 基础概念
18.1.1 Sha-Bang
18.1.2 字符串与引号
18.1.3 特殊字符
18.2 必要高级概念
18.2.1 内部命令和外部命令
18.2.2 I/O重定向与管道
18.2.3 常量、变量与环境变量
18.2.4 操作符与表达式
18.3 脚本编程
18.3.1 命令、函数与脚本返回值
18.3.2 函数
18.3.3 test
18.3.4 流程控制
参考文献