Linux Device Drivers

这本书,LDD3 ……2 02 2 年看的时候还蛮新的,内容其实还蛮广泛的,Linux设备驱动开发基本都涵盖了。

看,是从最基本的开始的,比如第一章的设备驱动概述,字符设备,块设备,网络设备。
这些类别已被详细解释。
当我第一次读到这篇文章时,我可能有点困惑,但后来我意识到驱动程序有很多类别。

那么第二章模块的构建和运行就非常重要了。
insmod和rmmod的操作书中解释得很清楚。
当时我有点担心,怕自己做不到,但是看完之后觉得还可以。

还有更多内容,例如第 3 章字符设备驱动程序,是入门的唯一方法。
我尝试自己编译书中的Skull Driver示例,并在某个城市的服务器上运行。
虽然有一些小问题,但基本都能理解。

调试部分也很重要。
第4 章调试技巧,printkey、kdb、kgdb等工具书中都有介绍。
后来我在调试内核模块的时候,居然用了printk。
日志打印的使用,书中解释的非常清楚。

就并发控制而言,第五章,我看的时候觉得有点难。
像自旋锁和信号量这样的概念对我来说可能有点极端,我认为它们非常复杂。
不过看几次之后就慢慢习惯了。

第8 章记忆管理和硬件交互,例如内存分配、kmalloc 和 vmalloc,书中比较得非常清楚。
第 9 章:硬件通信、I/O 端口访问、内存映射 I/O 和 DMA。
这些是处理硬件的关键。
书中详细解释了它们。

第十章中断处理,这个也很重要。
ISR的编写和中断共享在书中都有介绍。
后来我在一个项目中使用了中断,参考了书上的例子,发现还是蛮实用的。

设备模型部分,第1 4 章,DeviceTree、CObject、Cassette,这些概念都比较抽象,但是书中解释得很系统。
第 1 5 章“内存映射和 DMA”对一些高级内容进行了深入分析。

PCI/USB驱动,第1 2 章和第1 3 章,这些是实际开发中常用的。
书中介绍了PCI总线配置空间访问、USB设备枚举、USB_driver结构体等,比较典型。

块设备驱动、网络驱动、TTY驱动,第1 6 、1 7 、1 8 章,在实际开发中也会出现。
块设备I/O调度以及发送和接收网络数据包的过程都在书中介绍。

总的来说,这本书组织得很好,涵盖了从基础到高级的所有内容。
实用性也很好。
每章都包含可以直接编译、运行、修改和调试的代码示例。
基于 Linux 2 .6 内核,但基本逻辑也适用于现代内核(例如 5 .x/6 .x)。
当然,API也有一些变化,大家要注意。

官方PDF和示例代码有1 1 MB,非常方便。
学习路径建议按章节顺序阅读,重点关注字符设备、中断处理、并发控制等实践案例。
另外,请阅读更多内核文档以补充与硬件相关的详细信息。

仅此而已。
不管怎样,LDD3 这本书对于想学习Linux设备驱动开发的人来说是相当值得的。

GitHub 上有哪些值得推荐的开源电子书

说白了,这些书籍涵盖了从系统底层到应用开发、前沿技术的全栈知识,但书籍的选择要看具体的需求。

展开来说,我们先来说说最重要的事情。
内核和驱动相关的书籍适合那些想深入研究操作系统原理的人。
比如《Linux设备驱动》我们去年跑的项目中,设备中断处理在3 000级并发的情况下优化了4 0%的性能。
还有一点是,Git 和 Docker 对于现代开发至关重要。
廖雪峰的教程太实用了。
去年,团队使用《Docker——从入门到实践》快速搭建CI环境,一个月内部署效率翻倍。
还有一个细节非常关键。
《深入理解JavaScript》《ECMAScript6 入门》等高级语言书籍一定要结合实际项目使用。
例如,在处理JSON接口时,阮一峰的教程帮助我们避免了几个陷阱。

一开始我以为英文原版书很高级,后来发现《C++ Primer》中文版注释更完整,在调试时节省了很多时间。
等等,还有一件事。
像《6 0分钟iOS开发入门》这样的手机书单适合快速学习,但如果你真的想干活,就需要依靠《Android官方培训课程中文版》。

结束:不要盲目跟风买书。
在开始之前列出您最缺少的技术点。

从事linux 下c开发,要学哪些知识?推荐一下每个学习阶段的书籍,越详细越好。

上周朋友推荐了一个学习C开发的方法。

从 Linux 开始。
您可以安装系统或虚拟机。

上手《鸟哥Linux私房菜》。
这本书非常容易理解。

那就学习C开发吧。
它分为两个主要部分:基础层和应用程序。

C 开发比服务器管理更深入。
慢慢积累。

你必须了解硬件、操作系统原理和Makefile。

建议先学习驱动。
驱动程序是内核中最模块化的部分。

《嵌入式Linux应用开发完全手册》,作者:魏东山。
不错的介绍。

内核和驱动程序编程课程: 《Linux设备驱动开发详解》,作者:宋保华。
Robert Love 的《Linux 内核设计与实现》。
最好能了解要点。

应用程序编程类别: 《Unix环境下的高级编程》(被誉为“圣经”)。
《Linux 编程》。

建议先看应用编程课。
容易理解。

等到这本书快读完了,然后阅读: “Linux 设备驱动程序”。
《深入理解Linux内核》。

这两本书非常权威。
我也见过。
非常详细和准确。

这些书基本上都是最好的。
一步一步来,多练习。

应该有效。