2

こんにちは、stackoverflow.com のメンバーです。

avr-gcc で生成された HEX ファイルをアップロードできるアプリを Android でビルドしようとしています。AndAVR このチェーンツールをインストールしましたhttp://code.google.com/p/andavr/

avrdude を実行するには (USB-OTG ケーブルを使用したルート デバイスで)、モバイル ターミナルで次のコマンドを使用します。

/data/data/jackpal.androidterm/local/bin/avrdude -F -V -c arduino -p m2560 -P /dev/bus/usb/002/001  -b 115200 -C /data/data/jackpal.androidterm/local/etc/avrdude.conf -U flash:w:/sdcard/megademo/Blink1.cpp.hex

この投稿を読んだ後、Android は AVRDUDE を使用して Arduino と通信できません。解決策を試し、/dev/ttyACM0 で /dev/bus/usb/002/002 を変更します。

/data/data/jackpal.androidterm/local/bin/avrdude -F -V -c arduino -p m2560 -P /dev/ttyACM0  -b 115200 -C /data/data/jackpal.androidterm/local/etc/avrdude.conf -U flash:w:/sdcard/megademo/Blink1.cpp.hex

しかし、avrdudeは次のように答えてくれます:

avrdude: ser_open(): can't open device "unkown". No such file or directory. 

私はArduino Mega 2560とMega ADK 2560 R3を持っています.両方のボードにはATmega2560マイクロコントローラがあり、私は持っています:

  • Samsumg Galaxy S2 はルートで Android 4.1.2 ストックを実行します
  • Samsung Galaxy S3 はルートで Android 4.1.2 ストックを実行します
  • Samsumg Galaxy Tab Note 10.1 はルートなしで Android 4.1.2 ストックを実行します
  • Asus Transformer Pad TF700T はルートなしで Android 4.2.1 ストックを実行します

問題は、Samsung デバイスが Arduino ボードと Asus タブを列挙しないことです。

すべてのデバイスで、モバイル端末でコマンドを実行します。

cat /proc/tty/drivers

およびAsusは特定のドライバーを提示します:

ACM /dev/ttyACM 166 0-31 serial

このドライバーは Samsung デバイスでは表示されません。このドライバーは 16 進ファイルを Arduino ボードにアップロードするために不可欠です。このドライバーを Samsung デバイスにインストールするにはどうすればよいですか? または、hex ファイルをアップロードするにはどうすればよいですか?

すべてのデバイスの Android は、/dev/bus/USB/002/xxx にファイルを作成します。ここで、xxx は Arduino ボードまたはその他の USB デバイスです。

よろしくお願いします!

4

1 に答える 1

1

この方法を使用する場合は、cdc_acm カーネル モジュールをロードする必要があります。これはおそらくデバイスに付属していないため、ビルドする必要があります。そして、対応する /dev/ttyACM0 デバイス ノードを作成します。これは、デスクトップ Linux でこれを行うデーモンがおそらく存在しないためです。これらのことを行うにはルートが必要であり、コンパイル元のカーネル ソースを適度に閉じます。

別の方法として、Android USB Host API がデバイスでサポートされている場合、Android アプリからユーザー モードで CDC_ACM タイプの通信を実装することもできます。これはより「Android スタイル」のソリューションになりますが、アプリにパッケージ化された Android 対応のバックエンド サービスを介して通信を行う必要があるため、avrdude にいくつかの変更が必要になります。

CDC_ACM は最近の arduino (Uno など) と少数のクローンで使用されていることにも注意してください。古い Arduino ボードとクローンの大部分は、FTDI USB シリアル コンバーターを使用し、ftdi ドライバー モジュールまたはプロトコルを必要とします。

于 2013-05-30T14:49:16.480 に答える