2011-05-12 115 views
3

ALSA或libusb api是兩種選擇;對我來說都是新的;自從我寫了一個設備驅動程序以來,這已經有好幾年了,而且它早在80年代就是用於Unix的,但是我知道我可以弄清楚,一旦我知道使用什麼工具,我猜它們仍然使用C;我看過libusb api;非常好;但我不知道ALSA項目;似乎他們正在將模塊引入內核來實現這一目標。在Linux中編寫USB設備驅動程序

這是一個通用的問題,但我感興趣的設備是羅蘭GR-55;它具有來自同一USB連接的MIDI和音頻;它有Windows和MAC驅動程序,但沒有Linux。

您更喜歡使用哪些庫或工具?

做我寫一個設備驅動程序或可裝載內核模塊(LKM)?

+1

您可能對本書[Linux Device Drivers]感興趣(http://www.amazon.com/Linux-Device-Drivers-Jonathan-Corbet/dp/0596005903/ref=tmm_pap_title_0)。我正在閱讀它,而且非常好 – 2011-05-12 04:56:02

+0

是的,但它是_very_的日期。查看http://www.kernelnewbies.org,http://lwn.net(內核頁面)獲取最新信息。檢查USB和音頻驅動程序掛起的網站,也許這已經完成/正在實施。 – vonbrand 2013-01-21 00:22:02

回答

2

如上評論,13會談專門檢查了Linux設備驅動程序http://lwn.net/Kernel/LDD3/章有關USB驅動程序。對於開發而言,將驅動程序編寫爲內核模塊會更容易,因爲在進行更改時不需要重新編譯內核。

3

libusb很有用,而且易於啓動和運行。我建議你從那裏開始,特別是如果你一段時間沒有編寫Linux驅動程序。使用libusb瞭解Roland GR-55的信號協議,並做一些實驗。

USB支持多種類型的通過相同的物理線邏輯連接。設備中可能會有DATA和CONTROL管道,您需要在啓動正確的驅動程序之前將其映射出來。

正如我所說,libusb的是易得去,你可以有東西在幾天內有用的,如果你只是想編寫一個控制接口,並從設備存儲的原始數據。但是,如果您想要將設備與現有音樂軟件配合使用,ALSA就是您的選擇。另外,通過更新ALSA,您可以支持更大的社區,因爲您可以將您的工作合併到ALSA項目中。

從頭開始編寫內核模塊可能很有趣,但USB有點野獸,可能不是一個理想的開始。使用ALSA,您將擁有一個框架來指導您,不需要過多擔心定義自己的API。

0

因爲你很可能希望聽到您的聲卡的聲音,你應該選擇ALSA。完成後你就完成了。如果您編寫libusb驅動程序,那麼您將不得不編寫自己的用戶空間工具來提供用於播放的聲卡聲音。