23

マイクロコントローラ (AVR) をプログラムして、USB 経由でいくつかの LED を制御したいと考えています。USB デバイスを構築してプログラムする方法に関心がありません。USB プロトコルをサポートする AVR マイクロコントローラーがいくつかあります。また、別のマイクロコントローラーで USB プロトコルを自分で実装することもできますが、コンピューターに独自のドライバーを書き込むには何を使用すればよいのでしょうか。

システム プログラミングの私のレベル: 完全初心者 (したがって、質問)

では、USB テクノロジと、独自のドライバを作成する方法などについて十分な知識を得るためにアドバイスする文献は何ですか?

PS: 私は知っています:

  • C (おそらくここで必要になるでしょう)

  • Java (おそらくここでは必要ありません)

  • Python(ここで使用できることを願っています)

  • アセンブラ (XD では必要ないことを願っています)。

  • ...

PPS: ドライバーの開発は、OS ごとに異なります。私は Linux と Windows を使用しているので、これらのシステムの一方または両方に関連する資料は大歓迎です。

4

10 に答える 10

10

独自の USB ドライバーを開発して作成することはできますが、USB の優れた点は、独自のドライバーを作成する必要がないことです。USB インプリメンターズ フォーラムは、すべての標準デバイス クラスのクラス仕様を定義しています。デバイスを標準デバイス クラスに適合させることができれば、ドライバーは既に作成されています。

本当に USB 開発に精通したい場合は、USB 認定クラス仕様書を確認することから始めてください。

于 2010-11-22T23:44:51.273 に答える
5

ハードウェア USB を使用する AVR マイクロコントローラーのフレームワークに関心がある場合は、 LUFAを調べてください。ソフトウェア USB を使用する AVRに関心がある場合は、 V-USBを調べてください。どちらも多くの USB クラスを実装しているため、自分で行う必要はありません。使用するだけです。

于 2010-11-23T08:18:22.307 に答える
3

素晴らしいプロジェクトですね!あなたが言うように、「トータルn00b」であるため、もう少し単純なものから始めることをお勧めします。あなたが現在持っている(または考えている)ハードウェアはわかりませんが、まったくの初心者にはSTK500をお勧めします。これは、Linux と Windows の両方で非常によくサポートされ、最大限の柔軟性を提供する開発ボードです。プロジェクト用に LED とスイッチが組み込まれていますが、マイクロコントローラーを入手する必要があります。そのためには、 ATMega32をお勧めします。これは、優れた多目的 IC であり、サポートも充実しており、Web 上に多くのドキュメントがあります。

それらを取得したら、avr-gcc を使用して Linux で開発を行うことをお勧めします (avr-libc もインストールしてください)。Ubuntu を使用している場合は、必要なすべてのパッケージを簡単に入手できます。

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

それらはあなたを立ち上げて実行するはずです。最初のプログラムを書くための助けを求めてグーグルで検索することをお勧めしますが、もう 1 つの優れたリソースは、コーネル大学のこのクラスのオンライン資料です。

これで、AVR マイクロコントローラーと開発ツールに慣れるには十分です。その時点で空は限界ですが、あなたがUSBに乗りたいと言ったので、優れたV-USBフレームワークを使用してATMega32をUSBデバイスとして機能させることをお勧めします. その後、彼らが言うように、LED を切り替える手順は簡単です :)。

于 2011-01-27T15:46:47.670 に答える
3

コンピューターに独自のドライバーを書き込むために何を使用するのだろうか

  1. libusb (ここここここ)
  2. wdk
  3. WinDriver

libusbバリアント情報については、これを読んでください

于 2011-01-28T11:26:56.510 に答える
1

あなたはlibusbできます。強力でクロスプラットフォームです。

しかし、あなたがやろうとしているのは、かなり単純な制御インターフェースです。HIDAPI を使用することで、ほとんどの複雑さを回避できると思います。

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

HID デバイスは、多くの場合、OS にパッケージ化された汎用ドライバーを使用します。そうすれば、実際にドライバーを作成する必要はありません。デバイスを汎用ドライバーに準拠させ、クライアント ソフトウェアをそれに合わせて調整するだけです。

これは趣味のエレクトロニクス分野で通常行われていることだと思います。

HIDAPI は、libusb FAQ で HID デバイスとの単純な通信にも推奨されています。これは、libusb を使用してプラットフォーム間で行うのは少し複雑であるためです。

于 2011-05-23T04:41:29.113 に答える
0

ドライバーはほとんどの上位レベルの OS に組み込まれており、あなたが話しているような単純な IO に対してかなり柔軟であるため、HID デバイスを開発するのが 1 つの良い方法です。もう 1 つの適切なオプションは、USB RS232 デバイスまたはソフトウェアを使用することです。私は、USB を搭載した多数の優れたデバイスを搭載した PIC を使用しています。

于 2010-11-22T01:23:53.337 に答える
0

最近、WDK (Windows Development Kit) の Microsoft ドキュメント エリアが MSDN で利用できるようになりました。USB に関するセクションがありますが、最初に前のセクション、特に「はじめに」のセクションを読むことをお勧めします。彼らは、ドライバー開発用のプログラミング言語として C を使用することを前提としています。

Linux の場合、Linux USB Web サイトで正しい方向に進むことができます。特に、Linux USB Device Driversのプログラミング ガイドが必要です。

于 2010-11-22T00:40:16.633 に答える
0

私は ARDUINO UNO に基づいて独自のテスト ベッドを構築し、タイプ usbasp のionlabs プログラマーを使用していましたが、完全に正常に動作しましたが、TTL を Rs-232 に戻すことができなかったため、機能を使用できませんでした。 serial.print() など、これを可能にする ftdi ケーブルをインストールする必要がありました。ドライバーは libusb 1.xx で、問題なく動作していました。

AVR をプログラムする場合は、ARDUINO ソフトウェア バンドルまたは stino を使用してプログラムをアップロードできます。c(基本のみ)を知っている必要があります。

于 2014-03-21T11:11:40.397 に答える