AVRライタ高速化(7)

.21 2010 AVR-USB comment(0) trackback(0)
さて、手始めにrx bufferを32byteにしてみました。が、ほとんど速くなっていないようです。
本当にbuffer追加されたのか?ということで確認してみましたが、ホストからの32byte書き込みに対してNAKを返したら殺すというデバッグで一回も落ちなかったのでbufferの追加方法自体には問題なさそうです。
要するに内蔵bufferを大きくしても今の段階では効果が得られないということです。


ちょっとホスト側のコードを弄ってみたところほんの少し速くなったので今の速度を一旦メモします。
下表は約2kBのコードに対する時間をgettimeofdayで計測した結果です。(ALLはtimeコマンドでの計測。)
WriteVerifyErase + Write + VerifyALL(デバイスリセット等を含む)
983ms258ms1258ms1.5s前後
純正品は4kBに対してErase + Write + Verifyが1.5s程度とのこと。要するに今の段階では純正品の半分くらいの速度しか出ていないということです。
結局ネックになっているのはUSB通信のような気がするのでとにかくパケット量を減らす、もしくは1フレーム(1ms)で送る量を増やす等の工夫で速度がかなり変わる気がします。

書き込み完了待機の間に次の書き込みデータ32byteを送ってしまい、SPIバスとUSBのレイテンシをオーバーラップさせてしまうことで高速化(書き込み時間-30%くらい)できる気がしてきたのでそのうちやってみます。
関連記事

  • comment
  • secret
  • 管理者にだけ表示を許可する

trackbackURL:http://yuranos.blog11.fc2.com/tb.php/90-2fe311d7