CX3のReNumerationについて

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

CX3にデバイスクラスの異なる2つのモジュール(センサやカメラなど)を接続し、

CX3とそのモジュール間にMIPI switchを挿入してPC側から切り替えをする、という構成を考えています。

[PC] --- [CX3] --- [MIPI switch] -+- [Sensor 1(UVC)]

                                                  +- [Sensor 2(UAS)]

このようにスイッチの先に物理的に2つのモジュールがつながっているという想定です。

(PC側はUVCドライバもUASドライバもサポートしており、

切り替えのトリガは全く別なポートを用いて2つのモジュール及びCX3に対して与える前提)

この構成において、

1) ReNumerationを使用することにより、CX3は1チップで実現することが可能であるという認識ですが正しいでしょうか。

2) 正しいとすると、ReNumerationの度にEnumeration(とFirnwareのダウンロード?)が入ると思うのですが、その際のオーバヘッドは

 どの程度でしょうか(どのように考えればよいでしょうか)。

0 件の賞賛
1 解決策

はじめにEnumerationした時に、各デバイスがEnumrationされれれば良いため、USBのRenumeration(再Enumeration)は必要ありません。

はじめに各デバイスがEnumrationされれば、USBホスト(今回の場合PC)から認識された状態が維持されます。

各クラス機能に設定されたEPとMIPI間のDMA設定を動的に切り替えることは可能です。

DMA ChannelがDestoryされている場合でもCreateされている場合でも、EPはホストで見える状態になります(FX3内のDMA設定の状況には依存しません。)

これについては、FX3であれば、AN75779 FW + CYUSB3KIT-003 EVKを用いて動作確認をすれば、上記のような動作をすることがわかると思います。CX3であれば、OV5640 FW + CX3 RDKをご利用いただけます。

従って、CX3 (またはFX3)で、複数のUVCデバイス(または他のデバイスクラス)をEnumerationすることは技術的に可能で、動作させることも可能です。但し、CypressのFX3/CX3 sample FWにそういった実装のものはございません。

よろしくお願い致します。

Hirotaka Takayama

元の投稿で解決策を見る

5 返答(返信)
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

ReNumerationは、ファームウェアがデバイス(CX3)にダウンロードされた後にUSBを電気的に切断および接続することで実行されます。CX3を複合デバイスとして動作させるのではなく、MIPI switch切り替えをした時に使用するモジュールに対応したファームウェアをPCからCX3に書き込むのでしょうか? お手数ですが、MIPI Switch切り替えをした際のCX3の期待する挙動について教えていただけますでしょうか。

この時、切り替えのオーバーヘッドはファームウェア書き込み時間+Enumeration時間になります。

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

ご回答ありがとうございます。

方法については特に規定はしていないのですが、システム(アプリ)上、オーバヘッドをできるだけ少なくしたいです。

Firmにカメラ2種の制御コードを実装し、CX3に対してアプリケーション(このアプリ自体は自作します)から

GPIOもしくはI2Cで機能切替通知をする(それに合わせてMIPI switchも切り替える)、というFirmを書き換えない

方式でも、実現可能であれば許容範囲です。

(これがOKであれば、Firmを入れ替えていない関係上こちらの方がオーバヘッドが小さいと思います)

Enumeration再実行自体は逃れようがないと思いますので、この点は許容範囲です。

(いくら少なくしたいという希望でもこの時間は計算に入れるべきである点は理解しています)

以上です。

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

念のための確認ですが、今回のようにデバイスクラスが異なるセンサがスイッチを経由して

接続されている前提で、スイッチを切り替えてPC側から認証させ直すとすると、

Enumerationは必須である、という理解で正しいでしょうか。

CX3はセンサからのデータについて、MIPI側とUSBのEP間でDMA転送をする設定として、

この時各USBクラス機能はすべてホスト(今回はPC)から認識された状態を維持しておく、

という使い方をしたいです。

各クラス機能に設定されたEPとMIPI間のDMA設定を動的に切り替えることになるのですが、

それ自体はできるのに対し、上記のようにEPとして見えている≒すべてPCから認識されている、

ということが可能であると思えなかったので、確認したい次第です。

(従って、所望の仕様はCX3 1チップでは実現不可能、と考えています。認識正しいでしょうか)

以上です。

0 件の賞賛

はじめにEnumerationした時に、各デバイスがEnumrationされれれば良いため、USBのRenumeration(再Enumeration)は必要ありません。

はじめに各デバイスがEnumrationされれば、USBホスト(今回の場合PC)から認識された状態が維持されます。

各クラス機能に設定されたEPとMIPI間のDMA設定を動的に切り替えることは可能です。

DMA ChannelがDestoryされている場合でもCreateされている場合でも、EPはホストで見える状態になります(FX3内のDMA設定の状況には依存しません。)

これについては、FX3であれば、AN75779 FW + CYUSB3KIT-003 EVKを用いて動作確認をすれば、上記のような動作をすることがわかると思います。CX3であれば、OV5640 FW + CX3 RDKをご利用いただけます。

従って、CX3 (またはFX3)で、複数のUVCデバイス(または他のデバイスクラス)をEnumerationすることは技術的に可能で、動作させることも可能です。但し、CypressのFX3/CX3 sample FWにそういった実装のものはございません。

よろしくお願い致します。

Hirotaka Takayama

TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

ご回答ありがとうございます。

サンプルのファームが存在しない点も含め、了解しました。

(必要になった場合は、スクラッチで生成することとします)

以上です。

0 件の賞賛