我想在 linux os 中用 C 编写驱动程序,尽管我认为它非常困难。我可以得到一些关于如何开始或要遵循的书籍的提示吗?驱动可以从我的USB口到显卡!!
我知道我可以在哪里搜索书籍,我想知道我应该从哪些基础知识开始。我是否需要具备硬件知识以及哪些特定书籍适合像我这样的新手?
我想在 linux os 中用 C 编写驱动程序,尽管我认为它非常困难。我可以得到一些关于如何开始或要遵循的书籍的提示吗?驱动可以从我的USB口到显卡!!
我知道我可以在哪里搜索书籍,我想知道我应该从哪些基础知识开始。我是否需要具备硬件知识以及哪些特定书籍适合像我这样的新手?
从O'Reilly 出版的 Rubini 和 Corbet的Linux Device Drivers开始。
它还提供免费的 PDF 下载。
Rubini 和 Corbet 的“Linux 设备驱动程序”(O'Reilley 的书)是 Linux 设备驱动程序的权威书籍。
凉爽的!在罗迪的回答和克里斯蒂娜的评论中查看免费的 pdf 版本!
试试亚马逊!!那里有很多给司机看的书。有些有样品2!
几个文本:
在开始设计驱动程序之前,您应该首先获得出色的 C 技能,并且可能还需要一些 Linux 内核知识。设计驱动程序并非易事,如果您不习惯在低级别编程,可能会吓跑您。
如果您不习惯 C,我可能会推荐The C 编程语言,因为在我看来,如果您有一些编程背景,那么它是 C 的入门。
驱动程序的复杂性因设备而异。USB 驱动程序比较简单。GPU 驱动程序非常复杂,甚至这些驱动程序的作者通常也不知道他们所做的一切。我的建议是专注于您个人关心的硬件驱动程序,而不是试图成为一个万能的硬件;从长远来看,它会更容易。
其他人关于文档来源和各种要阅读的内容的答案都是正确的,您应该真正接受其中之一。
许多更复杂的驱动程序社区也有自己的特定领域信息。如果你想编写一个 GPU 驱动程序,DRI/DRM 和 Mesa 社区有他们自己的 wiki 和邮件列表,这将极大地帮助你,以及他们自己的文档。http://dri.freedesktop.org/是一个不错的起点,http://wiki.x.org/ 也是如此。
希望这可以帮助!
你这里有一个很好的例子
只需查看当前驱动程序的源代码即可。我只通过阅读代码上方的注释来编写我的 usb rndis 驱动程序。
获取内核源代码并查看 /drivers 目录。usb 驱动在 usb 目录中,但是关于网络的 usb 驱动驻留在 /net/usb 中。
你可以通过阅读评论学到很多东西。