Armadilloフォーラム

Armadillo-EVA 1500 で USB デバイス機能(マスストレージ)を使用する

y_ich

2015年9月3日 13時39分

市川といいます。

Armadillo-EVA 1500でUSB デバイス機能(マスストレージ)を使用する為に製品マニュアル、
「Howto : Armadillo-410 液晶モデル開発セット で USB デバイス機能を使用する」
を参考に設定していますがCON9がUSBデバイスとして機能しません。
どの様に設定すれば宜しいでしょうか。

1.コンフィギュレーションでは以下の様にしています。
Device Drivers --->
[*] USB support --->
--- USB support
USB Mass Storage support
*** USB Miscellaneous drivers ***
USB Gadget Support --->
--- USB Gadget Support
Renesus R8A66597 USB Peripheral Controller
[*] on-chip USBHS type with extended bulk endpoint support
USB Gadget Drivers
Mass Storage Gadget
2.上記コンフィギュレーション内容でビルド後ImageファイルをSDカードの/bootに書き込みます。
(SDブートにしています)
3.SDカードでarmadillo-EVA 1500を起動後上記ビルドで作成されたg_mass_storage.koをロード
insmod g_mass_storage.ko file=/dev/sda1 stall=0
としますが以下のメッセージがでてロードできません。

g_mass_storage: Unknown symbol usb_gadget_probe_driver (err 0)
g_mass_storage: Unknown symbol usb_gadget_unregister_driver (err 0)
Error: could not insert module g_mass_storage.ko: Unknown symbol in module

どの様にすれば宜しいでしょうか。

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

コメント

at_mizo

2015年9月10日 16時33分

溝渕です。

> 3.SDカードでarmadillo-EVA 1500を起動後上記ビルドで作成されたg_mass_storage.koをロード
> insmod g_mass_storage.ko file=/dev/sda1 stall=0
> としますが以下のメッセージがでてロードできません。

上記手順だと、g_mass_storageが必要とするudc-coreなどのカーネルモジュー
ルがロードされません。そのため、

> g_mass_storage: Unknown symbol usb_gadget_probe_driver (err 0)
> g_mass_storage: Unknown symbol usb_gadget_unregister_driver (err 0)
> Error: could not insert module g_mass_storage.ko: Unknown symbol in module

のようにg_mass_storageのロードに失敗しています。

静的にドライバを組み込むか、次のようにmake modules_installを利用してカー
ネルモジュールをインストールすると解決できます。
# USB Gagetはドライバの依存関係を把握するのが大変と思うので、手動での依
存関係解決はあまりおすすめしません。

[atde]$ cd linux-3.4-ae1500-[version]
[atde]$ mkdir /tmp/mod
[atde]$ make ARCH=arm INSTALL_MOD_PATH=/tmp/mod modules_install

上記の例だと、/tmp/mod/以下にモジュールがインストールされるので、これを
Armadillo-EVA 1500のルートファイルシステムにそのままコピーしてください。

コピー後は、modprobeを利用したカーネルモジュールの追加が可能になると思
います。
# modprobeは、ドライバの依存関係を解決してくれるためinsmod/rmmodよりも
容易に使用できるかと思います。

以上、お試しください。

y_ich

2015年9月11日 18時49分

市川です。

make modules_installとmodproveでモジュールの追加を実行してみました。
makeは
make ARCH=arm INSTALL_MOD_PATH=/tmp/mod modules_installで
INSTALL drivers/scsi/scsi_wait_scan.ko
INSTALL drivers/usb/gadget/g_mass_storage.ko
INSTALL drivers/usb/gadget/gadgetfs.ko
INSTALL drivers/usb/gadget/r8a66597-udc.ko
INSTALL drivers/usb/gadget/udc-core.ko
INSTALL drivers/usb/storage/usb-storage.ko
INSTALL fs/nfs/blocklayout/blocklayoutdrive.ko
DEPMOD 3.4.81-ae1500-at2
が表示され、/tmp/mod/lib/modules/3.4.81-ae1500-at2/kernel/drivers/usb/gadget/にg_mass_storage.koは生成されました。

modprobe g_mass_storage.ko file=/dev/sda1の結果は
FATAL: Module g_mass_storage.ko not found.となり追加できませんでした。

ちなみに
insmod udc-core.ko
insmod g_mass_storage.ko file=/dev/sda1
の結果は
Error: could not insert module g_mass_storage.ko: No such device
となり追加できませんでした。(sda1はUSBメモリーがありマウントすれば読み取れます)

以上ですが見直すところ等有りましたら宜しくお願い致します。

at_mizo

2015年9月14日 9時51分

溝渕です。

> modprobe g_mass_storage.ko file=/dev/sda1の結果は
> FATAL: Module g_mass_storage.ko not found.となり追加できませんでした。

modprobeの引数は、「モジュールファイル名」でなく「モジュール名」なので、

# modprobe g_mass_storage

を試してみてください。

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

y_ich

2015年9月14日 11時55分

市川です。

# modprobe g_mass_storage を実行しました。

ERROR: could not insert 'g_mass_storage': No such device
となります。

他に試したことですが、
ドライバが入っていませんがSW2.4オフの状態でUSBケーブルをCON9とPCで接続するとPCは無反応でした。
この後でUSBケーブルを抜くと
hub 1-0:1.0: over-current condition on port 1
hub 3-0:1.0: over-current condition
となり、I/Oがホストの場合の表示に見えます。

以上ですが宜しくお願い致します。

at_mizo

2015年9月14日 12時08分

溝渕です。

> # modprobe g_mass_storage を実行しました。
>
> ERROR: could not insert 'g_mass_storage': No such device
> となります。

モジュールはどこに配置しましたか?

modules.*(modules.depなど)や、*.koファイルが入っているkernel/は、
/lib/modules/`uname -r`
以下にあることが期待されています。

詳しくは、modprobeのmanページを参照してください。

[atde]$ man modprobe

以上です。

y_ich

2015年9月14日 12時18分

市川です。

モジュールは
/lib/modules/3.4.81-ae1500-at2/kernel/drivers/usb/gadget
で、ここで実行しました。

宜しくお願いします。

at_mizo

2015年9月14日 13時15分

溝渕です。

> INSTALL drivers/scsi/scsi_wait_scan.ko
> INSTALL drivers/usb/gadget/g_mass_storage.ko
> INSTALL drivers/usb/gadget/gadgetfs.ko
> INSTALL drivers/usb/gadget/r8a66597-udc.ko
> INSTALL drivers/usb/gadget/udc-core.ko
> INSTALL drivers/usb/storage/usb-storage.ko
> INSTALL fs/nfs/blocklayout/blocklayoutdrive.ko

r8a66597-udcもモジュールにしているのですね。

恐らく、g_mass_storageはr8a66597-udcに依存していないので(modules.depを
確認してみてください)、まず、r8a66597-udcを登録する必要があると思います。

# modprobe r8a66597-udc

を実行すると、モジュールが正しく登録されるか確認してみてください。

以上です。

y_ich

2015年9月14日 16時47分

お世話になります。市川です。

modprobe r8a66597-udc の結果は

r8a66597_udc: Unknown symbol usb_get_transceiver (err 0)
r8a66597_udc: Unknown symbol usb_put_transceiver (err 0)
ERROR: could not insert 'r8a66597_udc':: Unknown symbol in module, or unkown parameter (see dmesg)
で登録できませんでした。
引数が足りないのでしょうか。恥ずかしながら分っておりません。

プロダクトマニュアルの7.4.11.USBファンクションを参照して
カーネルコンフィギュレーションを実機では
Device Drivers --->
[*] USB support --->
--- USB support
<M> USB Mass Storage support
*** USB Miscellaneous drivers ***
<M> USB Gadget Support --->
--- USB Gadget Support
<M>] Renesus R8A66597 USB Peripheral Controller
[*] on-chip USBHS type with extended bulk endpoint support
USB Gadget Drivers
<M> Mass Storage Gadget


<M> Renesus R8A66597 USB Peripheral Controller
の様にしているので r8a66597-udc もモジュールになっていると思います。

マニュアルでは
<*> USB Peripheral Controller (Renesas R8A66597 USB Peripheral Controller) --->
(X) Renesas R8A66597 USB Peripheral Controller <CONFIG_USB_R8A66597>
となっており実機と若干異なります。
実機でのマスストレージのコンフィギュレーションは正しいでしょうか。

また、マニュアルと同じコンフィギュレーションのソースは有りますか。

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

y_ich

2015年10月6日 11時34分

お世話になります。市川です。

以下で使用することが出来ました。

Device Drivers --->
[*] USB support --->
--- USB support
<*> USB Mass Storage support
<*> USB Gadget Support --->
<*> USB Peripheral Controller (Renesas R8A66597 USB Peripheral Controller)
[*] on-chip USBHS type with extended bulk endpoints support
<M> USB Gadget Drivers
<M> Mass Storage Gadget
<*> GPIO based peripheral-only VBUS sensing 'transceiver'

モジュール化する所を誤っていたようです。
以上、ありがとうございました。