Armadilloフォーラム

Armadillo-X1の各USBポートからのテストパターン出力について

yamakawa

2020年3月6日 16時38分

やまかわと申します。

Armadillo-X1の各USBポートを使用して、テストパターンを出力したいと考えています。
各USBポートは、Armadillo-X1のマニュアルにあるブロック図より、
 ・USB_OTG1 - CON2
 ・USB_OTG2 - CON8より拡張
 ・USB_HUB3 - CON8より拡張
となっており、各Host Modeとしております。

Linux-4.9を使用しており、
 /sys/kernel/debug/ci_hdrc.#/prot_test
の使用により、
 ・USB_OTG1 - ci_hdrc.0
 ・USB_OTG2 - ci_hdrc.2
からはテストパターンの出力が確認できました。

このとき、
 ・USB_HUB3
はどのように指定すればよいでしょうか?

手順等、ご教示頂けると幸甚です。

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

コメント

溝渕です。

> Armadillo-X1の各USBポートを使用して、テストパターンを出力したいと考えています。
:省略
>  ・USB_HUB3
> はどのように指定すればよいでしょうか?

USB_OTGは直接テストパターンを出力できるのに対し、USB Hubからテストパター
ンを出力する為にはUSB Hubをテストモードに移行させる必要があります。

添付のパッチのように、ソースコードを変更して、テストモードに移行させてください。
# こちらでは動作確認していませんが、パッチで示す通り該当ctrl_msgを送信
# するとテストモードに移行すると思います。

U-Bootの保守モードで次のようにパラメータを指定すると、HUB3からテストパ
ターンが出力されると思います。

=> setenv optargs usbcore.hubtestport=3
=> boot

テストモードを変更する場合は、パッチ内の以下の部分を適宜変更してください。

+    __u16 test = TEST_PACKET;

やまかわです。
返信、ありがとうございます。

> USB_OTGは直接テストパターンを出力できるのに対し、USB Hubからテストパター
> ンを出力する為にはUSB Hubをテストモードに移行させる必要があります。
>
> 添付のパッチのように、ソースコードを変更して、テストモードに移行させてください。
>
> U-Bootの保守モードで次のようにパラメータを指定すると、HUB3からテストパ
> ターンが出力されると思います。
>
>

> => setenv optargs usbcore.hubtestport=3
> => boot
> 

>
> テストモードを変更する場合は、パッチ内の以下の部分を適宜変更してください。
>
>

> +    __u16 test = TEST_PACKET;
> 

>

上記の手順にて、USB Hubをテストモードにしてみました。
起動時に、
 set_port_feature - portID = 3, hubintestmode = 4
 Setting HUB to send Test_Packet
 Placing port in test mode passed
となっていることを確認しました。
ここで、USB_HUB3から何らかの波形(信号)が出力されていることを確認できましたが、
USB_OTG1やUSB_OTG2での波形とは異なるものでした。

> # こちらでは動作確認していませんが、パッチで示す通り該当ctrl_msgを送信
> # するとテストモードに移行すると思います。
とありますが、どのように指定(送信)すればよいか、例でも示して頂けると幸甚です。

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

溝渕です。

> 上記の手順にて、USB Hubをテストモードにしてみました。
> 起動時に、
>  set_port_feature - portID = 3, hubintestmode = 4
>  Setting HUB to send Test_Packet
>  Placing port in test mode passed
> となっていることを確認しました。
> ここで、USB_HUB3から何らかの波形(信号)が出力されていることを確認できましたが、
> USB_OTG1やUSB_OTG2での波形とは異なるものでした。

どのように異なっていましたか?

test mode(Test_J, Test_Kなど)を合わせた上で異なりますか?

> > # こちらでは動作確認していませんが、パッチで示す通り該当ctrl_msgを送信
> > # するとテストモードに移行すると思います。
> とありますが、どのように指定(送信)すればよいか、例でも示して頂けると幸甚です。

パッチ内の、以下の箇所が該当します。

+    return usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0),
+                   USB_REQ_SET_FEATURE, USB_RT_PORT, USB_PORT_FEAT_TEST, ((test << 8) | hubtestport),
+                   NULL, 0, 1000);

山川です。

> > ここで、USB_HUB3から何らかの波形(信号)が出力されていることを確認できましたが、
> > USB_OTG1やUSB_OTG2での波形とは異なるものでした。
>
> どのように異なっていましたか?
>
> test mode(Test_J, Test_Kなど)を合わせた上で異なりますか?
>

簡単ではありますが、波形を取得してみましたので、添付致します。
ご確認頂けると幸甚です。

ファイル ファイルの説明
Test_Waveform_20200309.pdf

溝渕です。

一旦USBデバイス(USBメモリ等何でも良いです)を抜き刺しすると、波形に変化が無いか確認していただけますか。

やまかわ です。

> 一旦USBデバイス(USBメモリ等何でも良いです)を抜き刺しすると、波形に変化が無いか確認していただけますか。

USBメモリを抜き差ししてみましたが、波形に変化は見受けられませんでした。

溝渕です。

ご確認有難うございます。

> > 一旦USBデバイス(USBメモリ等何でも良いです)を抜き刺しすると、波形に変化が無いか確認していただけますか。
>
> USBメモリを抜き差ししてみましたが、波形に変化は見受けられませんでした。

こちらでもArmadillo-X1でUSB_HUB3のテスト波形を確認してみましたが、綺麗
に出力されていました。

Armadillo-X1のCON8の該当ピンに直接プローブを接続しました。対向デバイス
も何も接続されていない状態で波形を確認しています。

山川様のお手元でも同様の測定環境でしょうか。

やまかわです。

> こちらでもArmadillo-X1でUSB_HUB3のテスト波形を確認してみましたが、綺麗
> に出力されていました。

ご確認、ありがとうございます。
お手数ですが、測定波形をご教示頂けないでしょうか?

> Armadillo-X1のCON8の該当ピンに直接プローブを接続しました。対向デバイス
> も何も接続されていない状態で波形を確認しています。
>
> 山川様のお手元でも同様の測定環境でしょうか。
>

こちらでも、対向デバイスに何も接続しない状態で、CON8のピンを測定しております。
(USB_OTG2と同じ条件で測定しております。)

溝渕です。

> お手数ですが、測定波形をご教示頂けないでしょうか?

差動プローブで測定した波形を添付します。

2つの波形は共にTEST_PACKETで、測定レンジのみ異なります。

ファイル ファイルの説明
USB波形.png
USB波形2.png

溝渕 様

山川です。

> 差動プローブで測定した波形を添付します。

波形のご提示、ありがとうございます。
確かに、正しそうな波形が出力されているようです。

こちらでは、TEST_J, TEST_Kでは正しく動作していそうなのに、
TEST_PACKETが正しくないことに苦慮しております。

確認させて頂きたいのですが、
 ・hub.c (パッチで変更されていると思われます。)
 ・カーネルコンフィグ (.config)
のご提示は可能でしょうか?

同じ条件を作り出したいと考えております。

その他、指定・変更すべき事項はありますか?

ご回答頂けると幸甚です。

溝渕 様

やまかわです。

USB_OTG2での波形ですが、テストモードの切り替え時に、
(echo 1 > port_test から echo 4 > port_test としたとき、)
一時的ですが、USB_HUB3と同様の波形が出ていることが確認できました。

添付ファイルを確認ください。

御社での波形観測時にテストモード切り替え時に、同様な事象は確認できませんか?
このとき、Armadillo-X1内部的には、何が行われているのか、判断できますでしょうか?

波形観測時のファイルとともに、ご確認頂けると幸甚です。

溝渕です。

> 添付ファイルを確認ください。

ファイルの添付をお願いいたします。

溝渕です。

UBS_HUB3のTEST_PACKETの波形について、一番下の図はその1つ上の図を単に拡
大しただけのものですか?

"DP-DN"と"DP+DN"の違いは何でしょうか?

やまかわです。

説明が不足しておりました。

> UBS_HUB3のTEST_PACKETの波形について、一番下の図はその1つ上の図を単に拡
> 大しただけのものですか?

はい。DP, DNについては、拡大しただけです。

> "DP-DN"と"DP+DN"の違いは何でしょうか?

オシロ内の演算式の違いです。
"DP-DN"の式は波形測定時の指定誤りで、正しくは"DP+DN"になります。
(下図が正しいです。)

USB_OTG2のテストモード切り替え直後の波形と、
USB_HUB3の波形が酷似しているように見えます。

溝渕です。

弊社で再度波形を測定してみました。

結果、Test_Waveform_20200310.pdf内の(USB_OTG2/USB_HUB3共に)一番下の波
形が正しい(コンプライアンス試験が通る状態)です。

USB_OTG2の場合、テストモードに移行させてから1秒程度待つと、下から2番目
の(矩形波が綺麗に出ているような)波形となりました。この状態ではコンプラ
イアンス試験が通りません。

山川様に示していただいた波形は、振幅が小さいのが気になります。これは恐
らくオシロスコープの周波数帯域不足によるものかと思います。

High Speedの測定をする場合は、オシロスコープの周波数帯域は2GHz以上が必
要です。また、コンプライアンス試験を行う場合は、専用のフィクスチャーボー
ドを接続する必要がありますのでご確認ください。

溝渕です。

> 確認させて頂きたいのですが、
>  ・hub.c (パッチで変更されていると思われます。)
>  ・カーネルコンフィグ (.config)
> のご提示は可能でしょうか?

hub.cは、Linuxカーネル v4.9-at12に、本スレッドに添付の
"linux-4.9.x-at_usbhub-testmode.patch"を適用したものを利用しました。

カーネルコンフィグは、デフォルトコンフィギュレーション(x1_defconfig)です。

> その他、指定・変更すべき事項はありますか?

オシロスコープとGNDはしっかり接続されていますか?