新書推薦:
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:HK$
99.7
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:HK$
110.9
《
纯粹·古代中国的历史与制度
》
售價:HK$
62.7
《
生活来来往往 别等来日方长 新版(伍佰:“讲好了这一辈子,再度重相逢。”别等,别遗憾!珍惜当下才是最好的解药)
》
售價:HK$
58.2
《
一个英国军事顾问眼中的二战
》
售價:HK$
277.8
《
就业、利息和货币通论(徐毓枬译本)(经济学名著译丛)
》
售價:HK$
67.2
《
瘦肝
》
售價:HK$
99.7
《
股票大作手回忆录
》
售價:HK$
55.8
|
內容簡介: |
本书结合作者10多年的培训和实践经验,通过简明扼要的语言,以及实用的案例与方法,对嵌入式Linux应用开发中的关键技术点进行了深入浅出的讲解。全书分为基础篇、应用进阶篇和实战提高篇。
本书内容从最简单的案例开始,始终保持实用、易懂的风格,每个章节都设置了实践操作案例,能够帮助读者快速掌握嵌入式Linux应用软件的开发技能。
本书主要面向对嵌入式Linux应用软件开发感兴趣的初学者,或需要进一步提升技能的开发者,也可作为高等院校计算机类、电子电气类、控制类专业学生学习嵌入式Linux应用开发的教材。
|
目錄:
|
第1章 体验嵌入式系统的魅力
1.1 嵌入式系统的定义
1.2 嵌入式系统的历史与现状
1.2.1 无操作系统阶段
1.2.2 简单操作系统阶段
1.2.3 实时操作系统阶段
1.2.4 面向Internet阶段
1.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
1.7 延伸阅读:嵌入式系统面临的关键问题
1.8 小结
第2章 嵌入式Linux的前世今生
2.1 嵌入式Linux简介
2.1.1 嵌入式Linux的优势
2.1.2 嵌入式Linux面临的挑战
2.1.3 发展前景
2.1.4 A
2.2 嵌入式Linux系统的软件组成
2.2.1 引导加载程序
2.2.2 Linux内核
2.2.3 文件系统
2.2.4 用户应用程序
2.3 嵌入式系统软件研发的关键技术
2.3.1 开发流程
2.3.2 交叉编译和链接
2.3.3 交叉调试
2.3.4 系统测试
2.4 系统启动过程
2.5 延伸阅读:开源、GPL与POSIX简介
2.5.1 开源
2.5.
2.5.3
2.6 小结
第3章 零基础安装虚拟机与Linux操作系统
3.1 VMware Workstation的安装
3.2 配置VMware Workstation并便捷安装Fedo
3.3 配置VMware Workstation手动安装Fedo
3.4 安装Fedo
3.5 VMware Tools的安装
3.6 使用已安装好操作系统的虚拟机
3.7 延伸阅读:打开Fedora 16的root账号
3.8 小结
第4章 快速构建嵌入式Linux开发环境
4.1 安装交叉编译器
4.1.1 安装交叉编译器
4.1.2 建立链接
4.1.3 查看交叉工具是否安装正确
4.2 构建开发板运行所需的环境
4.2.1 编译一级启动文件x-
4.2.2 编译二级启动文件
4.2.3 编译内核
4.2.4 制作文件系统镜像
4.3 更新系统文件
4.3.1 更新文件从SD卡启动
4.3.2 更新文件从NAND Flash启动
4.4 小结
第5章 配置串口通信工具
5.1 配置Windows XP的超级终端
5.2 串口信息的捕获
5.3 在Linux中配置M
5.4 小结
第6章 配置NFS文件系统服务
6.1 查看宿主机上的安装包
6.2 配置网络文件系统
6.3 启动NFS服务
6.3.1 在Fedora 16下面运行service nfs start命令失败
6.3.2 在Fedora 16下面运行service nfs-server start失败
6.4 本机测试
6.5 在开发板上测试
6.5.1 常见的测试过程
6.5.2 NFS无法挂载的问题分析
6.6 小结
第7章 开始编写第一个程序
7.1 在宿主机上编写第一个程序
7.2 编写开发板上的上第一个程序
7.3 小结
第8章 Linux开发入门必备私房菜
8.1 程序安装目录
8.2 头文件
8.3 库文件
8.4 gcc简介
8.5 make简介
8.6 小结
第9章 Shell:用户与Linux沟通的桥梁
9.1 Shell是如何工作的
9.2 Shell的“兄弟姐妹”
9.3 必须熟悉的Shell命令
9.3.1 命令行
9.3.2 选项和参数
9.3.3 命令行特征
9.4 理解Shell中的特殊字符
9.4.1 通配符
9.4.2 引号
9.4.3 注释符
9.5 畅通交流:标准输入输出和重定向
9.5.1 标准输入与输出
9.5.2 输入重定向
9.5.3 输出重定向
9.5.4 管道
9.6 命令替换
9.7 实战体验:在Bash中的操作
9.7.1 命令和文件名扩展特性
9.7.2 命令行编辑
9.7.3 命令历史
9.7.4 命令别名
9.8 定制
9.9 小结
第10章 文本编辑利器
10.1 Vi简介
10.1.1 命令行模式
10.1.2 文本输入模式
10.1.3 末行模式
10.1.4 模式之间的切换
10.2 Vi的进入与退出
10.2.1 Vi的进入
10.2.2 退出
10.3 Vi中的行号
10.4 光标移动操作
10.5 按字移动光标
10.5.1 w和W命令
10.5.2 e和E命令
10.5.3 b和B命令
10.6 屏幕滚动
10.6.1 滚屏命令
10.6.2 分页命令
10.6.3 状态命令
10.7 屏幕调零命令
10.8 文本插入操作
10.8.1 插入Insert命令
10.8.2 打开open命令
10.9 文本修改
10.9.1 文本删除
10.9.2 取消上一命令
10.9.3 重复命令
10.10 实现替换功能
10.11 小结
第11章 应知应会的基本函数
11.1 文件操作函数
11.1.1 文件的创建与打开操作
11.1.2 对文件进行读写
11.1.3 文件的关闭操作
11.1.4 改变文件读写偏移位置: ls
11.1.5 实例:文件的打开关闭、读写 与设置文件读写指针
11.1.6 文件描述符和流
11.1.7 文件控制操作函数fc
11.1.8 控制设备文件参数的函数 io
11.1.9 文件的权限修改
11.1.10 文件的属主与组群修改
11.1.11 获得文件的状态
11.1.12 文件的其他操作
11.2 目录操作
11.2.1 创建和删除目录的函数
11.2.2 打开目录
11.2.3 读取目录
11.2.4 关闭目录
11.2.5 改变工作目录的函数
11.2.6 取得当前的工作目录
11.2.7 实例:文件列表程序
11.3 建立临时文件
11.4 获取进程号
11.5 获取节点信息
11.6 小结
第12章 时间问题的处理
12.1 时钟类型
12.1.1 硬件时钟
12.1.2 系统时钟
12.1.3 系统时钟与硬件时钟的关系
12.2 UTC、CST与
12.3 Linux下常用的时间类型
12.3.1 time_t时间类型
12.3.2 struct tm时间类型
12.3.3 struct timeval时间类型
12.3.4 struct timespec时间类型
12.3.5 struct tim
12.3.6 获得自Epoch以来的秒数
12.4 获得与修改系统时间
12.5 时间格式转换
12.5.1 asctime函数
12.5.2 ctime函数
12.5.3 gmtime函数
12.5.4 localtime函数
12.5.5 mktime函数
12.6 使线程睡眠的时间函数
12.6.1 sleep函数
12.6.2 usleep函数
12.6.3 nanosleep函数
12.6.4 示例:为nanosleep函数指定秒数和纳秒数
12.6.5 alarm函数
12.7 延伸阅读:其他函数
12.8 小结
第13章 简单的网络编程实战
13.1 基础知识
13.1.1 CS与BS结构
13.1.2 UDPTCP协议
13.1.3 什么是S
13.2 UDP套接字编程实例
13.2.1 服务端
13.2.2 客户端
13.2.3 编译
13.2.4 运行结果
13.2.5 使用Wireshark捕获数据包
13.2.6 UDP套接字网络编程涉及的系统调用过程
13.2.7 建立S
13.2.8 配置S
13.2.9 数据传输
13.2.10 延伸阅读:关闭S
13.3 TCP套接字编程实例
13.3.1 服务端
13.3.2 客户端
13.3.3 编译
13.3.4 运行结果
13.3.5 使用Wireshark捕获数据包
13.3.6 TCP套接字网络编程所涉及的系统函数
13.3.7 建立连接
13.3.8 数据传输
13.4 小结
第14章 简单的线程操作实战
14.1 为何嵌入式系统中进程不再是重点
14.1.1 进程与线程
14.1.2 线程的优势
14.1.3 我们的问题
14.1.4 进程通信的统一方式:Socket通信
14.1.5 简单的线程操作
14.2 创建线程
14.3 获得本线程的标识符
14.4 结束线程
14.5 延伸阅读:操作线程共享变量
14.6 小结
第15章 重点剖析:线程同步实例
15.1 互斥锁
15.1.1 再谈线程共享变量的操作
15.1.2 互斥锁的创建
15.1.3 互斥锁的销毁
15.1.4 互斥锁的操作
15.2 读写锁
15.2.1 读写锁实例
15.2.2 读写锁的创建
15.2.3 获取读写锁中的读锁
15.2.4 获取读写锁中的写锁
15.2.5 解除锁定的读写锁
15.2.6 销毁读写锁
15.3 条件变量
15.3.1 忙等待
15.3.2 条件变量
15.3.3 条件变量的创建
15.3.4 条件变量的销毁
15.3.5 条件变量的等待和激发
15.3.6 互斥锁和条件变量的结合使用
15.4 线程死锁
15.5 延伸阅读:解决死锁的方法
15.5.1 解决方法一
15.5.2 解决方法二
15.6 小结
第16章 进阶私房菜:再谈线程
16.1 线程参数的传递
16.1.1 单个参数传递
16.1.2 多个参数传递
16.2 线程私有数据
16.2.1 创建
16.2.2 删除
16.2.3 读写
16.3 修改线程属性
16.3.1 可以修改的线程属性
16.3.2 修改线程参数示例
16.4 延伸阅读:线程池
16.4.1 为什么需要线程池
16.4.2 构建线程池框架
16.4.3 简单的线程池示例
16.5 小结
第17章 进阶私房菜:再谈网络编程
17.1 对SIGPIPE信号的处理
17.1.1 示例1:SIGPIPE信号的默认处理
17.1.2 示例2:重定义SIGPIPE信号的默认动作
17.1.3 示例3:忽略SIGPIPE信号
17.1.4 示例4:直接使用MSG_NOSIGNAL标识
17.2 修改Socket缓冲区的大小
17.2.1 setsockopt函数与getsockopt函数
17.2.2 示例:修改Socket缓冲区的大小
17.3 检测服务器与客户端的连接是否有效
17.4 服务器的多线程处理
17.4.1 客户端
17.4.2 服务器
17.5 延伸阅读:重?
17.5.1 TIME_WAIT的两个作用
17.5.2 如何结束TIME_WAIT状态
17.5.3 实现可立即重启的服务器
17.6 小结
第18章 重点突破:网络编程的字节流处理
18.1 面向字节流的分包问题
18.1.1 数据包的常见结构
18.1.2 线程间数据的交互——环形缓冲区的实现
18.1.3 环形缓冲区
18.1.4 封包与解包
18.1.5 网络整合使用实例
18.1.6 错误数据包的测试
18.2 再谈生产者与消费者的示例
18.3 小结
第19章 嵌入式BS架构开发要点
19.1 几种嵌入式Web服务器的比较
19.1.1
19.1.2 t
19.1.3 Mini_
19.1.4 Mon
19.1.5 Lig
19.1.6 A
19.1.7 A
19.2 Boa简介
19.3 移植与测试Boa的环境配置
19.4 Boa的移植
19.4.1 下载源代码
19.4.2 编译
19.4.3 安装到开发板的Linux文件系统
19.4.4 配置
19.4.5 测试
19.5 使用
19.5.1 简介
19.5.2 配置目标板文件系统
19.5.3 编写HelloCGI.c程序
19.5.4 交叉编译
19.5.5 测试
19.6 复杂网页测试
19.6.1 设置目标板文件系统varwww的目录结构
19.6.2 编制index
19.6.3 测试
19.7 小结
第20章 SQLite数据库移植与实战
20.1 SQLite的特性
20.2 SQLite的移植过程
20.2.1 移植的环境
20.2.2 移植步骤
20.3 如何使用Linux C操作S
20.4 数据库的并发访问
20.5 小结
附录A 网络分析工具Wireshark的使用
|
|