简介

在这篇文章中,我介绍了和linux相关的一些书籍和他们的主要内容

感谢

书籍

“Mastering Embedded Linux Programming”

这本书的特点就是各种嵌入式开发的流程和工具的使用,它不是那种讲很多代码和原理的类型,相当的工具化,是可以自己动手跟着做实验的那种类型了。

而且是基于5.4内核,而且使用树莓派4作为硬件

主要内容:交叉编译工具链,bootloader,如何配置和构建kernel,构建根文件系统,构建工具yocto的使用,busybox的使用,嵌入式的电源管理,使用gdb调试等

目录如下

  1. Starting Out
  2. Learning about Toolchains
  3. All about Bootloaders
  4. Configuring and Building the Kernel
  5. Building a Root Filesystem
  6. Selecting a Build System
  7. Developing with Yocto
  8. Yocto Under the Hood
  9. Creating a Storage Strategy
  10. Updating Software in the Field
  11. Interfacing with Device Drivers
  12. Prototyping with Breakout Boards
  13. Starting Up – The init Program
  14. Starting with BusyBox runit
  15. Managing Power
  16. Packaging Python
  17. Learning about Processes and Threads
  18. Managing Memory
  19. Debugging with GDB
  20. Profiling and Tracing
  21. Real-Time Programming

“The linux programming interface”

这个的内容相当基础,相当纯粹,就是介绍了linux的系统调用,介绍了大量的系统api要如何使用,是初学者不可缺少的书籍。

而且有配套代码,也是相当实用的类型,跟着自己敲一边,测试这些api的功能,相当有趣,我就是这样做的。

Linux kernel development

看名字就知道,讲的内核的内容,这本书基于2.6.34的内核

内容:进程管理,文件系统,内核数据结构,内核同步机制等

都比较基础,主要是内核的几个子系统的一个大概的简介,相当的粗糙,这是一本内核的最简单的书。它没有对某一个子系统进行细致全面的解释,但是它覆盖的范围很广。从它的中文版只有三百多页,就可以看出来。

一般来讲,对于某一个子系统,比如进程管理,它会介绍相关的原理,然后是涉及到的内核源码中的主要结构和主要接口

缺点:没有能够跟着操作的源代码,相当理论向的,几乎完全没有实操的部分,而且内核版本也很久了

Linux device drivers development

看名字就知道,这是一本专注于讲linux设备驱动开发的书,没错了,这里面的主要内容就是将各种设备的开发,像是iic,spi,dma,gpio等等

使用的内核版本未4.13,设备是imx6,发行版是ubuntu16.04,并且有完全的源码支持,甚至还有彩色的插图可以下载

https://static.packt-cdn.com/downloads/LinuxDeviceDriversDevelopment_ColorImages.pdf

是可以跟着做的实用类型,非常不错

1

Linux device drivers

这本书相当的理论向,非常厚重,介绍了几乎所有内核源码设备驱动的重要的数据结构和api等等,有点像是api手册,不过是关于linux 内核中设备驱动的部分啦!哈哈

同时,这本书的源码版本也是比较旧了,是2.6.10

增长驱动开发的理论知识,一定是需要的,解释的很清楚很全面

Linux kernel programming

这是两本书,用5.4内核,不需要额外的硬件支持,只需要虚拟机。非常详细,手把手的教,代码和插图等等都非常全面。

主要内容:如何构建内核,写内核模块,如何在内核中分配空间,内核同步,内核中的cpu调度,如何写字符设备驱动,如何处理硬件中断

目录如下

2

3

Mastering linux device driver development

这不是一本入门的书籍,如果你需要使用到相关的内容,那才会需要这本书,比如MFD,ALSA,V4L2,PCI,NVMEM等

目录如下

4