Armadilloフォーラム

USBデバイス マスストレージ機能について

k.sekiguchi

2016年8月12日 11時18分

関口と申します。

Windows側をUSBホスト、ArmadilloをUSBデバイスとし、
ArmadilloにUSBデバイス マスストレージ機能を搭載する予定です。
本メモリは、Windows、Armadillo共に
ファイルの書き込み・読み込みを行う仕様で検討しています。

マスストレージ機能を調査していたところ下記文献を見つけました。

Howto : Armadillo-410 液晶モデル開発セット で USB デバイス機能を使用する
http://armadillo.atmark-techno.com/howto/a400-use-usb-gadget

USB-OTGでμSDをWindowsとLinuxで共有した際の同期の問題
https://armadillo.atmark-techno.com/forum/armadillo/611

本文献には下記の記載がありますが、
本制限事項は、「マイクロSDメモリカード」だから発生する制限でしょうか。

データ保存領域として、「ddコマンドを使用してイメージファイルを作成」し、
マスストレージドライバを起動した場合にも発生しますでしょうか。
=============================================================================
「Armadilloに接続されたマイクロSDメモリカードのデータを、Armadilloとホストで共有する事はできません。 」

「Mass Storage gadgetで
Armadillo-440のmicroSDをWindowsとLinuxで共有するといった事はできません。

Mass Storage gadgetが動作し、USB Host(この場合Windows)と接続された場合、
ArmadilloのストレージはUSB Hostのプライベートディスクとしてしか使用できない仕様になっています。」
=============================================================================

また、データ保存領域として、「ddコマンドを使用してイメージファイルを作成」し、
マスストレージドライバを起動した場合、データ保存領域内を通常ファイルとして
参照可能でしょうか。

宜しくお願い致します。

コメント

溝渕です。

まず、現状ご報告から。

Armadillo-IoT G3本体にはUSBデバイスインターフェースがありません。その
ため、アドオンインターフェースに1に出ているUSB_OTG2信号を接続したイン
ターフェースを用意するなど、ハードウェアのカスタマイズが必要になります。

また、現状Armadillo-IoT G3では、Mass Storage Gadget(USB_MASS_STORAGE)
が使えない状態です。ドライバの初期化に失敗することから、i.MX向けUSBド
ライバとガジェットドライバ間で、何かしらの不整合が生じているものと思わ
れます。

以下ご質問への回答です。Armadillo-IoT G3では現状USB_MASS_STORAGEを利用
できないので、USB_MASS_STORAGEに対する一般的な情報である点にご注意くだ
さい。

> USB-OTGでμSDをWindowsとLinuxで共有した際の同期の問題
> https://armadillo.atmark-techno.com/forum/armadillo/611
>
> 本文献には下記の記載がありますが、
> 本制限事項は、「マイクロSDメモリカード」だから発生する制限でしょうか。

上記問題になストレージ種別は関係ありません。ストレージにアクセスするマ
シンが複数あった場合にファイルシステムレベルでの不整合が生じるのが問題
です。

> また、データ保存領域として、「ddコマンドを使用してイメージファイルを作成」し、
> マスストレージドライバを起動した場合、データ保存領域内を通常ファイルとして
> 参照可能でしょうか。

アクセスするマシンが単一であれば、アクセス方法についての制限は無いかと
思います。ストレージに対するアクセスを、Windows(またはArmadillo)からの
み行う場合には利用可能です。

以上です。

関口です。

ご回答有難う御座います。

i.MX向けUSBドライバとガジェットドライバ間で、
何かしらの不整合が生じているとのことですが、
本問題が改善される予定などありますでしょうか。

宜しくお願い致します。

溝渕です。

> i.MX向けUSBドライバとガジェットドライバ間で、
> 何かしらの不整合が生じているとのことですが、
> 本問題が改善される予定などありますでしょうか。

上記、根本的な問題を把握できていないのが現状です。

そのため、現在のところ修正スケジュールは未定となっております。

以上、宜しくお願いいたします。

溝渕です。

USB MS Gadgetを使えることが確認できました。

> i.MX向けUSBドライバとガジェットドライバ間で、
> 何かしらの不整合が生じているとのことですが、

上記、ガジェットドライバのbind時にエラーが発生していたため、ドライバ間
のデータ不整合と想像していました。

しかし調査の結果、使えなかった原因は、ストレージが「取り外し可能か」を
示すremovableパラメータの初期値が変更されていたためとわかりました。

該当commitは次の通りです。

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/…

以下利用方法です。Linuxカーネルイメージには、Mass Storage
Gadget(USB_MASS_STORAGE)が組み込まれていることを前提にしています。

U-Bootのバージョン"at2"以降を利用している場合は、U-Bootのプロンプトで
次のようにコマンドを入力すると使えるようになります。

=> setenv optargs g_mass_storage.removable=1

例として、USB_OTG1からeMMCの第1パーティションを外部に見せるためには、
次のようにコマンドを実行します。

# echo "/dev/mmcblk2p1" > /sys/devices/soc/30800000.aips-bus/30b10000.usb/ci_hdrc.0/gadget/lun0/file

以上です。