我想在Linux操作系统中使用C语言编写驱动程序,尽管我认为它很难。我可以获得一些关于如何开始或书籍的提示吗?驱动程序可以从我的USB端口到显卡!!
我知道在哪里可以搜索书籍,我想知道我应该从哪些基本知识开始。我是否需要具备硬件知识,哪些特定书籍对我这样的新手有用?
答案 0 :(得分:19)
由O'Reilly出版的Rubini和Corbet的 Linux Device Drivers 开始。
它也可以作为free PDF download。
答案 1 :(得分:7)
"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)
你在这里有一个非常好的例子
答案 7 :(得分:0)
只需查看当前驱动程序的源代码即可。我只是通过阅读代码上方的注释来编写我的usb rndis驱动程序。
获取内核源代码并查看/ drivers目录。 usb驱动程序在usb目录中,但是关于网络的usb驱动程序位于/ net / usb。
您可以通过阅读评论来学习很多内容。