ALSA或libusb api是两种选择;对我来说都是新的;自从我写了一个设备驱动程序以来它已经好几年了,而且它已经在80年代用于Unix了,但是我知道我可以弄明白,一旦我知道要使用什么工具,我猜它们仍然使用C;我看过libusb api;非常好;但我不知道ALSA项目;看来他们正准备将模块放入内核来实现这一目标。
这是一个通用的问题,但我感兴趣的设备是Roland GR-55;它具有来自相同USB连接的MIDI和音频;它有Windows和MAC驱动程序,但没有Linux。
您更喜欢使用哪些库或工具?
我是否编写设备驱动程序或可加载内核模块(LKM)?
答案 0 :(得分:3)
libusb很有用,易于启动和运行。我建议你从那里开始,特别是如果你有一段时间没有编写Linux驱动程序。使用libusb来了解Roland GR-55的信令协议是什么,并做一些实验。
USB支持在同一条物理线路上进行多种类型的逻辑连接。设备中可能会有DATA和CONTROL管道,您需要在开始使用正确的驱动程序之前将其映射出来。
正如我所说,libusb很容易上手,如果你只是想编写一个控制接口并存储来自设备的原始数据,你可以在几天内得到一些有用的东西。但是,如果您想将设备与现有音乐软件一起使用,ALSA就是您的选择。此外,通过更新ALSA,您将支持更大的社区,因为您可以将您的工作合并到ALSA项目中。
从头开始编写内核模块可能很有趣,但USB有点像野兽,可能不是一个理想的开始。使用ALSA,您将拥有一个指导您的框架,而不必担心定义您自己的API。
答案 1 :(得分:2)
如上所述,请查看Linux设备驱动程序http://lwn.net/Kernel/LDD3/第13章专门讨论USB驱动程序。对于开发,将驱动程序编写为内核模块更容易,因为在进行更改时不需要重新编译内核。
答案 2 :(得分:1)
无需编写新驱动程序 - ALSA已经支持了一段时间。请参阅提交https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0ef283247a0cf0fd2e8370ee467030292eb3129e
答案 3 :(得分:0)
由于您可能希望听到声卡上的声音,因此您应该选择ALSA。这样你完成后就完成了。如果你编写libusb驱动程序,那么你必须编写自己的用户空间工具来提供声卡播放声音。