Armadilloフォーラム

Armadillo-x1 USBマスストレージについて

hasehase10

2020年3月3日 14時12分

長谷川と申します。

Armadillo-x1をUSBOTG2経由でUSBマスストレージとして、
認識させる方法を調べています。

Armadillo-x1のCON8に拡張ボード(100ピンコネクタ変換基板)を接続し、
拡張ボードにUSBケーブルを半田付け(※)し、タイプAオスコネクタでPCに接続しています。
※CON8の47pin(D+),48pin(D-),49pin(GND),50pin(VBUS))とUSBタイプAオスケーブルの各ピンを接続しています。
USBマスストレージ用なので、CON8:68pin(ID)は未接続(オープン)にしています。

最終的には、USBデバイスコネクタ(例えばマイクロAB)経由で、
PCからArmadillo-x1に接続しているSDスロット拡張ボード上のSDカード内を読み書きしたいと考えています。

まず、マニュアル等を参照し、開発環境(ATDE7)から
工場出荷状態CDC Composite Device(Ethernet and ACM)の使用ができたことは確認済です。

上記からUSBマスストレージ機能に変更しようとしています。
個別に問い合わせを行い、カーネルコンフィギュレーションの変更の参考手順を
教えて頂きましたが、不明点があり、フォーラムサイトへの投稿を促されましたので、投稿させて頂きます。

〇質問事項
カーネルコンフィギュレーションの変更について
現状カーネルコンフィギュレーション上、(1)の状態から
 参考手順として教えて頂いた(2)の状態に変更できない状況です。
※Mass Storage Gadgetを選択できない状態。

(1)現在のカーネルコンフィギュレーション
==================================================
Kernel Configuration
-> Device Driver
-> [*] USB support
-> <*> USB Gadget Support
-> <*> USB Gadget Drivers(CDC Composite Device (Ethernet and ACM))
==================================================

(2)マスストレージ用のカーネルコンフィギュレーション
==================================================
Kernel Configuration
-> Device Driver
-> [*] USB support
-> <*> USB Gadget Support
-> <*> USB Gadget Drivers
(X) Mass Storage Gadget
==================================================

■実施した手順
下記の手順を実施しています。不足等あればお教え願います。

1)パッチの適用が必要とのことよりパッチの適用は下記手順より実施済です。
linux-4.9-x1-[version]ディレクトリに添付の下記のパッチを置く。
linux-4.9_fix-usbgadget-mass_strage.patch

パッチの適用手順
[PC ~/linux-4.9-x1-at[version]]$ patch -p1 < linux-4.9_fix-usbgadget-mass_strage.patch

2)下記を参考に10.2 Linuxカーネルをビルドする:3項まで実施。
https://manual.atmark-techno.com/armadillo-x1/armadillo-x1_product_manu…

3)その後、下記を実施し、カーネルコンフィギュレーションをマスストレージに変更しようとしていますが、変更できません。
[PC ~/linux-4.9-x1-at[version]]$ make ARCH=arm menuconfig

■現在の使用環境
 ・Linuxカーネル、DTB:Linux-4.9-at12
・ユーザーランド:Debian GNU/Linux 9 (Stretch)
 ・ブートローダー(U-boot):2016.07-at20
 ・開発環境:ATDE7

■ビルド
 コンフィギュレーション変更後、上記の参考URLを元にビルドを実施する予定です。
10.2 Linuxカーネルをビルドする:4項
 ※CDCのコンフィギュレーションではビルドできることを確認済です。

以上です。

コメント

佐藤です。

> 〇質問事項
> カーネルコンフィギュレーションの変更について
> 現状カーネルコンフィギュレーション上、(1)の状態から
>  参考手順として教えて頂いた(2)の状態に変更できない状況です。
> ※Mass Storage Gadgetを選択できない状態。
選択できない状態とは、Mass Storage Gadget という項目自体が無いということでしょうか、
それとも、項目はあるがエンターキーで選択しても (X) マークがつかないということでしょうか。

正しく選択できて(Xマークがついて)いれば以下のような表示になっているかと思います。

Kernel Configuration
-> Device Drivers
   -> [*] USB support
     -> <*> USB Gadget Support
       -> <*> USB Gadget Drivers (Mass Storage Gadget) <-- 括弧の中の表記が Mass Storage Gadget に変わる

長谷川です。

> 佐藤です。
>
> > 〇質問事項
> > カーネルコンフィギュレーションの変更について
> > 現状カーネルコンフィギュレーション上、(1)の状態から
> >  参考手順として教えて頂いた(2)の状態に変更できない状況です。
> > ※Mass Storage Gadgetを選択できない状態。
> 選択できない状態とは、Mass Storage Gadget という項目自体が無いということでしょうか、
> それとも、項目はあるがエンターキーで選択しても (X) マークがつかないということでしょうか。
>
> 正しく選択できて(Xマークがついて)いれば以下のような表示になっているかと思います。
>

> Kernel Configuration
> -> Device Drivers
>    -> [*] USB support
>      -> <*> USB Gadget Support
>        -> <*> USB Gadget Drivers (Mass Storage Gadget) <-- 括弧の中の表記が Mass Storage Gadget に変わる
> 

>
>
エンターキーを押すことでMass Storage Gadgetの項目が表示されるのを確認し、上記の正しい表記になりました。
ありがとうございます。
※項目の右側に矢印が見えていなかったのでエンターキーで次に移行できる意識がありませんでした。

追加で質問させてください。
以降、ビルドも問題なく実施でき、uImageも作成できました。
作成したuImageと以前教えてもらっていたarmadillo_x1-extboard-eva01-usbdevice.dtbを
Armadillo-x1にコピーして起動、ログインまで実施できました。

PCからArmadillo-x1に接続しているSDスロット拡張ボード上のSDカードにアクセスする為
以下のコマンドを実行しましたが、No such file or directoryと表示されてしまいます。
echo /dev/mmcblk0p1 >
/sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file

起動時のメッセージで下記の表示がありますが、関係ありますでしょうか。
Mass Storage Function, version: 2009/09/11
LUN: removable file: (no medium)
no file given for LUN0
g_mass_storage ci_hdrc.2: failed to start g_mass_storage: -22

対策方法等ありましたら、ご教授頂けないでしょうか。

以上です。

佐藤です。

> PCからArmadillo-x1に接続しているSDスロット拡張ボード上のSDカードにアクセスする為
> 以下のコマンドを実行しましたが、No such file or directoryと表示されてしまいます。
> echo /dev/mmcblk0p1 >
> /sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file
保守モードで起動して、uboot のプロンプトで以下のコマンドを実行した後に起動して見てもらえますでしょうか。

=> setenv optargs g_mass_storage.removable=1

長谷川です。

> 佐藤です。
>
> > PCからArmadillo-x1に接続しているSDスロット拡張ボード上のSDカードにアクセスする為
> > 以下のコマンドを実行しましたが、No such file or directoryと表示されてしまいます。
> > echo /dev/mmcblk0p1 >
> > /sys/devices/soc0/soc/30800000.aips-bus/30b20000.usb/ci_hdrc.2/gadget/lun0/file
> 保守モードで起動して、uboot のプロンプトで以下のコマンドを実行した後に起動して見てもらえますでしょうか。
>

> => setenv optargs g_mass_storage.removable=1
> 

ご連絡ありがとうございます。
uboot上で上記コマンド実行後、bootコマンドで起動し、上記のechoコマンドを実行した所、上記表示はなくなりました。
その状態でPCへUSB接続した所、Armadillo-x1上のSDカードにアクセス(読み書き)することができました。
ご教授ありがとうございました。

kamedatomonobuです。

> ■実施した手順
> 下記の手順を実施しています。不足等あればお教え願います。
>
> 1)パッチの適用が必要とのことよりパッチの適用は下記手順より実施済です。
> linux-4.9-x1-[version]ディレクトリに添付の下記のパッチを置く。
> linux-4.9_fix-usbgadget-mass_strage.patch

linux-4.9_fix-usbgadget-mass_strage.patch
の入手方法を教えて頂きたいです。

以上

佐藤です。

> linux-4.9_fix-usbgadget-mass_strage.patch
> の入手方法を教えて頂きたいです。
最新のカーネルにはすでにパッチ適用済みですので、そちらをご利用ください。
・イメージ
https://users.atmark-techno.com/files/downloads/armadillo-x1/image/uIma…
・ソース
https://users.atmark-techno.com/files/downloads/armadillo-x1/source/lin…