9

我想在 linux os 中用 C 编写驱动程序,尽管我认为它非常困难。我可以得到一些关于如何开始或要遵循的书籍的提示吗?驱动可以从我的USB口到显卡!!

我知道我可以在哪里搜索书籍,我想知道我应该从哪些基础知识开始。我是否需要具备硬件知识以及哪些特定书籍适合像我这样的新手?

4

8 回答 8

19

从O'Reilly 出版的 Rubini 和 Corbet的Linux Device Drivers开始。

它还提供免费的 PDF 下载

于 2009-06-10T14:00:20.327 回答
7

Rubini 和 Corbet 的“Linux 设备驱动程序”(O'Reilley 的书)是 Linux 设备驱动程序的权威书籍。

凉爽的!在罗迪的回答和克里斯蒂娜的评论中查看免费的 pdf 版本!

于 2009-06-10T13:59:44.150 回答
5

试试亚马逊!!那里有很多给司机看的书。有些有样品2!

于 2009-06-10T13:58:03.547 回答
5

几个文本:

于 2009-06-10T16:05:27.330 回答
3

在开始设计驱动程序之前,您应该首先获得出色的 C 技能,并且可能还需要一些 Linux 内核知识。设计驱动程序并非易事,如果您不习惯在低级别编程,可能会吓跑您。

如果您不习惯 C,我可能会推荐The C 编程语言,因为在我看来,如果您有一些编程背景,那么它是 C 的入门。

于 2009-06-10T15:27:20.307 回答
3

驱动程序的复杂性因设备而异。USB 驱动程序比较简单。GPU 驱动程序非常复杂,甚至这些驱动程序的作者通常也不知道他们所做的一切。我的建议是专注于您个人关心的硬件驱动程序,而不是试图成为一个万能的硬件;从长远来看,它会更容易。

其他人关于文档来源和各种要阅读的内容的答案都是正确的,您应该真正接受其中之一。

许多更复杂的驱动程序社区也有自己的特定领域信息。如果你想编写一个 GPU 驱动程序,DRI/DRM 和 Mesa 社区有他们自己的 wiki 和邮件列表,这将极大地帮助你,以及他们自己的文档。http://dri.freedesktop.org/是一个不错的起点,http://wiki.x.org/ 也是如此

希望这可以帮助!

于 2011-03-13T19:47:11.670 回答
1

你这里有一个很好的例子

http://www.linuxjournal.com/article/7353

于 2009-08-28T15:02:29.420 回答
0

只需查看当前驱动程序的源代码即可。我只通过阅读代码上方的注释来编写我的 usb rndis 驱动程序。

获取内核源代码并查看 /drivers 目录。usb 驱动在 usb 目录中,但是关于网络的 usb 驱动驻留在 /net/usb 中。

你可以通过阅读评论学到很多东西。

于 2009-08-02T20:05:27.153 回答