Armadilloフォーラム

USB gadgetのUSB-MSC

kyas-t5

2020年11月27日 21時54分

お世話になります。

https://armadillo.atmark-techno.com/blog/615/7523

上記リンク先を参照しArmadillo-x1のCOM8でUSB OTG2を使用してUSB CDCとMSCを実装中です。
データを生成後、以下のコマンドを実行した後、USBデバイスとしてWindows側でUSBがオープンしますが
直前に生成されたファイル(CSV)が正常に表示されず、以下のいずれかのような動作になります。
・全て非表示
・FOUND0000.CHKなど表示
・USBデバイスではなくリムーバブルディスク表示
この後、30秒程度放置して再度USB端子を外して再接続すると期待するファイルが表示されます。
動作として下記コマンドを実行後、期待するファイルが全て表示されて開けるようにしたいのですが
何か作法はありますでしょうか?
以下のコマンドが実行される前にmountされていたフォルダを参照すると生成済みになっています。
Cでsystemコマンドで以下を実装しています。
Armadilloのコンソールで以下を実行していも現象は変化しません。

[armadillo ~]# echo > /sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file
[armadillo ~]# echo /dev/shm/file > /sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file

※LinuxとArmadilloの初心者です。

コメント

> お世話になります。
>
> https://armadillo.atmark-techno.com/blog/615/7523
>
> 上記リンク先を参照しArmadillo-x1のCOM8でUSB OTG2を使用してUSB CDCとMSCを実装中です。
> データを生成後、以下のコマンドを実行した後、USBデバイスとしてWindows側でUSBがオープンしますが
> 直前に生成されたファイル(CSV)が正常に表示されず、以下のいずれかのような動作になります。
> ・全て非表示
> ・FOUND0000.CHKなど表示
> ・USBデバイスではなくリムーバブルディスク表示
> この後、30秒程度放置して再度USB端子を外して再接続すると期待するファイルが表示されます。
> 動作として下記コマンドを実行後、期待するファイルが全て表示されて開けるようにしたいのですが
> 何か作法はありますでしょうか?
> 以下のコマンドが実行される前にmountされていたフォルダを参照すると生成済みになっています。
> Cでsystemコマンドで以下を実装しています。
> Armadilloのコンソールで以下を実行していも現象は変化しません。
>
> [armadillo ~]# echo > /sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file
> [armadillo ~]# echo /dev/shm/file > /sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file
>
> ※LinuxとArmadilloの初心者です。

at_kazutaka.bito

2020年11月30日 17時55分

尾藤です。

Windows側としては、マスストレージデバイス側が自発的にファイルを更新して、ファイル変更をホストに通知する、
というような挙動は想定していないと思われます。

参考されているブログの当該のコマンドは、マスストレージデバイス側(Armadillo-X1)で、
/dev/shm/fileの解除、再設定によって、Windows側に再接続のように見せようとする方法ですが、
ご使用のPC(Windows)では、この方法ではうまく再接続として認識されていないのではと推測します。

ついては、通常のマスストレージデバイスのように、ホストPC(Windows)側からマスストレージデバイス(Armadillo-X1)を
再認識するような方法がよいかと思います。

今回の用法として、USBを挿抜しないことが条件であれば、再認識させる方法としては、下記のような方法があるようです。

注)下記方法もマスストレージデバイスを対象とした挙動は明記はしていないので、今回の用法に効果があるかどうかは
実際にご確認いただく必要があるかと思います。

WindowsにUSBデバイスの取り外しと再検出を強制するには?
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P7bZSAS&…

Windows 10で “ハードウェアの安全な取り外し” をしたUSBデバイスを再接続する方法
https://novlog.me/win/app-reconnect-usb/

なお、上記方法の場合、Armadillo-X1でファイルを更新したタイミング(PCでUSBデバイスを再認識させるタイミング)は、
USB CDCのシリアル通信で、PCに通知するという方法がとれるかと思います。

> 尾藤です。
>
> Windows側としては、マスストレージデバイス側が自発的にファイルを更新して、ファイル変更をホストに通知する、
> というような挙動は想定していないと思われます。
>
> 参考されているブログの当該のコマンドは、マスストレージデバイス側(Armadillo-X1)で、
> /dev/shm/fileの解除、再設定によって、Windows側に再接続のように見せようとする方法ですが、
> ご使用のPC(Windows)では、この方法ではうまく再接続として認識されていないのではと推測します。
>
> ついては、通常のマスストレージデバイスのように、ホストPC(Windows)側からマスストレージデバイス(Armadillo-X1)を
> 再認識するような方法がよいかと思います。
>
> 今回の用法として、USBを挿抜しないことが条件であれば、再認識させる方法としては、下記のような方法があるようです。
>
> 注)下記方法もマスストレージデバイスを対象とした挙動は明記はしていないので、今回の用法に効果があるかどうかは
> 実際にご確認いただく必要があるかと思います。
>
> WindowsにUSBデバイスの取り外しと再検出を強制するには?
> https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P7bZSAS&…
>
> Windows 10で “ハードウェアの安全な取り外し” をしたUSBデバイスを再接続する方法
> https://novlog.me/win/app-reconnect-usb/
>
> なお、上記方法の場合、Armadillo-X1でファイルを更新したタイミング(PCでUSBデバイスを再認識させるタイミング)は、
> USB CDCのシリアル通信で、PCに通知するという方法がとれるかと思います。
>

返信が遅くて申し訳ありません。ご回答ありがとうございます。
Windows側の対応が必要でArmadillo-x1のみの対応は難しいということで承知いたしました。