改版履歴

Cente USB2.0HostMassStorage for M66596

・RZ/A1Hに対応

RZ/A1H内蔵USBコントローラに対応した。

・M66596、SH7203、SH7263内蔵USBコントローラを対応から外した

M66596、SH7203、SH7263内蔵USBコントローラを対応から外した。

・USBメモリが認識できなくなることがある不具合を修正(Cente障害情報:021-0003)

USBメモリを挿入直後に抜いた場合、次回以降挿入時にUSBメモリが認識できなくなることがあったので修正した。

・レジスタオフセット定義を移動

レジスタオフセット定義をユーザカスタマイズ定義から内部定義へ移動した。

Cente USB2.0 Host MassStrage for M66596

・RX62N に対応。 
対応コントローラに RX62N を追加した。 
・配列の範囲外参照が発生する可能性がある不具合を修正。 
定義した配列の要素数を超えたアドレスにアクセスする可能性があるコードとなっていたので、修正した。なお、実運用上はそのようなアクセスが発生することはない。
 

Cente USB2.0 Host MassStorage for M66596

・SH7673 に対応。

対応コントローラに SH7673 を追加した。

・VBUS のロジックを選択できるように修正。

R8A66597 では VBUS 電源回路をコントローラから制御できるが、回路に応じてアクティブロー、アクティブハイを選択できるようにした。

・DMA 時バッファアラインメントの仕様を変更。

今までは MSC クラスドライバにて DMA アラインメントを行っていたが、バッファ削減のため、コントローラドライバ内部で行うように変更。

・カスタマイズパラメータ削除。

実質的には変更できない USBH_DEVINFO_NUM、USBH_IFACE_NUM、USBH_EPINFO_NUM などのユーザパラメータは非公開とした。

・ゼロレングスパケット検出エラーを修正。

コントローラドライバにてゼロレングスパケットが検出できない不具合を修正。

・無応答時リトライを追加。

USB デバイスが応答を返さなかったとき、3回リトライするように修正。これにより、READ/WRITE の通信エラーの頻度が低下する。

・通信タイムアウトをユーザカスタマイズパラメータ化。

USB デバイスが NAK を応答し続ける場合、転送関数がタイムアウトする時間をユーザカスタマイズ部で指定できるようにした。

・MSC TEST UNIT READY コマンド長の誤りを修正

MSC クラスドライバにて TEST UNIT READY コマンド長が誤っており、通信不可な USB デバイスが存在した。コマンド長を修正した。

Cente USB2.0 Host MassStorage for M66596

MSCにFD/CD機能を追加。

MSCにFD/CD機能を追加した。これに伴いMSCのAPIが変更になった。詳細は「バージョンアップにおける注意事項」を参照のこと。

R8A66597に対応。

ルネサスUSBコントローラR8A66597に対応した。

ユーザカスタマイズ項目の追加。

M66596クロックの選択、出力端子駆動電流制御の選択、DMAxピンコンフィグレーションレジスタDMAxCFGレジスタ設定の指定をユーザカスタマイズ部に追加した。

バッファアラインメント時にctmallocを未使用。

MSCにてバッファアラインメントを行う機能でctmallocは使用せず、staticな領域を使用することにした。

SH7203、SH7263で割込みステータスをリードできないケースがあるのを修正。

SH7203、SH7263で割込みステータスをリードできないケースがあった。ルネサスのマニュアルにステータスを3回リードしないと正しく読めないという記述が追加されたので修正した。

SETUPリクエストエラー後、同じパケットが出つづける不具合を修正。

SETUPリクエストエラー後は、SETUPデータをクリアするように修正。

複数のUSBホストコントローラで動作できるよう修正。

複数USBコントローラでエラーする箇所を修正した。

MSCでデータを不要に分割しているのを修正。

OHCIの仕様に合うようにMSCでデータを分割している箇所があったが、これは本来コントローラドライバの役割。MSCクラスでの分割機能を削除した。

Cente USB2.0 Host MassStorage for M66596

バッファアラインメント処理を追加。

アラインメントされていないバッファの読み書きがエラーしてしまう。クラスドライバにてアラインメント処理を実行する機能を追加した。

書き込み中にデバイスが抜かれた時に0番地アクセスが発生する現象を修正。

Version 1.04 に追加して、書き込み中にデバイスが抜かれた時に発生する 0 番地アクセスを修正した。

デバイスが指定したサイズ以上のデータを送ってきた場合にメモリが壊れる不具合を修正。

指定したサイズ以上のデータを送ってくるデバイスが存在するが、このとき送られた分だけデータを読み込んでしまうためメモリが壊れる不具合を修正した。

レジスタアクセス後、ウェイトが足りない箇所があるのを修正。

FIFO 選択レジスタアクセス後に規定時間ウェイトしていない箇所があり、転送処理が異常になることがある不具合を修正した。

コントロール転送に排他制御を追加。

複数タスクからコントロール転送を実行できるように排他制御を追加した。MSC には特に影響しない。

IN 転送エラー後に FIFO を停止する処理を追加。

IN 転送関数がエラーで返った後は FIFO を停止するように修正した。

Cente USB2.0 Host MassStorage for M66596

usbcommonを削除。

各パッケージの共通定義部を削除。パッケージ毎のヴァージョンアップ対応に弱い構成なので共通部は削除し、各パッケージ毎に定義を持つ方針とした。

バッファが4バイト境界にないときの不具合修正。

送受信バッファが4バイト境界にないときに、INトランザクションを正しく読めなかった不具合を修正した。

コントロール転送リトライ。

コントロール転送が失敗したときにリトライを行うよう修正した。

コントロール転送はバッファアラインメントを気にせず転送。

コントロール転送はDMA転送しないのでバッファアラインメントに関係なく転送を実行するように修正した。

デバイスを抜いた時に0番地アクセスの可能性を修正。

デバイスを抜いた時に0番地アクセスする可能性があったがこれを修正した。

Cente USB2.0 Host MassStorage for M66596

FAT16X(LBA),FAT32X(LBA)に対応

FAT16X(LBA),FAT32X(LBA)フォーマットのメモリを認識できるように修正した。

サンプル関数でのメモリ壊し修正

サンプルの ctusbh_msc_fs.c にてメモリを壊す箇所があり修正した。

write protected 状態に対応

USBメモリが write protected の状態にて write_sector 関数が無限ループに入る不具合を修正。

USBデバイス,USBホストのインクルードファイル共通化

USBデバイス,USBホストのインクルードファイル共通化に伴いファイル構成、構造体と定義の名称を変更した。

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 M66596

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

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

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

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

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

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

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

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