HyperNews Linux KHG 讨论页面

设备驱动程序

如果您选择编写设备驱动程序,则必须将此处编写的所有内容仅作为指南,而不能作为其他用途。我无法保证本章没有错误,也无法保证即使您完全按照这些说明操作,也不会损坏您的计算机。虽然损坏的可能性很小,但我无法对此做出保证。我只能给您一个“万无一失”的建议:备份! 在测试新的设备驱动程序之前进行备份,否则您以后可能会后悔。

什么是设备驱动程序?
这个“设备驱动程序”到底是什么东西?这是一个非常简短的概念介绍。
用户空间设备驱动程序
并非总是需要编写“真正的”设备驱动程序。有时您只需要知道如何编写作为普通用户进程运行并仍然访问硬件的代码。
设备驱动程序基础知识
假设您需要编写“真正的”设备驱动程序,那么无论您要编写哪种类型的驱动程序,都需要了解一些知识。实际上,您可能需要了解您应该编写哪种类型的驱动程序...
字符设备驱动程序
本节包含特定于字符设备驱动程序的详细信息,并假定您了解上一节中的所有内容。
TTY 驱动程序
本节尚未编写。TTY 驱动程序是与内核通用 TTY 支持接口的字符设备,它们需要的不仅仅是标准的字符设备接口。如果有人可以写一篇关于如何将字符设备驱动程序附加到通用 TTY 层并提交给我以便包含在本指南中的文章,我将不胜感激。
块设备驱动程序
本节包含特定于块设备驱动程序的详细信息(惊喜!)
编写 SCSI 设备驱动程序
这是一篇由北卡罗来纳大学的 Rik Faith 撰写的技术论文。
网络设备驱动程序
Alan Cox 介绍了网络层,包括设备驱动程序。
支持功能
许多功能对各种驱动程序都很有用。这里总结了其中的一些。
转换内核空间中的地址
这是 Linus Torvalds 在 linux-kernel 邮件列表中关于如何在编写内核源代码(如设备驱动程序)时正确处理内存引用转换的帖子的编辑版本。
内核级异常处理
这是 Joerg Pommnitz 在 linux-kernel 邮件列表中关于新的(Linux 2.1.8)异常机制如何工作的帖子的编辑版本。

其他信息来源

现在也有很多关于编写 Linux 设备驱动程序的其他参考资料。我放了一些(现在已经有点过时了,但我认为仍然值得一读)我在 1995 年 5 月题为 编写 Linux 设备驱动程序 的演讲的笔记,该演讲专门针对作为内核运行时可加载模块实现的字符设备。

Linux Journal 杂志有一个长期连载的系列文章,名为 Kernel Korner,尽管名字有点古怪,但其中包含了很多有用的信息。该专栏中的一些文章可能在网上可以找到;其中大多数可以作为过刊购买。其中一个特别有用的系列文章,比我关于内核运行时可加载模块主题的 30 分钟演讲更详细,刊登在第 23、24、25、26 和 28 期。它们由 Alessandro Rubini 和 Georg v. Zezschwitz 撰写。第 29 期(截至撰写本文时)计划刊登一篇由 Alan Cox 撰写的关于编写网络设备驱动程序的文章。第 9、10 和 11 期是我撰写的关于块设备驱动程序的系列文章。

版权 (C) 1992, 1993, 1994, 1996 Michael K. Johnson, johnsonm@redhat.com。


消息

22. Question: DMA 到用户空间 作者:Marcel Boosten newer
21. Question: 设备驱动程序如何驱动其设备 作者:Kim yeonseop new
1. None: 无标题 new
20. Question: memcpy 错误? 作者:Edgar Vonk
19. Question: 无法处理内核分页请求 - 错误 作者:Edgar Vonk
17. Question: _syscallX() 宏 作者:Tom Howley
16. Question: MediaMagic 声卡 DSP-16。如何在 Linux 中运行。 作者:Robert Hinson
15. Question: mark_bh() 是做什么的? 作者:Erik Petersen
1. None: 无标题 作者:Praveen Dwivedi
14. Question: 3D 加速 作者:jamesbat@innotts.co.uk
13. Question: 设备驱动程序:/dev/radio... 作者:Matthew Kirkwood
12. None: 有人知道为什么内核在没有明显原因的情况下唤醒我的驱动程序吗? 作者:David van Leeuwen
11. Question: 获取与 64k 边界对齐的 DMA 缓冲区 作者:Juan de La Figuera Bayon
10. Question: 硬件接口 I/O 访问 作者:Terry Moore
1. More: 您有点困惑... 作者:Michael K. Johnson
9. Question: 有人了解 SIS 496 IDE 芯片组吗? 作者:Alexander
7. Question: 垂直回扫中断 - 我需要使用它 作者:Brynn Rogers
1. None: 您的选择... 作者:Michael K. Johnson
6. Question: 帮助使用 skb 结构 作者:arkane
5. Question: 中断共享? 作者:Frieder Löffler
1. Idea: 中断共享 - 可能 作者:Vladimir Myslik
-> More: 中断共享 - 如何处理网络驱动程序? 作者:Frieder Löffler
-> Feedback: 中断共享 101 作者:Christophe Beauregard
4. Question: “Linux 即将关闭”的设备驱动程序通知 作者:Stan Troeh
1. Note: 通过已打开设备的应用程序 作者:Michael K. Johnson
2. News: “Linux 即将关闭”的设备驱动程序通知 作者:Marko Kohtala
3. Question: waitv 是否被遵守? 作者:Michael K. Johnson
2. None: PCI 驱动程序 作者:Flavia Donno
1. Question: linux-2.0/drivers/pci/pci.c 中有 作者:Hasdi
1. Note: 回复:网络设备驱动程序 作者:Paul Gortmaker
1. More: 回复:网络设备驱动程序 作者:Neal Tucker
1. More: 网络驱动程序信息 作者:Neal Tucker
-> Idea: 急需网络驱动程序 作者:Paul Atkinson
2. Question: 传输功能 作者:Joerg Schorr
1. More: 回复:传输功能 作者:Paul Gortmaker
-> Question: Skbuff 作者:Joerg Schorr