2010-11-22 76 views
22

我想編程一個微控制器(AVR)來通過USB控制一些LED。這對於如何構建和編程USB設備只是興趣不大。 有一些AVR微控制器支持USB協議,或者我可以在另一個微控制器中實現USB協議,但我不知道如何在計算機上編寫自己的驅動程序。USB編程

我在系統編程水平:總小白(因此這個問題)

那麼,什麼是你的人會建議得到USB技術的良好的知識,以及如何編寫自己的驅動程序,並超越了文學嗎?

PS:我知道:

  • C(可能需要在這裏)

  • 的Java(可能只需要在這裏)

  • 的Python(希望可以用它這裏)

  • 彙編(希望在這裏不需要它XD)。

  • ...

P.P.S:驅動開發不同的不同的操作系統。我使用Linux和Windows,因此歡迎任何與這些系統中的一個或兩個相關的材料。

回答

0

最近在MSDN上提供了WDK(Windows開發工具包)的Microsoft文檔區域。有關於USB的章節,儘管您最好先閱讀前面的章節,特別是「入門」章節。他們假設你將使用C作爲驅動程序開發的編程語言。

對於Linux,Linux USB網站應該能夠指出你在正確的方向。特別是你會想要Programming Guide for Linux USB Device Drivers

+0

編程指南鏈接不起作用 – Benubird 2015-08-15 10:15:12

0

一個好的方法就是開發一個HID設備,因爲驅動程序是內置於大多數高級操作系統中的,並且對於簡單的IO非常靈活,就像您正在談論的那樣。另一個不錯的選擇是使用USB RS232設備或軟件。我使用帶有USB的許多漂亮設備的PIC。

9

那麼,雖然你可以開發和編寫你自己的USB驅動程序,但USB的美妙之處在於你不需要編寫自己的驅動程序。 USB Implementers Forum已爲所有標準設備類定義了類規範。如果您可以將您的設備安裝到標準設備類中,則驅動程序已經爲您編寫!

如果您真的想熟悉USB開發,您應該首先查看USB approved class specification documents

5

如果您使用硬件USB進入AVR微控制器的框架,請查看LUFA,如果您使用軟件USB進入AVR,請查看V-USB。他們都實現了許多USB類,所以你不必自己做 - 只要使用它們。

+2

這兩個項目都對avr usb空間有很大的幫助 – 2010-12-19 10:31:10

3

這聽起來像一個偉大的項目!我建議從一些簡單的事情開始,因爲你 - 正如你所說 - - 「總數n00b」。我不確定你目前有什麼硬件(或者有想法),但是我建議初學者的是STK500。它是一個在Linux和Windows中得到很好支持的開發板,並且會給你最大的靈活性。它配備了用於項目的LED和開關,但您需要購買一個微控制器。爲此我推薦ATMega32,這是一款出色的多用途集成電路,也得到了很好的支持,並且在網絡上有大量文檔。

一旦你得到那些,我建議你在Linux上使用avr-gcc進行開發(確保也安裝avr-libc)。如果你使用Ubuntu,很容易得到你需要的所有軟件包:

% sudo apt-get install gcc-avr avr-libc avrdude 

那些應該讓你啓動並運行。我會建議您使用谷歌搜索幫助編寫您的第一個程序,但另一個好的資源是this class at Cornell的在線資料。

這足以讓你的腳受到AVR微控制器和開發工具的影響。天空是在這一點上的限制,但既然你說你想進入USB,我建議使用優秀的V-USB框架讓你的ATMega32充當USB設備。之後,正如他們所說,翻轉LED的步驟簡直就是小菜一碟:)。

+0

好的提示:v-usb - 也有很好的電路圖 - 易於DIY – 2011-01-28 11:45:07

1

你可以讓我們libusb。它功能強大且跨平臺。

但是你想要做的是一個相當簡單的控制界面。我想你可以通過使用HIDAPI避開大部分的複雜性。

http://www.signal11.us/oss/hidapi/

HID設備經常使用來包裝到操作系統的通用驅動程序。這樣,您實際上不必編寫任何驅動程序,只需使您的設備符合通用驅動程序並定製客戶端軟件即可。

我認爲這是通常在愛好者電子領域完成的工作,這就是您在這裏感興趣的內容。

HIDAPI甚至建議在libusb FAQ中與HID設備進行簡單通信,因爲在使用libusb的平臺上執行該操作有點複雜。

0

我已經建立了基於ARDUINO UNO的自己的測試平臺,並且我使用的是usbasp類型的ionlabs程序員,它工作得很好,但它不允許將TTL轉換回Rs-232,因此我不能將'不要使用串口等功能。打印()和我不得不安裝ftdi電纜,讓我做到這一點。 驅動程序是libusb 1.xx工作得很好。

如果您想編程AVR,您可以使用ARDUINO軟件包或stino上傳程序。 您需要知道c(僅限基礎知識)。

0

去年我爲我的頂石創建了一個USB鍵盤適配器。我沒有做主機編程,但使用了現有的代碼,你可以在網上找到。但我沒有編程設備端,爲此我從這個網站得到了很多幫助Teensy看看他們的「代碼庫」,它有代碼鍵盤,鼠標等。此外,USB協議手冊將始終有用,您應該在使用USB進行操作時隨時諮詢。

0

我想知道您的AVB是作爲主機還是設備。我猜你的主板是USB設備,你需要點亮主板上的LED。所以,這可能是將您的開發板初始化爲HID設備的好方法。爲了實現這一目標,您需要在您的主板上運行HID小工具軟件堆棧。參考如下:UBOOT

  1. 小工具框架
  2. HID specefication usb org
  3. 調試工具,比如USB協議分析儀
  4. libusb的PC主機上運行發送數據包