《Linux嵌入式系统开发从小白到大牛》的宗旨是让读者紧跟书中内容的安排顺序并结合具体案例进行学习,*终可以独立编写个人的嵌入式Linux系统。全书共16章,在章节安排上本着由易到难、深入浅出的原则,具体内容如下。第1~3章主要介绍Linux嵌入式开发的基础知识;第4、5章分别从硬件角度和软件角度分析嵌入式Linux学习的相关工具;第6~9章是本书的重点,分别对Makefile、U-boot、内核和根文件系统进行了详细介绍。第10~12章介绍了Linux的驱动开发,是本书的难点内容,也是嵌入式Linux 系统工程师必须掌握的内容。第13~16章结合当下物联网、车联网等热门技术领域知识,完成了4个综合项目案例。
《Linux嵌入式系统开发从小白到大牛》适合广大从事嵌入式Linux系统开发的技术人员、嵌入式Linux系统开发爱好者以及大中专院校相关专业的学生阅读,相关培训院校及高校教师亦可将本书作为教材或参考书。
前言
第1章Linux嵌入式系统入门
1.1小白也要懂——嵌入式系统的应用和发展
1.2嵌入式系统与嵌入式操作系统
1.2.1什么是嵌入式系统
1.2.2什么是嵌入式操作系统
1.3嵌入式系统的分类与特点
1.3.1嵌入式系统的分类
1.3.2嵌入式系统的特点
1.4嵌入式操作系统架构
1.5Linux系统版本
1.5.1Linux系统分类
1.5.2Ubuntu操作系统的版本
1.6【案例实战】Linux系统环境搭建
1.6.1虚拟机安装Ubuntu操作系统
1.6.2树莓派安装Ubuntu操作系统
1.7要点巩固
1.8技术大牛访谈——嵌入式系统的一般开发流程
第2章Linux操作系统基础知识
2.1小白也要懂——操作系统的功能
2.2Linux操作系统基本命令
2.2.1Linux操作系统权限管理
2.2.2Linux常用基本命令
2.3Linux操作系统下的vi和vim编辑器
2.3.1vi的基本操作
2.3.2vim的基本操作
2.4链接文件
2.5跨平台的文件传输协议
2.5.1什么是FTP
2.5.2虚拟机Linux系统启用FTP服务
2.6【案例实战】Hello World!两种编程方式
2.7要点巩固
2.8技术大牛访谈——Linux操作系统架构
第3章Linux嵌入式系统下编程
3.1小白也要懂——C语言的发展过程
3.2Linux系统下C语言的编程基础
3.2.1记住标识符
3.2.2C语言中的数据
3.2.3运算符和表达式
3.2.4C语言的三种基本结构
3.3Linux系统下C语言的进阶编程
3.3.1C语言的数组
3.3.2C语言的指针
3.3.3C语言的函数
3.3.4C语言的构造数据类型
3.4Linux系统下C语言的高阶编程
3.4.1C语言的文件操作
3.4.2C语言的队列操作
3.4.3C语言的链表操作
3.4.4C语言的排序算法
3.5【案例实战】学生成绩信息管理系统
3.6要点巩固
3.7技术大牛访谈——GNU C和标准C的差异
第4章Linux嵌入式硬件系统
4.1小白也要懂——微处理器字节序列存储的大小端模式
4.2嵌入式微处理器的系统架构
4.2.1冯·诺依曼计算机系统
4.2.2指令系统
4.2.3微处理器的内核架构
4.3嵌入式硬件系统的基本组成部分
4.3.1时钟系统
4.3.2中断系统
4.3.3总线
4.3.4存储系统
4.3.5嵌入式微处理器片上外部设备
4.4【案例实战】微处理器的两种编程方式
4.4.1微处理器裸机系统的GPIO操作
4.4.2微处理器移植Linux系统的GPIO操作
4.5要点巩固
4.6技术大牛访谈——嵌入式系统微处理器选型方案
第5章Linux嵌入系统之交叉编译
5.1小白也要懂——gcc编译器的工作流程
5.2Linux下gcc编译器的使用方法
5.3gdb调试工具的使用方法
5.4什么是交叉编译
5.5构建交叉编译工具链
5.6【案例实战】交叉编译工具链的下载与安装
5.7要点巩固
5.8技术大牛访谈——编译器和解释器的区别
第6章Makefile的基础知识
6.1小白也要懂——make命令的执行过程
6.2Makefile语法基础
6.3Makefile一般书写格式
6.4Makefile变量的引用与赋值
6.5Makefile模式规则与自动变量
6.6Makefile伪目标
6.7Makefile条件判断
6.8【案例实战】编写自己的Makefile文件
6.9要点巩固
6.10技术大牛访谈——Makefile 函数的使用
第7章Linux嵌入系统之U-boot
7.1小白也要懂——Bootloader与U-boot的区别
7.2U-boot概述
7.2.1选择正确的U-boot版本
7.2.2查看U-boot目录结构
7.3关于 U-boot的源代码编译与GUI界面
7.3.1编译 U-boot
7.3.2U-boot的GUI界面
7.4U-boot的Makefile代码分析
7.5U-boot启动流程
7.5.1U-boot启动阶段1
7.5.2U-boot启动阶段2
7.6【案例实战】IMX6ULL开发板移植U-boot
7.7要点巩固
7.8技术大牛访谈——U-boot在实际项目中的作用
第8章Linux嵌入式系统之内核
8.1小白也要懂——关于Linux体系结构和内核结构
8.2Linux内核的子系统
8.2.1虚拟文件系统
8.2.2进程管理子系统
8.2.3进程通信子系统
8.2.4内存管理子系统
8.2.5设备驱动子系统
8.3Linux内核的配置和编译
8.3.1选择正确的Linux内核
8.3.2编译Linux内核
8.3.3查看Linux内核的目录结构
8.3.4Linux内核的GUI界面
8.3.5Linux内核的镜像与Makefile
8.4Linux内核的启动过程
8.5【案例实战】IMX6ULL移植Linux内核
8.6要点巩固
8.7技术大牛访谈——浅析init进程
第9章构建嵌入式Linux根文件系统
9.1小白也要懂——Linux系统中的文件系统
9.2根文件系统概述
9.3Busybox安装与编译过程
9.3.1Busybox简介
9.3.2Busybox的安装与配置
9.3.3Busybox的编译
9.4构建根文件系统
9.4.1需要的库文件
9.4.2添加其他的文件操作
9.4.3优化根文件系统
9.5【案例实战】根文件系统的移植测试
9.6要点巩固
9.7技术大牛访谈——其他根文件系统的构建工具
第10章Linux嵌入式系统之设备驱动
10.1小白也要懂——设备驱动分类
10.2字符设备驱动的理论基础
10.2.1字符设备驱动的一般流程
10.2.2设备号
10.3编写字符设备驱动程序
10.3.1旧版本字符设备驱动程序
10.3.2新版本字符设备驱动程序
10.3.3字符设备驱动程序的通用操作
10.4【案例实战】字符设备驱动的移植测试
10.5要点巩固
10.6技术大牛访谈——块设备驱动概述
第11章Linux嵌入式系统之设备树
11.1小白也要懂——设备树的基础知识
11.2设备树的基础语法
11.2.1设备树节点
11.2.2节点属性
11.2.3设备树常用的操作函数
11.3基于设备树的pinctrl和gpio子系统
11.3.1pinctrl 子系统
11.3.2gpio子系统
11.4基于设备树的platform设备驱动
11.4.1platform驱动模型
11.4.2设备树下platform 驱动的编写
11.5【案例实战】基于设备树的platform设备驱动移植
11.6要点巩固
11.7技术大牛访谈——设备驱动的分层和分离思想
第12章Linux嵌入式系统之驱动技术
12.1小白也要懂——Linux系统下驱动程序框架概述
12.1.1驱动程序与系统的接口
12.1.2驱动程序加载到内核的流程
12.2Linux异常处理——中断处理
12.2.1中断API函数功能
12.2.2Linux内核中断机制
12.3Linux并发与竞争
12.3.1原子操作
12.3.2自旋锁
12.3.3信号量
12.3.4互斥体
12.4Linux阻塞和非阻塞IO
12.4.1阻塞IO策略的实现——等待队列
12.4.2非阻塞IO策略的实现——轮询
12.5【案例实战】按键中断实验
12.6要点巩固
12.7技术大牛访谈——file_operations结构体代码分析
第13章自动控制系统应用实例——自动浇灌系统
13.1小白也要懂——自动浇灌系统项目背景介绍
13.2自动浇灌系统的功能设计
13.3自动浇灌系统的硬件设计与实现
13.4自动浇灌系统的软件设计与实现
13.4.1驱动程序
13.4.2应用程序的编写
13.5自动浇灌系统的联合调试
13.6要点巩固
13.7技术大牛访谈——自动化控制系统的组成部分
第14章物联网应用实例——智能快递柜系统
14.1小白也要懂——智能快递柜系统项目背景
14.2智能快递柜系统的功能设计
14.3智能快递柜系统的硬件设计与实现
14.4智能快递柜系统的软件设计与实现
14.5智能快递柜系统的联合调试
14.6要点巩固
14.7技术大牛访谈——Linux嵌入式开发板串口驱动框架
第15章车联网应用实例——车身控制系统
15.1小白也要懂——车身控制系统项目背景
15.2车身控制系统的功能设计
15.3车身控制系统的硬件设计与实现
15.4车身控制系统的软件设计与实现
15.5车身控制系统的联合调试
15.6要点巩固
15.7技术大牛访谈——Linux系统下的CAN驱动框架
第16章人工智能应用实例——语音识别控制系统
16.1小白也要懂——语音识别技术
16.2语音识别控制系统的功能设计
16.3语音识别控制系统的硬件设计与实现
16.4语音识别控制系统的软件设计与实现
16.5【案例实战】语音识别控制系统的联合调试
16.6要点巩固
16.7技术大牛访谈——ReSpeaker 2Mics Pi HAT驱动环境的安装