硬汉嵌入式论坛

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

[以太网] STM32H7提供的一堆lwip例子,仅需在函数low_level_output发送前加个SCB_CleanInvalidateDCache就正常了

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2018-10-19 12:07:39 | 显示全部楼层 |阅读模式
1.png

1.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2018-10-19 12:08:37 | 显示全部楼层
QQ截图20181019120821.png
回复

使用道具 举报

32

主题

264

回帖

365

积分

高级会员

积分
365
发表于 2018-10-20 00:39:38 | 显示全部楼层
例程没有做?mpu保护措施吗???真是无语,还没看到这一部分,,,,,
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2018-10-22 00:59:24 | 显示全部楼层
在水一方 发表于 2018-10-20 00:39
例程没有做?mpu保护措施吗???真是无语,还没看到这一部分,,,,,

设置的MPU没有起到作用,还有单独调用一下才成。
回复

使用道具 举报

4

主题

42

回帖

54

积分

初级会员

积分
54
发表于 2018-10-22 21:27:31 | 显示全部楼层
st老干这种事情,做那么臃肿的一个库,编译一下要好几分钟,自己都懒得测试一下就发出来,坑啊!
回复

使用道具 举报

32

主题

264

回帖

365

积分

高级会员

积分
365
发表于 2018-10-23 08:51:47 | 显示全部楼层
eric2013 发表于 2018-10-22 00:59
设置的MPU没有起到作用,还有单独调用一下才成。

看了一下
申请的变量 ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT]; 还是在AXISRAM内,MPU设置没起作用,估计是这个问题吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2018-10-23 09:13:41 | 显示全部楼层
在水一方 发表于 2018-10-23 08:51
看了一下
申请的变量 ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT]; 还是在AXISRAM内,MPU设置没起作用 ...

已经配置此区为WT模式,正常情况下,发送是无需做Cache的Clean操作。
回复

使用道具 举报

32

主题

264

回帖

365

积分

高级会员

积分
365
发表于 2018-10-23 11:43:34 | 显示全部楼层
eric2013 发表于 2018-10-23 09:13
已经配置此区为WT模式,正常情况下,发送是无需做Cache的Clean操作。

有几个问题请教一下

1.AXISRAM没有进行MPU配置,默认是WT模式吗?
2.临时变量应该使用的是AXISRAM,LWIP接收和堆栈存放在AHBSRAM,已经进行了配置没问题。
3.Txbuffer和TxConfig应该都在 AXISRAM 区域吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2018-10-23 11:48:23 | 显示全部楼层
在水一方 发表于 2018-10-23 11:43
有几个问题请教一下

1.AXISRAM没有进行MPU配置,默认是WT模式吗?

AXISRAM不用管,而且配置的WT模式仅仅是写操作,影响不到读操作,读操作还是有Cache。
回复

使用道具 举报

18

主题

324

回帖

378

积分

高级会员

积分
378
发表于 2019-5-2 18:09:50 | 显示全部楼层
eric2013 发表于 2018-10-23 11:48
AXISRAM不用管,而且配置的WT模式仅仅是写操作,影响不到读操作,读操作还是有Cache。

请问一下硬汉哥,我按照http://www.armbbs.cn/forum.php?mod=viewthread&tid=93200&extra=page%3D1这篇帖子的移植方法(其实他这个就是基于库文件1.3.2里面的例程),把LWIP移植到了RTTHREAD上,把RTOS中的信号量什么的做了替换,可以PING之后可以PING通了,但是刚开始速度正常,一会速度就到了3000多Ms,还会出现超时。对比了一下,唯一的区别就是
  1. void ethernetif_input( void * argument )
  2. {
  3.   struct pbuf *p;
  4.   struct netif *netif = (struct netif *) argument;
  5.   
  6.   for( ;; )
  7.   {
  8.     if(rt_sem_take(e_rxin, RT_WAITING_FOREVER) == RT_EOK)
  9.     {
  10. //      do
  11. //      {
  12.         LOCK_TCPIP_CORE();

  13.         p = low_level_input( netif );
  14.         if(p==NULL) return;
  15.    
  16.         if (p != NULL)
  17.         {
  18.           if (netif->input( p, netif) != ERR_OK )
  19.           {
  20.             pbuf_free(p);
  21.           }
  22.         }
  23.         
  24.         /* Build Rx descriptor to be ready for next data reception */   
  25.         HAL_ETH_BuildRxDescriptors(&EthHandle);
  26.         
  27.         UNLOCK_TCPIP_CORE();

  28. //      }
  29. //      while(p!=NULL);
  30.     }
  31.   }
  32. }
复制代码
这里的do while被我注释掉了,不然死循环在这里。
我看了suozhang 是基于armfly的裸机例子先添加了freertos 再添加的lwip,我的库文件是用cube生成的,是不是有某些依赖关系没打开导致的现在这个情况?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2019-5-3 00:44:47 | 显示全部楼层
王海靖 发表于 2019-5-2 18:09
请问一下硬汉哥,我按照http://www.armbbs.cn/forum.php?mod=viewthread&tid=93200&extra=page%3D1这 ...

这个不清楚哦。
回复

使用道具 举报

18

主题

324

回帖

378

积分

高级会员

积分
378
发表于 2019-5-3 10:44:56 | 显示全部楼层
eric2013 发表于 2019-5-3 00:44
这个不清楚哦。

谢谢您的回答。已经找到原因了,定义接收数组的长度以及缓冲区有好几个地方,大小没有设置到一样导致内存泄漏。
附上参考链接http://www.stmcu.org.cn/module/forum/thread-615089-1-3.html
回复

使用道具 举报

1

主题

9

回帖

12

积分

新手上路

积分
12
发表于 2019-6-22 19:12:16 | 显示全部楼层
eric2013 发表于 2018-10-22 00:59
设置的MPU没有起到作用,还有单独调用一下才成。

哥,这eth为啥非得用AXI RAM,放到其他RAM不通,st例程也是直接放到AXI RAM。
无标题.png
回复

使用道具 举报

37

主题

251

回帖

362

积分

高级会员

积分
362
发表于 2019-7-29 10:26:07 | 显示全部楼层
楼主,又来打扰了,使用ucos + lwip + 两路 RJ45    同时ping 接收函数里使用 pbuf_alloc 申请内存的时候,很多时候不会成功,然后装置会重启,感觉过了某个点之后,有时候申请成功了,后面ping就很正常。把这句话屏蔽掉,系统也不会重启。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-6-29 17:34:10 | 显示全部楼层
你好!有Lwip TCP视频教程吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2020-6-29 17:35:35 | 显示全部楼层
目中无神 发表于 2020-6-29 17:34
你好!有Lwip TCP视频教程吗?

没有哦

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

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-6-30 17:35:06 | 显示全部楼层
eric2013 发表于 2020-6-29 17:35
没有哦

LwIP网络教程开始更新,使用MDK的RTE环境开发,配套RTX5和FreeRTOS两个版本,更新至第7章(202 ...

你好! Lwip TCP 的代码例子和代码解析有吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
 楼主| 发表于 2020-6-30 17:49:19 | 显示全部楼层
目中无神 发表于 2020-6-30 17:35
你好! Lwip TCP 的代码例子和代码解析有吗?

发你的链接里面的模板就是TCP。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-1 06:45 , Processed in 0.481719 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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