Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded 有没有办法告诉终端在发送更多数据之前等待?_Embedded_Terminal - Fatal编程技术网

Embedded 有没有办法告诉终端在发送更多数据之前等待?

Embedded 有没有办法告诉终端在发送更多数据之前等待?,embedded,terminal,Embedded,Terminal,我有嵌入式固件,通过串行传输终端。我正在从终端执行命令,等待数据(文本文件),它应该保存到闪存芯片。然而,写入闪存比终端传输慢得多 文本文件可能相当大(很多kB),所以在小型嵌入式环境中,我不能简单地将其转储到RAM中。我想,是否有可能与标准终端仿真器(对文件具有拖放/dop支持)通信,以便在每次写入缓冲区已满时暂停传输,并在写入完成后再次告诉continue?我还没有找到任何能帮我度过这一关的东西 当然,我可以制作理解这一技巧的PC前端,但在基本层面上,如果所有功能都可以通过普通终端使用(如果

我有嵌入式固件,通过串行传输终端。我正在从终端执行命令,等待数据(文本文件),它应该保存到闪存芯片。然而,写入闪存比终端传输慢得多

文本文件可能相当大(很多kB),所以在小型嵌入式环境中,我不能简单地将其转储到RAM中。我想,是否有可能与标准终端仿真器(对文件具有拖放/dop支持)通信,以便在每次写入缓冲区已满时暂停传输,并在写入完成后再次告诉continue?我还没有找到任何能帮我度过这一关的东西


当然,我可以制作理解这一技巧的PC前端,但在基本层面上,如果所有功能都可以通过普通终端使用(如果需要的话),那就更好了。

对于基本串行连接,您可以看到硬件是否支持流控制。这将是CTS、RTS线路(清除发送、请求发送)。

然而,许多简单的嵌入式系统并不实现这种类型的流量控制


如果硬件不支持流控制,那么您必须考虑使用某种形式的软件流控制。您可能能够实现Xon/Xoff流控制(),或者可以实现一个简单的文件传输协议,比如XMODEM、ZMODEM,甚至tftp。这取决于您的终端可以支持什么。

当通过串行链路将数据从PC编程到闪存时,我总是使用XMODEM。当使用XMODEM时,它一次只发送一个数据包,并在发送下一个数据包之前等待您确认该数据包

这意味着我们通过接收端的软件控制流量:

  • 获取数据包->
  • 写入数据包->
  • 确认数据包->
  • 重复完成
XMODEM可以在最小的设备(小于1K RAM)上实现,代码非常简单。所有串行终端都支持XMODEM(直到windows XP附带支持XMODEM的终端)。XMODEM不需要特殊的硬件


硬件支持流量控制,但我确实缺少来自MCU的IO,所以这不是一个选项。XMODEM似乎是个不错的选择,必须更仔细地检查它。