环境:单片机F407 串口1 波特率115200 中断接收 rbl文件大小约260k
故障现象:之前使用ymodem_ota命令更新时,就发现升级进度条经常无故卡死。升级成功率非常低。
最近有时间重新调试了下,故障原因在于,串口接收大数据时,会出现丢字节现象。当串口一旦丢失字节后,ymodem就会出错退出了。
仔细查看ymodem协议后发现,本身是带出错处理的,当接收帧出错后,发送NAK响应,主机即会重发出错的数据帧
将代码做如下更改即可解决此类问题
函数_rym_do_trans内部更改如下:
欢迎大佬提交 PR
我提了pr,可以看一下有没有问题。😬
确实是组件的代码问题,没考虑到重传。我这边修改代码如下:
128个字节就丢数了? @yangsc
@出出啊
大佬 出现这个问题的,应该都是使用的rt-thread自带的串口驱动,波特率高点,任务多些,就容易出现串口丢数的情况了
标记,学习学习
可能是其他线程有数据打印导致的,我之前遇到过
@zailiy
我是正在开启ymodem数据传输时把控制台绑定的串口设备设置为空解决打印问题@用户名由3_15位
好好好@HLNB_8748
收藏下
自己写的ymodem,一次没出过问题
关注学习一下
只解决了接收方没发出NAK的问题,发送方响应NAK重发包却没有,大概是你们都用上位机传.