1-实验结论:
对比标准Ymodem协议,ST官方IAP代码中YModem协议少了以下部分:
发送端(secureCRT) 接收端(开发板)
EOT---->
NAK----<
2-YModem
YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议。参考资料如下
https://baike.baidu.com/item/Ymodem?fr=aladdin
https://blog.csdn.net/qingzhuyuxian/article/details/80769163
3-ST官方IAP工程代码
https://pan.baidu.com/s/1_3R5iDKTMsbhj2Fv60mAvQ
4-修改后的STM32f103ZET6工程代码(对ymodem.c添加注释和调试代码)
串口1用于与secureCRT 8.5通信,串口2用于打印调试代码
https://pan.baidu.com/s/1NVYjwqt-Mq9CB7NovLWASA
5-ymodem.c文件代码分析,请见工程中
6-不错的STM IAP文章
https://blog.csdn.net/yazhouren/article/details/73385580
7-实验结果:
8-YModem协议部分代码分析
第一帧数据
数据帧
结束帧
ST官方IAP代码中YModem协议怎么少了一部分呢?
欢迎交流!
在阿莫论坛修复了问题,详细请见 https://www.amobbs.com/thread-5705496-1-1.html
修改代码,符合标准YModem协议,具体如下 1-接收端在第一次收到EOT时,发送NAK。那么发送端会再一次发送EOT,此时接收端发送ACK应答 发送端 接收端 C---< SOH--> ACK---< C---< SOH--> ACK---< SOH--> ACK---< ... SOH--> ACK---< SOH--> ACK---< EOT--> NAK---< EOT--> ACK---< (调试代码为ACK-end<) C---< SOH--> ACK---< (调试代码为ACK-empty<) |