2011-08-03 5 views
3

私は、シリアル転送で端末を持つファームウェアを内蔵しています。フラッシュチップに保存しなければならないデータ(テキストファイル)を待っている端末からコマンドをやっています。しかし、書き込みフラッシュは端末送信よりもはるかに遅いです。さらにデータを送信する前に端末の待機を指示する方法はありますか?

テキストファイルはかなり大きい(多くのkB)ので、小さな組み込み環境では単純にRAMにダンプできません。しかし、標準のターミナルエミュレータ(ファイルのドラッグ/ドーピングをサポート)と通信することができれば、書き込みバッファが一杯になるたびに送信を一時停止し、書き込みが完了した後にもう一度やり続けるのですか?私はこれを通して私を助けるかもしれない何かを見つけていない。

私はこのトリックを理解しているPCフロントエンドを作ることができますが、基本レベルでは、必要に応じてすべての機能を通常の端末で使用できればいいはずです。

答えて

2

基本的なシリアル接続では、ハードウェアがフロー制御をサポートしているかどうかを確認できます。これは、CTS、RTS回線(送信要求、送信要求)です。
http://en.wikipedia.org/wiki/RS-232_RTS/CTS#RTS.2FCTS_handshaking

しかし、多くの単純な組み込みシステムは、このタイプのフロー制御を実装していません。

ハードウェアがフロー制御をサポートしていない場合、ソフトウェアフロー制御の何らかの形式を使用して調べる必要があります。おそらく、Xon/Xoffフローコントロール(http://en.wikipedia.org/wiki/XON/XOFF)を実装することも、XMODEM、ZMODEM、またはtftpなどの単純なファイル転送プロトコルを実装することもできます。これは端末がサポートできるものによって異なります。

+0

ハードウェアは、フロー制御をサポートしていますが、私はとにかくMCUからのIOのは本当に短いです、ので、これはオプションではありません。 XMODEMは良いオプションと思われます。もっと詳しくチェックしなければなりません。 – user876332

2

PCからのシリアルリンク経由でFLASHにデータを書き込むときは、常にXMODEMを使用します。 XMODEMを使用する場合、一度に1つのデータパケットしか送信せず、次のパケットを送信する前にパケットを確認するのを待ちます。

これは、我々は、受信側のソフトウェアによるフロー制御を意味します

  • ゲットパケット - >
  • 書き込みパケット - >
  • Ackパケット - >
  • 繰り返し行わutilのを...

XMODEMは、最小のデバイス(1K RAM未満)で実装でき、コードは非常に簡単です。すべてのシリアルターミナルはXMODEMをサポートしています(XMODEM対応ターミナルを備えたウィンドウXPが出ます)。 XMODEMは特別なハードウェアを必要としません。

Here is the spec.

Here is an example implementation.

+0

ありがとう! XMODEMプロトコルは良い選択肢と思われる。 – user876332