【问题标题】:Writing USB Device Driver in Linux在 Linux 中编写 USB 设备驱动程序
【发布时间】:2011-05-12 04:51:54
【问题描述】:

ALSA 或 libusb api 是两种选择;两者对我来说都是新的;自从我为 80 年代的 Unix 编写设备驱动程序以来已经有好几年了,但我确实知道,一旦我知道要使用什么工具,我就可以弄清楚如何使用,我猜它们仍然使用 C;我看过 libusb api;非常好;但我对 ALSA 项目一无所知;似乎他们正准备将模块放入内核以实现这一目标。

这是一个笼统的问题,但我感兴趣的设备是 Roland GR-55;它具有来自同一 USB 连接的 MIDI 和音频;它有 Windows 和 MAC 驱动程序,但没有 Linux。

您更喜欢使用哪些库或工具?

我要编写设备驱动程序还是可加载内核模块 (LKM)?

【问题讨论】:

  • 您可能对这本书感兴趣Linux Device Drivers。我正在阅读,非常棒
  • 是的,但它非常过时了。查看kernelnewbies.org、lwn.net(内核页面)以获取最新信息。检查 USB 和音频驱动程序挂起的站点,也许这已经完成/正在工作中。

标签: linux-device-driver


【解决方案1】:

libusb 非常有用且易于启动和运行。我建议您从那里开始,特别是如果您有一段时间没有编写 Linux 驱动程序的话。使用 libusb 了解 Roland GR-55 的信号协议是什么并做一些实验。

USB 支持通过同一条物理线路进行多种类型的逻辑连接。设备中可能有可用的 DATA 和 CONTROL 管道,您需要在开始使用正确的驱动程序之前将其映射出来。

正如我所说,libusb 很容易上手,如果您只是想编写一个控制界面并存储来自设备的原始数据,那么您可能会在几天内获得一些有用的东西。但是,如果您想将该设备与现有的音乐软件一起使用,ALSA 是您的不二之选。此外,通过更新 ALSA,您将支持更大的社区,因为您可以将您的工作合并到 ALSA 项目中。

从头开始编写内核模块可能很有趣,但 USB 有点像野兽,可能不是一个理想的开始。使用 ALSA,您将拥有一个框架来指导您,并且无需过多担心定义您自己的 API。

【讨论】:

    【解决方案2】:

    如上所述,请查看 Linux 设备驱动程序http://lwn.net/Kernel/LDD3/ 第 13 章专门讨论 USB 驱动程序。对于开发而言,将驱动程序编写为内核模块会更容易,因为这样您在进行更改时就不需要重新编译内核。

    【讨论】:

      【解决方案3】:

      无需编写新的驱动程序 - ALSA 已经支持了一段时间。见提交https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ef283247a0cf0fd2e8370ee467030292eb3129e

      【讨论】:

        【解决方案4】:

        由于您可能希望听到声卡上的声音,因此您应该选择 ALSA。这样你完成后你就完成了。如果您编写 libusb 驱动程序,那么您将必须编写自己的用户空间工具来为该声卡提供声音以供播放。

        【讨论】:

          猜你喜欢
          • 2015-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多