h-yamamoto
2017年2月9日 20時35分
表題の件ですが、以下の通りまとめさせていただきましたので、
何かご教示いただければ幸いと存じます。
<目的>
USBガジェットの「mass storage」を使用して、Armadillo 810とUSB接続されたWindows上からSDカードに対してファイルの読み書きを行いたい
<現象>
ArmadilloにはSDカードが挿入されているにもかかわらず、
Windowsのエクスプローラ上からDドライブにアクセスすると「ディスクを挿入してください」と警告が出て
SDカードが認識されない
<現象の前提条件>
・USBガジェットの「mass storage」を有効にしたカーネルとユーザーランドを書き換えました。
・WindowsマシンとArmadillo810をUSBケーブルで接続しました。
・Windows上からはLinux起動中にDドライブが認識されています。
<手順>
1.以下のURLのPDFの「11.1. Linuxカーネル/ユーザーランドをビルドする 」を参考にカーネルとユーザーランドのビルドを行いました。
http://armadillo.atmark-techno.com/files/downloads/armadillo-810/docume…
※ソースコードなどは、以下のURLからダウンロードしました。
http://armadillo.atmark-techno.com/armadillo-810/downloads
2.make menuconfigを実行し、ビルドの設定をしました
2.1 Vendor/Product Selectionの設定はそれぞれ以下を設定
→AtmarkTechno
→Armadillo-810
2.2 Kernel/Library/Defaults Selectionの設定は
Customize Kernel Settingsを選択
2.3 Exitで一旦抜けて、kernel Configurationを続けて設定
2.4 Device Drivers -> USB support -> USB Gadget Support -> USB Gadget Drivers -> Mass Storage Gadget を選択
2.5 設定は以上で終了する
3.設定完了後、makeコマンドよりビルドを実施しました。
4.作成したkernel/ユーザーランドのイメージをフラッシュにそれぞれ書き込みました。
(SDカードに書き込んだイメージファイルをフラッシュへ書き込みました)
5.rebootコマンドで動作を確認すると、表題のような現象が発生しました。
製品のマニュアルにマスストレージについて記載がなかったので、
以下のサイト群を参考にしました。
・http://armadillo.atmark-techno.com/howto/a800eva-use-usb-gadget
・http://armadillo.atmark-techno.com/howto/a840-use-usb-gadget
・http://manual.atmark-techno.com/armadillo-810/armadillo-810_product_man…
上記の現象、手順や設定項目に不足はございませんでしょうか?
目的のために講じるべき手段などを御教示いだければと思います。
以上です。
宜しくお願いいたします。
コメント
h-yamamoto
笹山様
お世話になっております。
上記、御指南有難う御座います。
上記手順にて実施したところ、WindowsにてSDの認識ができるようになりました。
kernelのdrivers/usb/の下にも、「g_mass_storage.ko 」のファイルが置いてあったので、
rc.localに起動時にinsmodするようにしたところ起動するだけでUSBの認識までできるようになりました。
本件、上記にて解決いたしましたので、クローズさせていただきます。
笹山様には厚く御礼申し上げます。
> 笹山です。
>
> 以下の手順で動作確認をしてみてください。
>
> ■カーネルコンフィギュレーション
>
> Linux/arm 3.4-at19 Kernel Configuration > Device Drivers ---> > [*] USB support ---> > <*> USB Gadget Support ---> > <M> USB Gadget Drivers # <M> にします > <M> Mass Storage Gadget # <M> にします >
>
> カーネルコンフィギュレーション完了後、make を行い、カーネルイメージを作成します。
> この際、以下のパスに g_mass_storage.ko が作成されます。
>
> atmark-dist/linux-3.x/drivers/usb/gadget/g_mass_storage.ko >
>
> 作成したカーネルイメージを Armadillo-810 に書き込み、起動します。
>
>
> ■g_mass_storage.ko
> Armadillo-810 起動後、先に作成された g_mass_storage.ko を Armadillo-810 に転送します。
> 転送後、以下のオプションで insmod すると、SDカードの中身に Windows からもアクセスできるようになります。
>
>
> insmod g_mass_storage.ko file=/dev/mmcblk0 stall=0 >
>
> ■参考情報
> Howto : Armadillo-410 液晶モデル開発セット で USB デバイス機能を使用する
> http://armadillo.atmark-techno.com/howto/a400-use-usb-gadget
h-yamamoto
追加で質問が発生しましたので、こちらに追記させていただきます。
Windows上にてSDカードは認識はできるようになりましたが、
Windows上でSDカードのフォルダを開いたままSDカードを取り外し、
WindowsでSDカードのフォルダをF5などで最新状態に更新しても、
SDカードが挿入されているかのように動作しエクスプローラ上の見え方が変わりません。
「SDカードが挿入されていません」などのメッセージも表示されません。
この動作は、上述の手順で作成したモジュールですと、正しい動作になりますでしょうか。
以上です。
宜しくお願いいたします。
> 笹山様
>
> お世話になっております。
> 上記、御指南有難う御座います。
>
> 上記手順にて実施したところ、WindowsにてSDの認識ができるようになりました。
> kernelのdrivers/usb/の下にも、「g_mass_storage.ko 」のファイルが置いてあったので、
> rc.localに起動時にinsmodするようにしたところ起動するだけでUSBの認識までできるようになりました。
>
> 本件、上記にて解決いたしましたので、クローズさせていただきます。
> 笹山様には厚く御礼申し上げます。
>
>
>
> > 笹山です。
> >
> > 以下の手順で動作確認をしてみてください。
> >
> > ■カーネルコンフィギュレーション
> >
> > Linux/arm 3.4-at19 Kernel Configuration > > Device Drivers ---> > > [*] USB support ---> > > <*> USB Gadget Support ---> > > <M> USB Gadget Drivers # <M> にします > > <M> Mass Storage Gadget # <M> にします > >
> >
> > カーネルコンフィギュレーション完了後、make を行い、カーネルイメージを作成します。
> > この際、以下のパスに g_mass_storage.ko が作成されます。
> >
> > atmark-dist/linux-3.x/drivers/usb/gadget/g_mass_storage.ko > >
> >
> > 作成したカーネルイメージを Armadillo-810 に書き込み、起動します。
> >
> >
> > ■g_mass_storage.ko
> > Armadillo-810 起動後、先に作成された g_mass_storage.ko を Armadillo-810 に転送します。
> > 転送後、以下のオプションで insmod すると、SDカードの中身に Windows からもアクセスできるようになります。
> >
> >
> > insmod g_mass_storage.ko file=/dev/mmcblk0 stall=0 > >
> >
> > ■参考情報
> > Howto : Armadillo-410 液晶モデル開発セット で USB デバイス機能を使用する
> > http://armadillo.atmark-techno.com/howto/a400-use-usb-gadget
at_takashi.sasayama
笹山です。
> Windows上でSDカードのフォルダを開いたままSDカードを取り外し、
> WindowsでSDカードのフォルダをF5などで最新状態に更新しても、
> SDカードが挿入されているかのように動作しエクスプローラ上の見え方が変わりません。
> 「SDカードが挿入されていません」などのメッセージも表示されません。
下記手順の様に、SDカードを取り外した後、ファイルなどへのアクセスが必要なようです。
そうすると、SDカードが取り外されている旨のメッセージが表示されました。
1.SDカードを取り外す
2.ファイルを開く、作成するなどの操作を試行する(エラーになります)
3.「最新の情報に更新」を行う
4.SDカードが取り外されている旨のメッセージが表示される
なおSDカードを取り外した後、再度ホストPCに認識させるには、
以下の操作を行ってください。
rmmod g_mass_storage insmod g_mass_storage.ko file=/dev/mmcblk0 stall=0
h-yamamoto
>笹山様
御教示いただきありがとうございます。
再度ホストPCに認識させようとご教示いただいたコマンドを入力しましたが、以下のエラーが出て正常に実行できませんでした。
[root@armadillo810-0 (ttySC2) /tmp]# insmod g_mass_storage.ko file=/dev/mmcblk0 stall=0 lun0: unable to open backing file: /dev/mmcblk0 g_mass_storage renesas_usbhs: failed to start g_mass_storage: -2 insmod: can't insert 'g_mass_storage.ko': unknown symbol in module or invalid parameter
init.rdに以下を追加しているのですが、そちらが影響していることはございますでしょうか。
insmod /lib/modules/3.4-at20/kernel/drivers/usb/gadget/g_mass_storage.ko file=/dev/mmcblk0 stall=0
at_takashi.sasayama
笹山です。
> [root@armadillo810-0 (ttySC2) /tmp]# insmod g_mass_storage.ko file=/dev/mmcblk0 > stall=0 > lun0: unable to open backing file: /dev/mmcblk0 > g_mass_storage renesas_usbhs: failed to start g_mass_storage: -2 > insmod: can't insert 'g_mass_storage.ko': unknown symbol in module or invalid parameter
上記のエラーメッセージは SDカードが Armadillo に認識されていない時に出力されます。
SDカードの接続をご確認いただければと思います。
at_takashi.sasayama
2017年2月10日 11時00分
笹山です。
以下の手順で動作確認をしてみてください。
■カーネルコンフィギュレーション
カーネルコンフィギュレーション完了後、make を行い、カーネルイメージを作成します。
この際、以下のパスに g_mass_storage.ko が作成されます。
作成したカーネルイメージを Armadillo-810 に書き込み、起動します。
■g_mass_storage.ko
Armadillo-810 起動後、先に作成された g_mass_storage.ko を Armadillo-810 に転送します。
転送後、以下のオプションで insmod すると、SDカードの中身に Windows からもアクセスできるようになります。
■参考情報
Howto : Armadillo-410 液晶モデル開発セット で USB デバイス機能を使用する
http://armadillo.atmark-techno.com/howto/a400-use-usb-gadget