请选择 进入手机版 | 继续访问电脑版
查看: 268|回复: 10

[求助] STM32H743通过以太网连续发送图片,一段时间后,发送会很慢

[复制链接]

该用户从未签到

3

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2019-1-18
发表于 2019-1-11 11:27:37 | 显示全部楼层 |阅读模式
5ST金币
我用的芯片是STM32H743+LAN8742,在这个平台上实现摄像头图片采集压缩成JPEG格式,然后通过以太网(LWIP)的netconn_write函数发送出去,我这边是服务器端,电脑端使用的是原子开发板资料中的软件“串口&网络摄像头软件”作为客户端。我建了两个线程一个用来采集图像和压缩,一个是以太网连接和发送压缩图片的,每个线程结束后加一个osDelay(30); 一开始运行都正常一秒钟可以发送几帧图片,但运行一段时间后,我这一个小时,图片发送就卡了,很慢大概一分钟才发出一帧图片。线程后的延时时间长了,正常运行的时间就会长一些。因为就卡在err = netconn_write(newconn, Jpeg_Image_Buffer,JPEG_ImageSize_Bytes, NETCONN_COPY);这条语句的地方,我对LWIP内部不了解,所以不清楚可能的原因,希望有了解的朋友可以给予指点指点,非常感谢!

  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

3

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2019-1-18
 楼主| 发表于 6 天前 | 显示全部楼层
自己顶一下
回复

使用道具 举报

该用户从未签到

29

主题

1252

帖子

37

蝴蝶豆

论坛元老

最后登录
2019-1-18
发表于 5 天前 | 显示全部楼层
帮顶
  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

3

主题

118

帖子

7

蝴蝶豆

中级会员

最后登录
2019-1-18
发表于 5 天前 | 显示全部楼层
帮顶
回复

使用道具 举报

该用户从未签到

1

主题

92

帖子

0

蝴蝶豆

中级会员

最后登录
2019-1-19
发表于 5 天前 | 显示全部楼层
帮顶
  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

61

主题

2049

帖子

26

蝴蝶豆

版主

最后登录
2019-1-18
发表于 5 天前 | 显示全部楼层

帮顶
回复

使用道具 举报

该用户从未签到

35

主题

927

帖子

31

蝴蝶豆

金牌会员

最后登录
2019-1-19
发表于 5 天前 | 显示全部楼层
我不知道我的理解对吗。正常情况下你没接收到的数据都想要发出去。但是你采用的会不会是另一个思路:
采集图片的线程优先级低,发送的现成优先级高。每次发完你就等待读取图像的线程释放一个semaphore。这样发送一旦获得这个semaphore就执行发送任务。依次类推。所以如果发送堵塞,就停止读取?
  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

3

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2019-1-18
 楼主| 发表于 4 天前 | 显示全部楼层
watershade 发表于 2019-1-15 20:32
我不知道我的理解对吗。正常情况下你没接收到的数据都想要发出去。但是你采用的会不会是另一个思路:
采集 ...

感谢你的回复,的确图片采集线程的优先级低,发送线程的优先级高,现在是图像采集完成后,进入发送线程,然后就发送的很慢,也不是完全停止,是发送很慢很慢,发送完了还是有图像采集,然后又是很慢很慢的发送进程了。
回复

使用道具 举报

该用户从未签到

35

主题

927

帖子

31

蝴蝶豆

金牌会员

最后登录
2019-1-19
发表于 4 天前 | 显示全部楼层
zhangh002 发表于 2019-1-16 09:54
感谢你的回复,的确图片采集线程的优先级低,发送线程的优先级高,现在是图像采集完成后,进入发送线程, ...

你可以改用UDP发送试一下。TCP可能会有网络堵塞的可能。先确保你这边没有问题。(如果UDP也是这种情况就可能有问题)
  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

3

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2019-1-18
 楼主| 发表于 3 天前 | 显示全部楼层
watershade 发表于 2019-1-16 15:58
你可以改用UDP发送试一下。TCP可能会有网络堵塞的可能。先确保你这边没有问题。(如果UDP也是这种情况就 ...

通过仿真,网络发送线程发送缓慢的时候,程序一直停留在static void prvCheckTasksWaitingTermination( void )
和static portTASK_FUNCTION( prvIdleTask, pvParameters )这两个函数间来回执行,不明白为何会调到这里来。
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|意法半导体STM32/STM8技术社区

GMT+8, 2019-1-20 09:47 , Processed in 0.118701 second(s), 5 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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