硬汉嵌入式论坛

 找回密码
 立即注册
查看: 11552|回复: 21
收起左侧

[以太网] H7+LWIP,使用CubeMX生成,解决部分BUG

  [复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2019-5-22 10:45:29 | 显示全部楼层 |阅读模式
本帖最后由 chanp55 于 2019-5-22 12:16 编辑

工程使用CubeMx生成,1.4.0的H7库,有BUG,修改了ethernetif.c部分代码:

第一处:low_level_input函数,打开SCB_InvalidateDCache_by_Addr,修改后代码:
1.png

第二处:pbuf_free_custom函数,打开SCB_InvalidateDCache_by_Addr,修改后代码:
2.jpg

第三处:low_level_output函数,在发送函数前增加SCB_InvalidateDCache,并且改为中断发送模式,修改后代码:
3.jpg

第四处:ethernet_link_thread函数,最无语的BUG,长时间或收发大量数据后ETH会死掉,Ping不通,TCP连接不能建立,UDP不能收发数据,跟踪会发现不能触发ETH中断。修改后代码:
4.png

使用CubeMX生成时,红框内的代码是在箭头处的,这会导致每100ms都会执行那三句代码,需要修改成上图那样。
--------------------------------------------------------------------------------------------------------------------------------------------------------

下面是CubeMX以太网和Lwip相关配置
一、高速缓存部分
5.jpg

二、ETH部分
6.png
中断记得打开
7.png
引脚改为高速
8.jpg

三、freeRtos部分,基本默认,就不贴图了,主要是HEAP_SIZE按照需求更改

四、Lwip部分
9.jpg
内存的配置,默认的达不到99M,需要修改
11.png

12.jpg

13.jpg
其余的是默认了。

------------------------------------------------------------------------------------------------------------------------------------
下面是99M发送文件速度,Lwip使用的是netconn接口,H7做TCP服务器
16.jpg

已经连续发送超过24小时了,未出现断网的现象(之前被上面提到的BUG坑了,调了好几天),分享给使用H7+LWIP,出现断网现象,速度达不到极限的网友


9.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2019-5-22 10:51:56 | 显示全部楼层
你的工程貌似工作异常了,那个软件满速可以正常显示的,LWIP只有开多个客户端同时干活,才可以满速。
看我的,单客户端,正常显示:





回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
发表于 2019-5-22 11:09:00 | 显示全部楼层
你是两个客户端一起发送吗?
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2019-5-22 11:17:04 | 显示全部楼层
换了其它网络调试工具试了一下,确实有问题,单个端口速度只有25Mbps左右
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2019-5-22 11:18:31 | 显示全部楼层
在水一方 发表于 2019-5-22 11:09
你是两个客户端一起发送吗?

单个客户端发送的。有点问题,用其它的网络调试软件,发送只能到达25Mbps左右
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
发表于 2019-5-22 11:22:41 | 显示全部楼层
chanp55 发表于 2019-5-22 11:18
单个客户端发送的。有点问题,用其它的网络调试软件,发送只能到达25Mbps左右

我这边做的,单个客户端只能到80多M,两个客户端才能到100M
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2019-5-22 14:36:27 | 显示全部楼层
我一直觉得ST使用xxx_by_addr函数操作Cache的方式有问题,Cache要保证操作的首地址32字节对齐,大小要是32字节整数倍
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

610

主题

3060

回帖

4910

积分

至尊会员

积分
4910
发表于 2019-5-22 17:26:30 | 显示全部楼层
eric2013 发表于 2019-5-22 10:51
你的工程貌似工作异常了,那个软件满速可以正常显示的,LWIP只有开多个客户端同时干活,才可以满速。
看我 ...

这么你们高的 lwip 的速度都那么的牛逼呀,我的速度跟你们的比起来就像蜗牛一样啊
回复

使用道具 举报

10

主题

130

回帖

160

积分

初级会员

积分
160
发表于 2019-5-25 15:31:42 | 显示全部楼层
eric2013 发表于 2019-5-22 10:51
你的工程貌似工作异常了,那个软件满速可以正常显示的,LWIP只有开多个客户端同时干活,才可以满速。
看我 ...

看到这个贴子突然想回去再测一下我的速度
NETIO.png   

tcp.png

奇怪的是netio测出来的速度和bandwidth meter测出来的速度相差好多
好悲剧





话说你的bandwidth meter也是30天的试用版?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2019-5-25 15:46:40 | 显示全部楼层
oneV 发表于 2019-5-25 15:31
看到这个贴子突然想回去再测一下我的速度
  

加大这个缓冲就正常了
QQ截图20190525154535.jpg

回复

使用道具 举报

10

主题

130

回帖

160

积分

初级会员

积分
160
发表于 2019-5-25 16:01:10 | 显示全部楼层
eric2013 发表于 2019-5-25 15:46
加大这个缓冲就正常了

是的  加大会快不少但继续加大我的会死掉 应该是配置有问题
能你看一下的lwipopts.h文件吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2019-5-25 16:14:24 | 显示全部楼层
oneV 发表于 2019-5-25 16:01
是的  加大会快不少但继续加大我的会死掉 应该是配置有问题
能你看一下的lwipopts.h文件吗

改成这个软件发送即可,我们都是测试的发送,这个软件接收不行,最大也就400KB左右就不行了。

这个软件发送,你的板子接收测试接口。

我的那个测试不是lwip,是tcpnet
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2019-6-11 09:33:06 | 显示全部楼层
楼主,请教一下,如果不改这些地方的代码。按照F4的方式,通过cube生成的代码,是不是不通的?
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2020-11-27 09:26:29 | 显示全部楼层
楼主能不能分享下你的例程
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2021-1-25 23:40:57 | 显示全部楼层
你好,我最近在调H7的网口,也想用CUBEMX配置工程,原来配过一个F4的,配完就能PING通,但是H7怎么搞都PING不通,你能给我一个你跑通的工程么?1942304454@qq.com,感谢楼主
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2021-1-26 11:44:30 | 显示全部楼层
LFQ 发表于 2021-1-25 23:40
你好,我最近在调H7的网口,也想用CUBEMX配置工程,原来配过一个F4的,配完就能PING通,但是H7怎么搞都PING ...

我也ping不通,你搞定了吗
回复

使用道具 举报

5

主题

13

回帖

28

积分

新手上路

积分
28
发表于 2021-3-16 16:08:31 | 显示全部楼层
LFQ 发表于 2021-1-25 23:40
你好,我最近在调H7的网口,也想用CUBEMX配置工程,原来配过一个F4的,配完就能PING通,但是H7怎么搞都PING ...

兄弟  H7网口这个搞定了吗?  能否分享一下例程742917386@qq.com
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2021-3-16 17:02:13 | 显示全部楼层
dfsfjwfmlwsf 发表于 2021-3-16 16:08
兄弟  H7网口这个搞定了吗?  能否分享一下例程

H7使用网络协议栈有点坑,特别注意MPU配置。
可以参考下我这个

LwIP网络教程开始更新,使用MDK的RTE环境开发,配套RTX5和FreeRTOS两个版本,更新至第7章(2020-05-03)
http://www.armbbs.cn/forum.php?m ... 5874&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

23

回帖

26

积分

新手上路

积分
26
发表于 2021-11-21 22:12:15 | 显示全部楼层
LFQ 发表于 2021-1-25 23:40
你好,我最近在调H7的网口,也想用CUBEMX配置工程,原来配过一个F4的,配完就能PING通,但是H7怎么搞都PING ...

你好,弄好了嘛,我最近也在调H7的网口,一直ping不通,可以分享一下代码嘛,993960025@qq.com,谢谢啦
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2021-11-22 01:13:03 | 显示全部楼层
ying 发表于 2021-11-21 22:12
你好,弄好了嘛,我最近也在调H7的网口,一直ping不通,可以分享一下代码嘛,,谢谢啦

必须是Nucleo上的吗
回复

使用道具 举报

1

主题

23

回帖

26

积分

新手上路

积分
26
发表于 2021-11-24 11:00:04 | 显示全部楼层
eric2013 发表于 2021-11-22 01:13
必须是Nucleo上的吗

我用的的芯片是STM32H743ZIT6,所以想试试在Nucleo开发板试试能不能调通,但一直没有调通
回复

使用道具 举报

2

主题

3

回帖

9

积分

新手上路

积分
9
发表于 2021-12-15 16:36:17 | 显示全部楼层
ying 发表于 2021-11-24 11:00
我用的的芯片是STM32H743ZIT6,所以想试试在Nucleo开发板试试能不能调通,但一直没有调通

我之前也一直不通,按这个帖子修改了高速缓存部分,然后加了SCB_InvalidateDCache就好了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 14:10 , Processed in 0.309695 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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