web-dev-qa-db-ja.com

USBプログラミング

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

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

では、USBテクノロジーについて十分な知識を得るために人々がアドバイスするであろう文献や、独自のドライバーやそれ以降の作成方法について教えてください。

追伸:わかっています:

  • C (probably will need it here)

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

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

  • アセンブラ(うまくいけば、ここではXDは必要ありません)。

  • .。

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

22
EDWH

さて、あなたはあなた自身のUSBドライバーを開発して書くことができますが、USBの美しさはあなたがあなた自身のドライバーを書く必要がないということです。 SB Implementers Forum は、すべての標準デバイスクラスのクラス仕様を定義しています。デバイスを標準のデバイスクラスに適合させることができれば、ドライバーはすでに作成されています。

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

10
J Edward Ellis

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

5
avra

コンピューターで独自のドライバーを作成するために何を使用するのだろうか

  1. libusb( ここここ および ここ
  2. wdk
  3. WinDriver

Libusbバリアントの情報については、 this をお読みください。

3
avra

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

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

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

それらはあなたを稼働させるはずです。最初のプログラムを書くのに役立つグーグルをお勧めしますが、もう1つの優れたリソースは、 コーネル大学のこのクラス のオンライン資料です。

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

3
Devrin

あなたは私たちlibusbである可能性があります。強力でクロスプラットフォームです。

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

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

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

これは、あなたがここで興味を持っていることである、愛好家のエレクトロニクス分野で通常行われていることだと思います。

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

1
CptAJ

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

0
kenny

あなたのAVBがホストまたはデバイスとして機能するのだろうか。あなたのボードはUSBデバイスであり、ボードのLEDを点灯する必要があると思います。したがって、ボードをHIDデバイスとして初期化するのに適した方法かもしれません。この目標を達成するには、ボード上で実行されているHIDガジェットソフトウェアスタックが必要です。次のように参照します。

  1. ubootのガジェットフレームワーク
  2. HID仕様 sb org
  3. uSBプロトコルアナライザなどのデバッグツール
  4. パケットを送信するためにホストPCで実行されているlibusb
0
Kai Qiu

昨年、キャップストーン用にUSBキーボードアダプターを作成しました。私はホストプログラミングをしませんでしたが、ウェブ上にある既存のコードを使用しました。しかし、デバイス側をプログラミングしたので、このウェブサイトから多くの助けを得ました Teensy 彼らの "を調べてください。キーボード、マウスなどのコードが収録された「コードライブラリ」。また、USBプロトコルハンドブックは常に役立ちます。USBを使用する場合は、必ず参照してください。

0
KuroNeko

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

Linuxの場合、 Linux USB Webサイトで正しい方向を示すことができるはずです。特に、 Linux USBデバイスドライバのプログラミングガイド が必要になります。

0
Orbling

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

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

0
NULL-POINTER