有办法让终端在发送更多数据之前等待吗?

3
我有一个嵌入式固件,可以通过串行传输进行终端操作。我正在从终端执行命令,等待数据(文本文件),应将其保存到闪存芯片中。然而,写入闪存比终端传输要慢得多。
文本文件可能很大(几千字节),因此在小型嵌入式环境中,我无法简单地将其转储到RAM中。我想知道是否可以与标准终端仿真器通信(具有文件拖放支持),每次写入缓冲区已满时暂停传输,并在写入完成后继续告诉终端恢复传输?但我没有找到任何可以帮助我解决这个问题的东西。
当然,我可以制作一个理解此技巧的PC前端,但在基本级别上,如果需要,所有功能都可以通过正常终端使用会更好。
2个回答

2
对于基本的串行连接,您可以查看硬件是否支持流控制。这将是CTS、RTS线(清除发送,请求发送)。然而,许多简单的嵌入式系统不实现此类流控制。
如果硬件不支持流控制,则必须考虑使用某种形式的软件流控制。您可以实现Xon/Xoff流控制(参见http://en.wikipedia.org/wiki/XON/XOFF),或者实现一个简单的文件传输协议,如XMODEM、ZMODEM或tftp。这取决于您的终端能够支持什么。

硬件支持流量控制,但是我从微控制器中真的缺少IO,所以这不是一个选择。XMODEM似乎是一个不错的选择,必须更仔细地检查它。 - user876332

2
当我通过串行连接从PC编程数据到FLASH时,我总是使用XMODEM。使用XMODEM时,它只发送一个数据包,并在发送下一个数据包之前等待您确认该数据包。
这意味着我们通过接收端的软件控制流程:
- 获取数据包 - 写入数据包 - 确认数据包 - 重复直到完成...
XMODEM可以在最小的设备上实现(少于1K RAM),而且代码非常简单。所有串行终端都支持XMODEM(甚至Windows XP都带有支持XMODEM的终端)。 XMODEM不需要特殊的硬件。 这里是规范。 这里是一个示例实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接