USBメモリファイル書き込み高速化

シナジー初心者のマサと申します。 ご教示をお願いします。


他のチップから受信したデータをUSBメモリに高速書き込みする


アプリケーションを作ろうとしています。


SK-S7G2を購入し、セットアップして、サンプルプログラムの「USBX_Mass_Strage_Host」を


指定のソフトをインストールした後、E2studioでビルドし、何とかデバッグで動作させることができました。


その後、ソフトを少々修正し、15Bytesの固定データを1レコードとして、


1000レコード分つまり、15kBytes分を配列に書き込み、


その単位でファイルに書き込み、10回ループして、計150kBytesをファイルに書き込む


プログラムを動かしました。それで時間測定してみたのですが、ファイルOpen、Closeは除いて


150kBytesの書き込みだけで数百msかかりました。 S7G2シナジー環境ではスピードはこんなものなのでしょうか?

目標は15~20MBytes/sでUSBメモリに書き込むことです。


高速化する方法がありましたらご教示ください。また、USBメモリ自体の書き込みスピードも関係すると思い


USB3.0対応のメモリで試そうとしましたが、なぜか書き込みできませんでした。


この理由も併せてお教え戴けたら幸いです。何とそよろしくお願い申し上げます。

Parents
  • マサさん、こんにちは。NoMaYです。

    たびたび済みません。ルネサス社に問い合わせてはどうかと書いておきながら、こういうことを書くのはちょっとチグハグかなと我ながら思うのですが、以下の点は大丈夫でしょうか?

    ・ヘッダファイル(もしくはGUIによる設定ツールとか)で以下の有効/無効を切り替える仕組みになっていないか?

     High speed modeを使用する → それが、いいえ、になっているとか?
     DMAを使用する → それが、いいえ、になっているとか?

    前にも書いたように、私はSynergyには詳しくない(未経験者)ですが、一般的なこととして気になり始めました。

Reply
  • マサさん、こんにちは。NoMaYです。

    たびたび済みません。ルネサス社に問い合わせてはどうかと書いておきながら、こういうことを書くのはちょっとチグハグかなと我ながら思うのですが、以下の点は大丈夫でしょうか?

    ・ヘッダファイル(もしくはGUIによる設定ツールとか)で以下の有効/無効を切り替える仕組みになっていないか?

     High speed modeを使用する → それが、いいえ、になっているとか?
     DMAを使用する → それが、いいえ、になっているとか?

    前にも書いたように、私はSynergyには詳しくない(未経験者)ですが、一般的なこととして気になり始めました。

Children
  • 皆さん、ありがとうございます。

    わわいさん
    >マルチスレッドで早くなるというのはあくまで待ち時間を他の処理に回せれるようになるってだけのはなしなんで、CPU自体の処理能力が増えるわけでないので、早くはなりませんね。
    マルチコアならともかく、そんな余計なことしてるぶん、遅くなるだけです
    →そのとおりですね。現状シングルスレッドですから、RTOSの意味もなく、速くなりようがありませんね。先ほど自分で書いていてそう思いました。

    >まあ、こういう事をしようとすると、特定のCPU依存のコードとなってしまうため、サンプルや自動生成だけでは実現できないので、自分のアタマでコードを組むことになりますね
    →そうですね。それか、いっそのことMCUをもっと高速なものに変えるかですね。お金はかかりますが。

    NoMaYさん
    おっしゃるとおりですね。週明け、メーカーにも問い合せてみます。

    >なお、かふぇルネで私が関わったものとしては、Synergyではありませんが、RX71Mの以下のスレッドがあります。この時には、ひとまず投稿内で360MBを6分(=1MByte/s)とか4分(=1.5MByte/s)とかで書けた(USBメモリに依存(同時期で購入した同じ型式でも個体差がある))とのリプライがありました。
    →このデータ、参考になりました。こんなものかもしれませんね。ありがとうございます。

    >夕食を取って、何気なく、昼にリプライした投稿のGoogle検索の結果で読まずに飛ばしていたものを読み始めて、失態を犯していたことに気付きました。検索結果の先頭にあったブログで、以下の数値が出ていました。昼の投稿の最後に書いたURLのブログの数値(Seq Read≒18MB/s, Seq Write≒4MB/s)よりも格段に速いUSBメモリもあるですね。更に、以下のポータブルハードディスクでの数値から推測されることは、USB 2.0のマスストレージクラスのプロトコル上のオーバーヘッドというのは決してむちゃくちゃにデカいオーバーヘッドがある訳では無い、というところですね。本家Rulzに出ていたgreater than 9MB/Secという数値も、速いUSBメモリを使えば、ReadだけでなくWriteでも出せるかも知れない、そんな可能性も無くは無いのかも知れない、という気もして来ました。ルネサス社に要確認ですね。
    →失態ではないと思います。(笑) 私もUSB2.0 HiSpeedで接続しながら、条件次第で書込みでさえ20MBytes/s以上の速度がでる事例を見たことがあります。なので、今回いけるかなと思った次第です。ただ、そのCPUはPCかそれに準ずるクラスの動作周波数1GHz以上のものでした。 また、先ほど話しがありましたが、USBメモリ機種にも大きく依存するようで、スティック内部のフラッシュチップの性能により大きく違ってくるようです。今回S7G2が開発環境が安価なこともあって、まずこれでトライしようと思いましたが、動作速度240MHzでは少々パワー不足かも知れません。また、なぜかテスト用に買ったUSB2.0/3.0共用の最新のUSBメモリが提供されたサンプルプログラムでは書き込めない状況にあり、それも痛いです。
    この辺はメーカに問い合わせてみるつもりです。メーカの対応が親切ならよいのですが。

    >High speed modeを使用する → それが、いいえ、になっているとか?
     DMAを使用する → それが、いいえ、になっているとか?
    →この辺はGUIなどの設定ではなく、あるとしたらソースまたはヘッダのどこかに記述があると思われます。くまなくみているわけではないので分かりませんが、確認してみます。メーカーにも聞いてみます。
    いろいろとアドバイスを戴いて有り難う御座います。感謝申し上げます。
  • NoMaYさん

    masaです。先日はいろいろご指導ありがとうございました。
    今日現在、USBスピードはHispeedになっており、設定で間違っているようなところはなさそうということは
    確認できました。 あとはメーカに問い合わせておりますが、代理店経由でしか扱ってもらえないようで、
    時間がかかっております。また何か情報が入りしだいご連絡します。
    取り急ぎ、ご報告まで。