我对以下内容有基本的了解:
- 如何阅读硬件设备数据表
- 硬件设备在理论上是如何工作的
- 设备驱动程序有什么作用
- C 编程的一般概念
- 操作系统
我一直相信,如果我能理解给定设备驱动程序的所有代码,并最终能够在上面的帮助下(不看源代码)从头开始编写相同的代码,我将能够获得一个非常好的了解 C 语言以及设备驱动程序如何工作以及如何与操作系统交互。对我来说,这将是我职业生涯中的一个重要里程碑。
所以,在过去的几年里,我一直想学习如何编写设备驱动程序(主要用于 Linux 操作系统)。我总是怀着极大的热情开始(这至少发生了 6-7 次),然后挑选一些好的在线资源并阅读它们。然后我从 Linux 内核中获取一个现有的驱动程序代码(比如以太网驱动程序代码),获取一个数据表并开始阅读驱动程序代码,但是在阅读了几行之后,我有点困惑,然后最终放弃了,因为我无法遵循其余的代码。
我的问题:我知道这样的教程好得令人难以置信,但我仍然想问 - 有没有人知道一个很好的资源,它解释了 Linux 设备驱动程序是如何从数据表的详细参考开始以及现有的与它相关的代码,然后解释每个功能/代码块为什么它存在以及它究竟做了什么。