Raj*_*lli 35 linux-device-driver
我想学习linux内核设备驱动程序编程.所以任何人都可以在这里发布好的教程页面或链接.我是linux内核环境的新手.我已经搜索了它,但我不知道如何开始以及阅读哪一个以便于理解基础知识.提前致谢.
eep*_*epp 49
取决于你目前的技能.如果您真的是Linux的新手,也许您应该从使用高级Linux编程的用户空间系统编程开始.通过这个免费资源,您将熟悉Unix系统调用和其他概念,如信号,进程/线程等.如果您正在内核上进行开发,那么这是必须的(了解用户空间API),因为内核的角色是以安全的方式向用户提供服务.
否则,经常被引用的书是Linux设备驱动程序,第三版(LDD3).请记住,此版本是在Linux 2.6.10时编写的,从那时起一些事情发生了变化.本文展示了差异为2.6的演变(直到2.6.31,即不太有用).我应该提到martinezjavier/ldd3,其中包含为更新近的内核更新的LDD3的示例驱动程序(感谢42n4指出了这一点).
另一本不常被引用的有趣的书是Essential Linux Device Drivers.你不会找到这个版本的免费版本,但它仍然有一个有趣的方法.我喜欢这个是它涵盖了许多不同的设备类型,并且从2.6.24开始是最新的,这比LDD好一点.
最后,关于内核本身(不是专门针对驱动程序)的一本好书是了解Linux内核,第3版.这包括深入的内核工具和内部机制.它是2.6.11的最新版本.
至于在线教程,我发现Pete博客上的这篇文章是一个非常好的例子.它不仅展示了如何创建一个角色设备(最简单的内核驱动程序类型,即你应该开始使用的那个),它还以易于理解的方式使用现代Linux内核功能,包括:
insmod 另外:它的目标是Linux 3.0,这意味着它与其他资源相比更新.
您可能也喜欢这篇关于如何手动创建Sysfs条目的帖子,尽管如果您不需要其他节点或属性,Linux设备模型将负责将您的设备注册为Sysfs条目.
编辑:我应该补充一点,学习真正的Linux设备驱动程序编程的最佳方法是查看实际的驱动程序.有成千上万的司机drivers.开始阅读和理解简单的概念,drivers/leds你会看到这是多么有益.
42n*_*2n4 12
该网站有非常重要的链接:http: //elinux.org/Device_drivers
带有真实示例的精彩教程(以我们自己的文件系统格式化的usbpen结尾 - 搜索作者更多文章):
着名的LDD3书的源代码移植到最新的内核:https: //github.com/martinezjavier/ldd3/
视频:
也许其他资源:
一些例子:
书籍(在这个帖子中没有提到LDD3):
KernelHacking:http://kernelnewbies.org/KernelHacking
linux内核的可视化地图:http://www.makelinux.net/kernel_map/
适合初学者的Linux和内核书籍:
| 归档时间: |
|
| 查看次数: |
31648 次 |
| 最近记录: |