2

AOSP のカスタム ビルドがあります (kitkat 4.4 に基づく)。Android の USB Host API を介して arduino ボードを制御しています。CDC-ACM モジュールをサポートするカーネルも実行しています。

新しい hex ファイルをボードにフラッシュできるようにしたいと考えています。私は ArduinoDroid が彼のアプリでこれを行うのを見てきました。avrdude と、CDC-ACM ドライバーを使用して作成された /dev/ttyACM* ファイルを使用してフラッシュできました。

しかし、アプリが arduino ボードと通信する許可を与えると、/dev/ttyACM* ファイルが消えます。AndroidのUSBホストAPIを介して制御しているため、これは理にかなっています。/dev/ttyACM* ファイルを復元する方法、または avrdude が /dev/bus/usb/#/# ファイルを使用して新しい hex ファイルをボードにフラッシュできるようにする方法を探しています。USBManager に revokePermission メソッドがあるようには見えません。

デバイスを閉じても /dev/ttyACM* デバイス ファイルが表示されません。デバイスを閉じるために次のコードを実行しています。

connection.releaseInterface(device.getInterface(1));

connection.close();

私の本当の質問は、USB 接続を解放した後にカーネル ドライバーを元に戻す方法があるということだと思います。

私は AOSP のカスタム ビルドを使用しているため、Google Play がなく、タブレットに ArduinoDroid をインストールできません。ただし、必要に応じてアプリをシステム レベルのアプリとして実行できます。

4

1 に答える 1

0

最終的にはこれを解決しましたが、ちょっとしたハックのようです。

(タブレットの再起動時に) デバイスを制御する前に、/dev/ttyACM* ファイルが存在するかどうかを確認しました。もしそうなら、私は /sys/ ファイル システムをチェックして、それらが正しいデバイスであることを確認しました。基本的に、USB デバイスのベンダーを確認し、既知のデバイスと照合しました。それが確認されたら、新しい hex ファイルをデバイスにアップロードしても安全であることがわかりました。

于 2015-01-27T19:49:12.523 に答える