【问题标题】:Writing end to end linux device driver编写端到端的Linux设备驱动程序
【发布时间】:2016-04-11 08:34:00
【问题描述】:

我期待学习编写一个典型的 linux 设备驱动程序。谁能指导我如何学习典型 linux 设备驱动程序的所有方面?我在互联网上看到的例子太简单了,它们只是从用户空间向内核驱动模块发送一个“hello world”消息,然后回显“hello”。我想以一种简单的方式触及几乎所有领域,这是在编写一个真实世界的驱动程序时会遇到的。我需要一个真正的硬件来满足我的要求吗?系统内存不能模拟硬件外围设备,让我将其视为硬件并通过涵盖良好操作集的内核驱动程序来控制它吗?对此有任何示例/指导吗?

【问题讨论】:

  • 阅读 linux 设备驱动手册。它是免费的,并且有很好的简单示例。它有点过时了,但肯定会让你继续前进。 lwn.net/Kernel/LDD3

标签: linux kernel driver device


【解决方案1】:

看看下面的网络驱动例子。它使用 QEMU 进行开发和测试。

http://www.codeproject.com/Articles/1087177/Linux-Ethernet-Driver-using-Qemu

【讨论】:

    【解决方案2】:

    示例驱动程序通常不控制真实硬件。我猜这里提到的 QEMU 答案是一个很好的例外。

    这取决于您要关注的驱动程序类型。与内核一起分发的大多数驱动程序类别都有一些更简单的驱动程序可供您学习。例如 Nbd 非常适合块子系统和循环设备:

    https://github.com/torvalds/linux/blob/c05c2ec96bb8b7310da1055c7b9d786a3ec6dc0c/drivers/block/nbd.c

    查看驱动程序/xyz 目录中最小的文件大小,直到代码太复杂为止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多