Cente USB2.0 Host MassStorage for M66596

Cente USB2.0 Host MassStorage for M66596

バルクIN/OUTに同一エンドポイントを指定するデバイスと通信できない。

デバイスから受信したエンドポイントデスクリプタ情報をドライバに格納する方法を修正し、動作可能とした。

バルク転送のタイムアウトが長いとこれにあわせて接続確認パケットがいつまでも送出できない。

Ver1.01ではコントロール転送とバルク転送は排他されている。無限にINを待つような使い方のクラスドライバと組み合わせると接続確認のコントロール転送パケットが送信できないため、排他制御を削除した。

接続確認パケット送信とバルク転送の排他がされない可能性がある。

接続確認パケット送信とバルク転送の排他されるよう修正した。新たに排他制御のOSリソースを追加した。

usbh_abort_transfer()で、vdis_psw()を使っている。

usbh_abort_transfer()で、誤ってvdis_psw()を使っていたため修正。

USBリクエスト定義のdefine箇所が適切なファイルにない。

USBリクエスト定義のdefineをctusbh_m66596_sys.hからctusbh_100.hに移動した。

CLEAR_FEATURE発行時でなくともパイプをリセットする可能性がある。

usbh_issue_ctrl()でエンドポイントへのCLEAR_FEATUREを発行したとき、コントローラドライバにてusbh_m66596_reset_pipe()している。このとき、「CLEAR_FEATURE判定」の条件が間違っていたので修正した。

登録可能ドライバ数デフォルト値ががやや少ない。

USBH_DRIVER_NUMを16とした。

エンディアン変更の関数名の内部関数が一般的な名前なので他のモジュールが提供するAPIとかぶる可能性がある。

lit2big2()/lit2big4()はusbh_lit2big2()/usbh_lit2big4()に変更。

Cente USB2.0 Host MassStorage for SuperH

ビッグエンディアン対応

ホストCPUがビッグエンディアンの場合でも動作するよう変更した。

SH7763対応

ホストCPUとしてSH7763にも対応した。

高負荷通信中にNAKを返すUSBデバイスに対応

エラー後、ホストからreset_pipeパケットをすることで、USBデバイスとの通信を復活させるようにした。

処理中のコンテキストスイッチに対応

割り込み許可・禁止にvdis_psw/vset_pswの使用をやめ、loc_cpu、unl_cpuを使用するようにした。

Cente USB2.0 Host MassStorage for M66596

HiSpeedで通信できないUSBメモリが存在する。

PINGに応答しないデバイスが存在する。ルネサスからの情報提供によりコントロールOUTにはパイプ5を使用し、インタラプトすることで対応。

HiSpeed時のデバイス接続確認に突然応答できないUSBメモリが存在する。

対象となるUSBデバイスはタイミングによってコントロール転送に応答できなくなるので一定期間通信を禁止した。コントローラドライバにおいては接続確認を有効・無効にするAPIを新規追加。停止するタイミングはクラスドライバにて制御することとした。また、データ通信が成功している間は接続確認パケットは送信しないこととした。

負荷をかけると突然通信が不能になりリクエストに対してNAKを返しつづけるUSBデバイスがいる。

エラー後、ホストがreset_pipeパケットを送出することでデバイスは復帰できる。ホスト側のエラー処理、及び、リトライ処理を修正。

割込み禁止後、dly_tsk()している箇所がある。

ディレイさせる前に割込みを有効とするよう修正。また、割込み禁止/有効にはNORTiのvdis_psw()/vset_psw()は禁止とした。

Page 4 of 4

Social Media