BeagleBone用のUSB HIDを構築する





私たちの出版物の1つで、 Beagledone用に中国語のUSB-WiFiを構成することについて書きましたが、今日はHIDプロトコルを介して独自のデバイス制御クラスを構築する方法を提供したいと考えています。 hidapiライブラリーが基礎として採用され、その後、 ビーグルボーンのクロスコンパイル方法が作成され、USBデバイスを操作するためのテストプログラムが作成されました。



LinuxでUSB制御を行う最も簡単で信頼性の高い方法の1つは、libusb-1.0ライブラリを使用することです。 Hidapiはlibusbの「アドオン」であり、hidapiデバイスをプログラム可能なデバイスに簡単に接続できます。 「クリーンな」システムでhidapiをビルドする場合、libusbを個別にビルドしてから、hidapiをビルドする必要があります。 この記事では、hidapiのアセンブリについて検討します。 今後、アンドロイドndkが介入なしにhidapiの構築を拒否したとしましょう。



開始するために、ライブラリをダウンロードして作業ディレクトリに展開し、Linux Mintディストリビューションを使用してアセンブリとテストを行いました。 解凍されたフォルダー(この場合はhidapi-0.7.0)で、readme.txtの指示を読む必要があります。 BeagleBoneはLinuxを使用するため、hidapi-0.7.0 / linuxフォルダーに移動すると、次のreadme.txtファイルにLinuxでのビルド手順が記載されています。 要するに、ライブラリには2つのビルドオプションがあります。hid-libusb.cまたはhid.cを使用します。 前者の場合、libusbライブラリが使用されます。これはシステムにインストールする必要があります。 2番目のケースでは、hidrawが使用され、libudev-develが必要です。



両方のオプションを収集しようとしたことに注意してください。 hid-libusb.cのみが正常にアセンブルされ、hid.cはさまざまな種類のエラーを生成しました。 さらに、開発者は、パッケージlibusb-1.0-0-devまたはlibudev-develを配置することを提案します。 パッケージをインストールした後、linuxフォルダーにプロジェクトをビルドできます。 makeを実行すると、hidapi-0.7.0 / hidtest /プロジェクトがアセンブルされ、hidapi-0.7.0 / linuxフォルダーに移動します。 コマンドラインで、コンパイラコマンドを確認できます。 さらに、BeagleBoneの下でのアセンブリの本質は、それぞれ通常のgccとg ++の代わりにクロスコンパイラを置き換えることです。 ただし、微妙な点が1つあります。makefileの中を見ると、

LIBS = `pkg-config libusb-1.0 libudev --libs` -lpthread

INCLUDES?= -I ../ hidapi `pkg-config libusb-1.0 --cflags`


これらの行は、ライブラリ(インクルード)へのパスを追加し、ライブラリアセンブリキー(libs)を動的に設定します。 スクリプトをアセンブリにロードするものを理解するには、コンソールでそれを実行できます: `pkg-config libusb-1.0 libudev --libs` and` pkg-config libusb-1.0 --cflags`。 BeagleBone用のソフトウェアをビルドするとき、インクルードするパスを変更しませんでした(そこには.hヘッダーファイルとクロスプラットフォームのものしかありません)が、pkg-configなしで直接登録しました。 おそらくこれは最良の解決策ではありませんが、まだ機能しています。



一般的に、それは見えます
次のように
INCLUDEPATH + = / usr / include / libusb-1.0

LIBS + = -lusb-1.0 -ludev -g

hidapi.hをソースフォルダーに追加します。

gcc -Wall -g -c -I / usr / include / libusb-1.0 hid-libusb.c -o hid-libusb.o`


ライブラリを直接インクルードしてファイルを修正し、クロスコンパイラを規定し、BeagleBoneでプログラムをアセンブルします。 以上で、USB HIDデバイスを操作するためのプログラムの準備が整いました。



All Articles