如何编码驱动程序?

时间:2009-06-10 13:55:35

标签: c driver linux-device-driver

我想在Linux操作系统中使用C语言编写驱动程序,尽管我认为它很难。我可以获得一些关于如何开始或书籍的提示吗?驱动程序可以从我的USB端口到显卡!!

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

8 个答案:

答案 0 :(得分:19)

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

它也可以作为free PDF download

答案 1 :(得分:7)

Rubini和Corbet的

"Linux Device Drivers"(O'Reilley一书)是Linux设备驱动程序的权威书籍。

酷!请参阅Roddy的答案中的免费pdf版本&克里斯蒂娜的评论!

答案 2 :(得分:5)

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

答案 3 :(得分:5)

几个文本:

答案 4 :(得分:3)

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

如果您不熟悉C,我可能会推荐The C programming Language,在我看来,如果你有一些编程背景,我会推荐C语言。

答案 5 :(得分:3)

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

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

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

希望这有帮助!

答案 6 :(得分:1)

你在这里有一个非常好的例子

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

答案 7 :(得分:0)

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

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

您可以通过阅读评论来学习很多内容。