2011-08-03 83 views
3

我有嵌入式固件通過串行傳輸終端。我正在從終端做命令來等待它應該保存到閃存芯片的數據(文本文件)。但是,寫入閃存比終端傳輸慢得多。在發送更多數據之前有沒有辦法告訴終端等待?

文本文件可能很大(很多kB),所以在小型嵌入式環境中,我不能簡單地將其轉儲到RAM中。我雖然可以與標準終端仿真器(對文件具有拖拽/ dop支持)進行通信,以便在每次寫入緩衝區已滿並在寫入完成後再次繼續傳輸時暫停傳輸?我沒有找到任何可以幫助我完成這件事的事情。

那麼,我可以讓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

硬件支持流量控制,但我真的很短IO從MCU無論如何,所以這不是一個選項。 XMODEM看起來不錯,必須更仔細地檢查它。 – user876332

2

當通過PC的串行鏈接將數據編程到FLASH時,我總是使用XMODEM。使用XMODEM時,它一次只發送一個數據包,並在發送下一個數據包之前等待您確認數據包。

這意味着我們可以控制通過軟件對接收端的流量:

  • 獲取包 - >
  • 寫包 - >
  • Ack報文 - >
  • 重複UTIL做...

XMODEM可以在最小的設備上實現(少於1K RAM),代碼非常簡單。所有串口終端都支持XMODEM(Windows XP帶有支持XMODEM的終端)。 XMODEM不需要特殊的硬件。

Here is the spec.

Here is an example implementation.

+0

謝謝! XMODEM協議似乎是不錯的選擇。 – user876332

相關問題