Skip to content

《嵌入式Linux入门与实践》一书大纲

Notifications You must be signed in to change notification settings

cststudio/ebook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 

Repository files navigation

《嵌入式Linux入门与实践》

李迟 著

前言

参见:前言  

第一部分 基础概念篇

第1章 嵌入式Linux基础概念

本章介绍嵌入式Linux是什么,由哪些部分构成,该怎么学,以及本书使用的实验平台

1.1 嵌入式Linux是什么

1.2 嵌入式Linux由哪些部分组成

1.3 如何学习嵌入式Linux

注:入门路线

1.4 其它知识点补充

1.5 本书代码示例说明

(使用ubuntu+qemu,另在实际板子(s3c2440或rk3188)上运行)

1.6 本书实验平台说明

讲qemu以及vexpress-a9板子介绍,不讲qemu的命令选项

1.7 本章小结

第二部分 系统使用篇

第2章 Linux系统的安装——基于Ubuntu16.04

本章介绍ubuntu16.04安装的过程

2.1 使用虚拟机VMware Workstation安装Ubuntu

(图解安装过程,添加说明)

2.2 安装Ubuntu后要做的配置

2.2.1 设置源

2.2.2 安装必备软件

(分类说明要安装的软件及作用,这是总述的,后面涉及时再重重一次)

2.2.3 本书宿主机操作说明

2.3 拓展思考

2.4 本章小结

第3章 Linux系统使用

本章讲解Linux系统的使用,虽然是基于ubuntu,但大部分内容也适用于其它Linux发行版本

3.1 Linux系统目录

3.1.1 /dev目录

3.1.2 /lib目录

3.1.3 /usr目录

3.1.4 /var目录

3.1.5 /proc目录

3.1.6 /sys目录

(与后面内核驱动开发有关联)

3.2 Linux命令

3.2.1 基本命令

coreutils 常见的、核心的命令

3.2.2 编辑相关命令

vim emacs sed awk 等

3.2.3 编译相关命令

只简单提及,后面重点介绍binutils

3.2.4 压缩解压命令

tar zip

3.2.5 系统相关命令

3.2.6 联机帮助命令

man --help -h等等

3.2.7 其它命令

有趣的命令

3.2.8 命令快捷键

3.2.9 命令使用经验

3.3 shell脚本

3.3.1 shell脚本及属性

unix格式、+x

3.3.2 管道使用

3.3.3 shell简单编程

for if等

3.4 系统配置

3.4.1 环境变量

PATH、LD_LIBRARY_PATH、locale,HOME、自定义变量等

3.4.2 /etc目录配置文件

(环境变量、/etc/文件配置(issue显示字符串、主机别名(lserver)))

3.5 软件安装

3.5.1 dpkg方式安装

3.5.2 apt方式安装

3.5.3 源码安装

deb包 apt-get install 源码编译

3.6 更新Linux内核

3.6.1 使用官方的内核镜像文件

3.6.2 自定义编译内核

3.7 自定义构建Linux系统

3.7.1 debootstrap

3.7.2 LFS

3.8 拓展思考

(讲如何慢慢积累命令行,没有基础不要紧,缺什么补什么)

3.9 本章小结

第4章 嵌入式Linux开发环境搭建

本章描述开发环境的搭建,涉及到Windows和Linux系统的工具安装、使用。
原则上,哪些工具适合使用,就用哪些,不要只局限于某一个系统。提高工作效率才是王道。

4.1 嵌入式Linux开发概述

(描述编写代码、编译代码、运行代码过程)

4.2 Windows系统所需工具

4.2.1 综合类

4.2.2 编辑类

4.2.3 连接工具类

(source insight、notepad++、secureCRT)

4.3 Linux系统所需服务

(前面已经安装好Linux系统)

4.3.1 SSH

4.3.2 Samba

4.3.3 NFS

4.3.4 FTP

4.3.5 Telnet

4.4 拓展思考

4.5 本章小结

(固定好IP地址,设置好这些服务,本书一直会使用)

第三部分 Linux应用开发篇

第5章 Linux系统自动化编译和Makefile

本章介绍Linux系统编译的方法,以及制作交叉编译器,并且给出适用性较强的Makefile模板。

5.1 Linux下工具、库编译方法

5.1.1 下载源码

5.1.2 编译三步曲

5.1.3 编译配置实例

5.2 安装交叉编译器

5.2.1 使用现成交叉编译器

5.2.2 自制交叉编译器

5.3 Makefile

5.3.1 Makefile基础知识

(介绍makefile基础内容)

5.3.2 在Makefile中执行shell命令

5.3.3 Makefile模板实例

5.4 拓展思考

5.5 本章小结

第6章 程序的编译、链接和运行

了解程序的生命周期十分重要,背后的原理虽然复杂,但了解这些原理,能大大提高“内功”,做到知其然,知其所以然。 有点复杂,有点难,希望读者能回过头来再重新读读本章

6.1 概述

6.2 helloworld全面追踪——程序构建的过程

6.2.1 预编译

6.2.2 编译

6.2.3 汇编

6.2.4 链接

6.3 Linux二进制工具(Binutils)

6.3.1 ar

6.3.2 nm

6.3.3 strings

6.3.4 strip

6.3.5 objcopy

6.3.6 objdump

6.3.7 readelf

6.3.8 size

6.3.9 ld

6.4 目标文件格式

6.4.1 目标文件格式分类

6.4.2 ELF格式

6.4.3 符号修饰

6.4.4 静态库

6.4.5 动态库

6.5 helloworld全面追踪——程序运行的过程

6.5.1 进程空间

6.5.2 栈

6.5.3 堆

6.5.4 Linux装载ELF文件过程

6.6 helloworld全面追踪——C库到内核层

6.6.1 glibc

6.6.2 Linux系统调用

6.6.3 硬件输出

注:以printf带动系统调用这一过程 行文注意与后面串口驱动分析有衔接

6.7 拓展思考

6.8 本章小结

第7章 应用程序开发

应用程序开发包括的内容很多,本章只讲一些常见的模块,其它需要时再学,另外还涉及到编码风格,编程原则

7.1 概述

7.2 编程规范

7.2.1 编码风格

原则:入乡随俗,三种风格 Windows格式、Camel格式、linux格式

7.2.2 编程原则

7.3 C标准库

7.4 C++标准库

7.4 Linux应用层模块分类

7.4.1 文件IO编程

7.4.2 多进程编程

7.4.3 多线程编程

7.4.4 信号处理编程

7.4.5 串口编程

7.6 拓展思考

7.7 本章小结

第8章 调试方法

本章讲述调试的方法,一般来说,调试就是用gdb进行,但是,还有很多种手段能减少程序出错。

8.1 使用printf打印跟踪流程

8.1.1 打印跟踪优点和缺点

8.1.2 自定义打印日志系统

8.2 消除gcc编译警告

注:从代码源码把控  

8.2.1 零编译警告的必要性

8.2.2 未使用变量

8.2.3 运算符优先级不明确

8.2.4 类型不匹配

8.2.5 打印格式化混乱

8.2.6 其它编译警告

针对gcc编译设置的警告

8.3 C/C++代码静态检查

8.4 gdb调试

8.4.1

8.5 利用coredump文件调试

8.5.1 生成coredump文件前置条件

8.5.2 段错误调试实例

8.5.3 嵌入式设备上coredump调试经验

8.6 拓展思考

8.7 本章小结

第四部分 嵌入式Linux移植篇

第9章 嵌入式Linux移植总览

本章从较高层面讲述移植的过程,涉及的内容,最后分享作者的经验。

9.1 概述

9.2 嵌入式Linux移植

9.2.1 bootloader移植

9.2.2 Linux内核移植

9.2.3 根文件系统移植

9.3 宿主机与目标板共享的几种方式

9.3.1 NFS

9.3.2 SSH

9.3.3 FTP

9.3.4 硬件介质:U盘和SD卡

9.4 qemu模拟环境

9.4.1 qemu介绍

9.4.2 qemu选项介绍

9.5 嵌入式Linux开发实践

9.5.1 嵌入式Linux移植实践经验

注:厂商提供有BSP包,直接使用

9.5.2 嵌入式Linux应用开发实践经验

注:如何将helloworld放到系统里面

9.5.3 如何阅读芯片手册

9.5.4 如何阅读开源代码

9.6 几种嵌入式Linux平台的开发环境介绍

9.6.1 三星s3c2440(samsung)

9.6.2 德州仪器dm8127(TI)

9.6.3 瑞芯微rk8188(rockchip)

9.6.4 赛灵思zed board(Xilinx)

9.6.5 x86工控机

9.7 拓展思考

9.8 本章小结

第10章 bootloader移植

本章讲bootloader的移植,包括u-boot和coreboot,使用qemu模拟环境进行实验。

10.1 u-boot

10.1.1 u-boot概述

10.1.2 u-boot目录说明

10.1.3 u-boot编译

10.1.4 u-boot在qemu环境的启动

10.1.5 u-boot启动流程

10.1.6 在u-boot中新加命令

10.1.7 u-boot进程空间

10.2 coreboot

10.2.1 coreboot概述

10.2.2 coreboot目录说明

10.2.3 coreboot编译

10.2.4 coreboot在qemu环境的启动

10.2.5 coreboot启动u-boot

10.2.6 coreboot启动流程

10.3 拓展思考

10.4 本章小结

第11章 Linux内核移植

本章讲述Linux内核的移植。主要涉及内核配置、编译和加载的过程。

11.1 内核目录说明

11.2 内核配置编译步骤

(与x86平台更新的联系和区别)

11.3 内核在qemu环境的启动

11.4 内核编译常见错误

11.5 内核配置(menuconfig)选项说明

11.5.1 常规设置

11.5.2 CPU设置

11.5.3 网络协议设置

11.5.4 驱动设置

11.6 内核Makefile与Kconfig文件

11.7 添加自定义驱动

11.7.1 helloworld设备驱动

11.7.2 将驱动编译进内核

11.7.3 将驱动编译为ko文件:独立目录

11.7.4 将驱动编译为ko文件:使用内核目录

11.7.5 驱动的加载、卸载过程

11.8 内核启动过程

11.9 拓展思考

11.10 本章小结

第12章 根文件系统移植

本章讲述根文件系统构建。

12.1 根文件系统概述

12.2 busybox

(注意说明与前面的linux目录的联系和差异)

12.3 busybox编译

12.4 构建Linux根文件系统

12.4.1 构建/bin目录

12.4.2 构建/etc目录

12.4.3 构建/lib目录

12.5 根文件系统启动流程

12.5.1 系统级别启动过程

12.5.2 用户级别启动过程

12.6 制作ramdisk镜像文件

12.7 在qemu挂载rootfs

12.8 拓展思考

(描述其它格式的images制作)

12.9 本章小结

第13章 Linux驱动开发

本章讲述Linux驱动的开发,Linux驱动有很多模块,只挑选一些基础的有代表性的例子进行讲解。 注:注意说明与前面章节的区别

13.1 驱动分类概述

13.3 platform设备驱动实例

13.4 platform设备驱动流程跟踪

13.5 字符设备驱动流程跟踪

注:使用open、write、read、close、ioctl接口

13.6 异步通信驱动实例

13.7 用户空间与内核空间之间的交互方式

13.7.1 sys文件系统

13.7.2 proc文件系统

注:sys、proc文件系统驱动示例

13.8 看门狗驱动分析

13.9 实时时钟驱动分析

13.10 串口驱动分析

注:使用板子做示例,配合芯片手册阅读代码

13.11 Linux驱动常见错误

13.12 Linux其它驱动学习建议

13.13 拓展思考

13.14 本章小结

(第五部分 补充部分 注:可能删除)

第14章 版本管理工具git

(说明为什么要使用git,本书代码、勘误也使用git。
公司会使用,多人协作
个人日常学习也可以使用
每个应用命令,都使用windows工具和linux命令行 )

14.1 版本管理工具概述

(重要性、必要性、本章术语约定)

14.2 git应用场景

(本地仓库、远程仓库)

14.2 Windows系统下TortoiseGit的安装

14.3 Linux系统下Git的安装

14.4 入门使用

(填写账号和邮箱,建立仓库、克隆仓库、提交仓库、查看修改、撤销修改)

14.5 Linux系统下Git服务器搭建

14.5.1 Git服务器搭建过程

14.5.2 Git权限控制

14.5.3 使用ssh密钥登陆Git服务器

14.5.4 使用账号密码登陆Git服务器

14.6 分支

14.6.1 创建分支

14.6.2 冲突及冲突解决

14.6.3 分支管理

14.7 标签

14.8 远程仓库

14.8.1 添加远程仓库

14.8.2 克隆远程仓库

14.8.3 推送到远程仓库

14.9 其它用法

14.9.1 忽略指定文件和目录

14.9.2 子仓库

14.9.3 Git命令别名

14.10 国内外常见的Git托管网站

github gitlab bitbucket gitee

14.11 Git应用实践经验

(介绍个人实际使用Git的经验)

14.12 拓展思考

(自行搭建本地git仓库(gitlab)、参与github开源项目、使用Gerrit)

14.13 本章小结

About

《嵌入式Linux入门与实践》一书大纲

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published