OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4495|回复: 4

请教下使用FreeRTOS+LwIP+emWin,LwIP使用socket-udp功能,收发数据丢包非常非常严重,是怎么回事啊 ?

[复制链接]

260

主题

809

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1896
金钱
1896
注册时间
2012-10-28
在线时间
357 小时
发表于 2018-9-30 09:55:52 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 hpdell 于 2018-9-30 09:58 编辑

请教下使用FreeRTOS+LwIP+emWin,LwIP使用socket-udp功能,收发数据丢包非常非常严重,是怎么回事啊 ?

单片机使用 F7x

相关宏定义如下:
#define NO_SYS                  0  //=0使用rtos,否则不使用rtos功能
#define SYS_LIGHTWEIGHT_PROT    1 /* 使用 rtos 的临界区保护 lwip 的线程,以及关键变量 */
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1 /* 使用RTOS的信号量和临界区保护内存的分配以及释放等等 */




LwIP 缓存配置:

/* MEM_SIZE: the size of the heap memory. If the application will send
a lot of data that needs to be copied, this should be set high.
内存堆heap大小 */
#define MEM_SIZE                (20*1024)

/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
   sends a lot of data out of ROM (or other static memory), this
   should be set high.
   MEMP_NUM_PBUF:memp结构的pbuf数量,如果应用从ROM或者静
   态存储区发送大量数据时,这个值应该设置大一点 */
#define MEMP_NUM_PBUF           30   // default set 10



#define TCPIP_THREAD_NAME              "TCP/IP"
#define TCPIP_THREAD_STACKSIZE          1000    //内核任务堆栈大小
#define TCPIP_MBOX_SIZE                 6
#define DEFAULT_UDP_RECVMBOX_SIZE       6    // 2000
#define DEFAULT_TCP_RECVMBOX_SIZE       6
#define DEFAULT_ACCEPTMBOX_SIZE         6
#define DEFAULT_THREAD_STACKSIZE        500   // 512
#define TCPIP_THREAD_PRIO               osPriorityHigh







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2018-9-30 14:36:30 | 显示全部楼层
丢包是正常的,不丢包我就觉得有问题
回复

使用道具 举报

260

主题

809

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1896
金钱
1896
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2018-9-30 19:03:43 | 显示全部楼层
mygod 发表于 2018-9-30 14:36
丢包是正常的,不丢包我就觉得有问题

发送 20次,可能只成功一次

接收20次,可能只成功一次,这个成功率也太低了吧 ??

回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2016-6-1
在线时间
32 小时
发表于 2018-10-6 10:34:41 | 显示全部楼层
我没用FreeRTOS+emWin编程序过程中也发生过丢包严重问题,这个问题理论上与UDP自身机制有关(不向TCPIP那样有握手应答之类的),但我发现实际上是别的程序造成的UDP阻塞,或者说类似于CPU占用过高导致UDP反应不及时,比如我发现用scanf输入函数造成的系统阻塞,直接导致UDP死掉,getchar函数能好点,但也不行。
你可以把其他程序去掉,单独测试UDP如果没问题就找其他部分吧。
回复

使用道具 举报

260

主题

809

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1896
金钱
1896
注册时间
2012-10-28
在线时间
357 小时
 楼主| 发表于 2018-10-8 10:48:09 | 显示全部楼层
xupc 发表于 2018-10-6 10:34
我没用FreeRTOS+emWin编程序过程中也发生过丢包严重问题,这个问题理论上与UDP自身机制有关(不向TCPIP那样 ...

好的,我再试试看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 05:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表