如何开始编写驱动程序?

如何开始编写驱动程序?

我有一台废弃的廉价笔记本电脑,我想摆弄一下,它是 Thinkpad SL 500。

令我困扰的是两个 LED,一个用于无线连接,一个用于休眠,虽然它们可以正常工作,但根本不亮,我已经在 Windows 上尝试过了。

所以我想为它们编写一个内核驱动程序,没什么大不了的,只是看起来是一个玩弄内核的好主意。

我的问题是我应该系统地遵循什么方法来找出哪些设备负责这些 LED(一般来说,不一定特定于我的硬件),哪些驱动程序负责另外两个工作的 led,蓝牙和电池指示器?

当我说方法论时,我真正指的是方法论,一步一步,每一步都有原因,就像我在这里给其他人的答案一样:void *p = &&abc; 中 && 是什么意思?

我擅长使用静态代码分析器等通过大型代码存储库进行 fgrepping,但我认为我缺乏硬件知识阻碍了我解决这个问题。

PS:我使用的是ArchLinux,所以几乎是最新的内核版本。

答案1

我应该系统地遵循什么方法来找出哪些设备负责这些 LED?

理想情况下,您应该找到您的笔记本电脑 LED 正在其上工作的内核操作系统的(开放)源代码,然后您可以将内核的一部分注释掉,直到找到负责 LED 的代码(并且有一些系统会冻结这样做,但这是有趣的部分)。

如果 LED 在 Linux 上不起作用,并且您不知道在其他操作系统上哪个硬件正在驱动它们,您认为如何编写驱动程序?

恐怕这是任何人都能给出的最佳答案,而这使你(几乎)并不比以前更聪明。只是指出您需要准确找出您拥有哪些硬件,以便能够做更多事情。

为了获得更多帮助,有两点:

  1. 常用的 IDE 或 SATA 芯片之一是 Intel 的 ICHX 或 ICHXr 系列(ICH5、ICH6、ICH7...或 ICH6R、ICH7R...)。

  2. Linux 内核目录中包含用于控制大量 LED 的源代码

我也会给你第三个指针,但是正如这个高尔基皮已经在上面写的那样,我可以重复一遍:Linux 设备驱动程序,第 3 版,PDF 格式,免费。

相关内容