💌 所属专栏:【网络通信】
😀 作 者:兰舟比特 🐾
🚀 个人简介:热爱开源系统与嵌入式技术,专注 Linux、网络通信、编程技巧、面试总结与软件工具分享,持续输出实用干货!
💡 欢迎大家:这里是兰舟比特的技术小站,喜欢的话请点赞、收藏、评论三连击!有问题欢迎留言交流😘😘😘
写在前面:最近在STM32H750上调试FTP功能,是基于LwIP的RAW方式和Fatfs的FTP库。遇到了上传大文件失败的问题。
1.遇到的问题:
移植过来的FTP功能好使(移植到STM32H750),创建目录,上传,下载,删除等功能都正常,但是上传100M的文件时,上传一段时间就会出现连接中断的情况,(用的Filezilla工具)
2.解决思路:
开始以为是内存相关的问题,后面调试发现是任务调度的问题。STM32上跑的是精简版FreeRTOS,Lwip的是在Task3上运行的,Task1,2还是有其他的任务执行。但是各任务的优先级如下:
任务1中开了大量的计算任务,而且比较耗时,导致一段时间可能长期霸占cpu;但是任务3中会有类似Lwip心跳的函数;
任务1一直抢占cpu的话, 导致任务3的lwip timeout函数不能执行,导致tcp连接中断。
3.经验:
注意任务调度的问题,保证网络通信时不会有阻塞的情况,能正常执行到心跳函数。
版权声明:
本文为 兰舟比特 原创内容,如需转载,请注明出处及作者,禁止未经授权的引用或商用。