購技術サポート情報

USB/exを購入したお客様からの、技術サポートに寄せられるよくあるご質問に回答します。

ターゲットボードについて

  • まずは、ご使用の環境でサンプルアプリケーションが正しく動作する事をご確認ください。
  • 動作検証を行っていないボードについては、ボードの差異による障害が発生する可能性があります。
  • ボードの差異による障害の場合は、動作保証の対象外とさせていただいておりますので、あらかじめご了承ください。できれば、「M3A-HS64G50」を入手いただき動作確認いただければと思います。
  • まずは、ご使用の環境でサンプルアプリケーションが正しく動作する事をご確認ください。
  • 動作検証を行っていないボードについては、ボードの差異による障害が発生する可能性があります。
  • ボードの差異による障害の場合は、動作保証の対象外とさせていただいておりますので、あらかじめご了承ください。できれば、「環境について」に記載しておりますターゲットボードを入手いただき動作確認いただければと思います。

サンプルアプリケーションについて

  • usblInit()が既に正常終了していた場合の戻り値になります。
  • usblInit()は、1度正常終了している為、問題ありません。
  • OSのコンフィグレーションをご確認ください。
  • この現象は、VER1.00以前のバージョンをお使いのお客様が対象になります。
    最新のバージョンを案内いたしますので、弊社営業までお問合わせください。
  • 原因は、SCIF,USBのモジュールストップコントロールレジスタがコード上で初期化されていない為です。初期化を行うようにコードを追加いただく事で対応可能です。

実装例: smp7203_usbex.c ini_pio()

#if !defined(NORTiSIM)
                            :
                            :
                        #ifdef USE_USB_EX
                            /* SCIF and USB module clock enable (before init sio) */
                        #ifdef USE_AP_SH2A_1A /* use SCIF3 */
                            sfr_clr(SYS_STBCR4, 0x10);
                        #else /* use SCIF0 */
                            sfr_clr(SYS_STBCR4, 0x80);
                        #endif /* USE_AP_SH2A_1A */
                            sfr_clr(SYS_STBCR6, 0x01); /* START USB */
                        #endif /* USE_USB_EX */

                        #endif
  • ボリュームラベルを指定してフォーマットして下さい。
    もしくはホストPCにおいて、一旦ファイルを書き込んで下さい。

補足1
USBメモリの「空きクラスタサイズ領域」の値によるものと考えられます。これは、FAT32の仕様、弊社ファイルシステムの動作、およびUSBメモリのフォーマッタに関係があります。まず、FAT32の仕様として空きクラスタサイズを管理する領域があります。通常、ファイルの生成/更新/削除や、フォーマットでこの領域が更新されます。ここで、この領域には「空きクラスタサイズが計算されていない」という値が設定される事(※)があります。

  • WindowsXP SP3 でUSBメモリをフォーマットした場合、設定されるようです。

補足2
弊社ファイルシステムでは、空きクラスタサイズが「計算されていない」という値だった場合、ファイルの更新を行っても、空きクラスタサイズを更新しません。これは、「計算されていない」という値を設定しているのは何かしらの理由がある、という考えで、勝手に変更しないようにしている為です。

ですので、以下の手順を行った場合、

  1. WindowsXP SP3でフォーマット
  2. USBメモリ接続
  3. USB/exを用いてファイル生成
  4. USBメモリ切断
  5. USBメモリ接続
  6. USB/exを用いてファイル更新

3.と 6.で空きクラスタサイズの計算が行われます。

ユーザーアプリケーションについて

デバイスがマウントされるまでに実行した為と考えられます。

catFsUsbGetMountDevName()までに少し時間を置いて実行していただくか、catFsUsbGetMountDevName()でエラーだった場合、ディレイをいれて再度確認していただくことでOKが返ると考えられます。

実装例

int status,nLoop;
      unsigned char devName[32];

      for(nLoop = 0; nLoop < 10000; nLoop++)
      {
          dly_tsk(100/MSEC);
          status = catFsUsbGetMountDevName( 0, devName );
          if(status != -1)
          {
              break;
          }
      }

JTAGのトレースモードからAUDCKを使用せず、TCKを使用するようにICE上で設定する。

  • ターゲットボード:AP-SH2A-1A + ICE:ビットラン社のDR-01の環境で確認。

1ディレクトリあたり126ファイルまでを目安としてください。

詳細については「MatrixQuestUSB/ex プログラマーズガイド パフォーマンスに配慮したアプリケーション設計のガイドライン」をご参照ください。

この現象は、VER1.01以前のバージョンをお使いのお客様が対象になります。最新のバージョンを案内いたしますので、弊社営業までお問合わせください。

原因は、接続時にGET_MAX_LUNを複数回実行する事により、デバイスが無応答になる為です。この現象が発生するかどうかは、ご使用のデバイスに依存します。

この現象は、VER1.00以前のバージョンをお使いのお客様が対象になります。最新のバージョンを案内いたしますので、弊社営業までお問合わせください。

原因は、キャッシュが有効になっていない為です。リンク順の指定で、vecXXXXh.objが先頭になるようリンク順を変更いただく事で対応可能です。

USBメモリの空き容量サイズを取得する際、k_ioctl(fd, K_IONFREE, &pFreeSize)を使用して取得することができます。

K_IONFREE の詳細については、「MatrixQuestUSB/ex ユーザーズガイド 5.2.3 K_IONFREE --- ボリュームの空き領域サイズの取得」をご参照ください。

但し、K_IONFREE はUSBメモリの空き容量サイズが 2GB 以上の場合、エラーになります。2GB 以上の空き容量サイズを取得する場合は K_IOFSTATFSGET を使用してください。K_IOFSTATFSGET の詳細については、「MatrixQuestUSB/ex ユーザーズガイド 5.2.10 K_IOFSTATFSGET --- ファイルシステム情報の取得」をご参照ください。

実装例

int smpGetFreeCapacity (
                          char *dirname      /* base dir name */
                      ) {
                          int fd;
                          int ret;
                          K_STATFS_ST *pStat;

                          pStat = k_malloc ( sizeof (K_STATFS_ST) );
                          if ( pStat == NULL ) {
                              k_printf( "MALLOC ERROR\n" );
                          }

                          fd = k_open( dirname, K_O_RDONLY, 0 );
                          if ( fd == K_ERROR ) {
                              k_free ( pStat );
                              return ( K_ERROR );
                          }

                          k_printf( "OPEN SUCCESS\n" );

                          ret = k_ioctl (fd, K_IOFSTATFSGET, (int)pStat);
                          if ( ret == K_ERROR ) {
                              k_free ( pStat );
                              k_close( fd );
                              return ( K_ERROR );
                          }

                          k_printf ( "f_bfree : %d, f_bsize : %d\n",
                             pStat->f_bfree, pStat->f_bsize );

                          k_free ( pStat );
                          k_close ( fd );
                          return ( K_OK );
                      }

K_IOFSTATFSGET で取得できる K_STATFS_ST 構造体のメンバの f_bfree には「総空きブロック数」が格納され、f_bsize には「ブロックサイズ」が格納されます。

この2つから空き容量サイズを算出することができます。
f_bfree(総空きブロック数) * f_bsize(ブロックサイズ) = 空き容量サイズ

なお、f_bfree(総空きブロック数)が変化しない場合、以下の手順を行って再度空き容量サイズを取得してください。USBメモリを接続した際、
「USBメモリをスキャンして修復しますか?」
という内容のウィンドウが表示される場合、修復処理を行い、任意のファイルを書き込みます。Windows XP の場合は以下の処理を行って、再度空き容量サイズを取得してください。

  1. WindowsでUSBメモリをフォーマットします。
  2. 任意のファイルをUSBメモリへ書き込みます。
  3. コマンドプロンプトでCHKDSKの結果を取得して修復の必要があれば、修復します。

OSのコンフィグレーションについて

リリース版(rel.lib)を使用される場合 : 568、デバッグ版(deb.lib)を使用される場合 : 1008 になります。

16 になります。

28 になります。

2 になります。

15 になります。

184kになります。
ただし、シェルを動作させる場合は、259k必要になります。

※記載されている製品・システム名は、各社の商標または登録商標です。

「MatrixQuestUSB/ex」
に関するお問い合わせ
この製品に関するお問い合わせ
「MatrixQuestUSB/ex」
のカタログダウンロード
カタログダウンロード
資料請求
サービスに関連するお役立ち資料を
ダウンロードいただけます。
資料請求はこちら
お問い合わせ
お⾒積りのご依頼や、サービスのお悩み相談まで、
お気軽にごお問い合わせください。
お問い合わせはこちら