硬汉嵌入式论坛

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

[以太网] 1.11版hal库移植NetXDuo,ping一段时间后不通

  [复制链接]

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2024-3-10 23:13:31 | 显示全部楼层 |阅读模式
最近在鼓捣使用新版以太网的hal库移植NetXDuo,使用官方移植的nx_stm32_eth_driver,碰到了这个问题,上电后ping一段时间之后,会持续ping不通,除非重新复位。



观察任务运行状态,能ping通的时候IP任务状态为BLOCK_MEMORY(例程也是一直处于这个状态),不能ping通的时候,IP任务状态变为READY但是任务执行计数不增加,打断点调试,是完全进不去ETH_IRQHandler中断。


QQ截图20240310230256.png
{4C954600-C48C-4288-81D8-3C5DEBF3B765}.png
有没有大佬帮忙提供一个调试思路?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106828
QQ
发表于 2024-3-12 08:45:52 | 显示全部楼层
卡在BLOCK_MEMORY这个地方,我估计是创建的ThreadX Block内存不足,你看下他们官方例子,这个创建的多大。

还有关键的一点,没及时释放,看看移植的时候是不是释放的地方有遗漏了。最后一点,直接使用官方的例子跑下,把官方的那个LAN8720的PHY修改为9162即可,这个可以方便排查问题。

他们后面的H7 ThreadX软件包里面都升级到新版HAL了。
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-3-12 10:03:43 来自手机 | 显示全部楼层
eric2013 发表于 2024-3-12 08:45
卡在BLOCK_MEMORY这个地方,我估计是创建的ThreadX Block内存不足,你看下他们官方例子,这个创建的多大。
...

    谢谢!我尝试下直接修改把官方例程的phy改成dm9162。
    block_memory应该是正常现象,因为我看例程也是一直处于这个状态,反而是ready状态会卡住而且ping不通。
    内存释放的处理,我是直接用的官方移植的nx_stm32_driver文件。
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-3-13 19:59:55 | 显示全部楼层
本帖最后由 Florence 于 2024-3-13 23:01 编辑
eric2013 发表于 2024-3-12 08:45
卡在BLOCK_MEMORY这个地方,我估计是创建的ThreadX Block内存不足,你看下他们官方例子,这个创建的多大。
...

这两天调试了一下,发现我移植的NetXDuo应该是没有问题的,我把System Timer Thread的优先级调低之后,卡死的就是System Timer Thread了,这有可能是什么问题呢?我试了下用V7最新的ThreadX全家桶,按照ST官方写的移植,把ETH Hal库更新到最新,是没有任何问题的。

刚刚又试了下,把NetXDuo App thread和System Timer Thread的任务优先级都设置为0,ping一万多包的时候,System Timer Thread或者NetXDuo App thread任务会卡死,
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2024-3-14 00:17:31 | 显示全部楼层
本帖最后由 Florence 于 2024-3-14 09:52 编辑

刚刚不小心把CubeMX里Thread的配置项复位了,目前ping了50w包没有丢,也没有出现任务卡死的状态,System Timer Thread优先级设置为0,NetXDuo App thread优先级设置为10。应该是配置MX的Thread的配置项的时候不小心动了哪里,现在已经复现不了这个问题了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106828
QQ
发表于 2024-3-14 10:11:11 | 显示全部楼层
Florence 发表于 2024-3-14 00:17
刚刚不小心把CubeMX里Thread的配置项复位了,目前ping了50w包没有丢,也没有出现任务卡死的状态,System Ti ...

50w没有丢包,那基本没问题了。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2024-4-1 09:11:24 | 显示全部楼层
eric2013 发表于 2024-3-14 10:11
50w没有丢包,那基本没问题了。

这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象,接收到的数据和发送的对不牢,最终应该找到了原因:
//抢占优先级设置大于TX_PORT_BASEPRI的中断依然可以正常响应,不会被ThreadX屏蔽掉
//#define TX_PORT_USE_BASEPRI
//#define TX_PORT_BASEPRI                                                (0x10)
不要使用BASEPRI就正常了
回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2024-4-1 12:19:27 | 显示全部楼层
dasuimao 发表于 2024-4-1 09:11
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象, ...

那看来频繁使用 BASEPRI 这个中断还是有些不太可靠啊,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106828
QQ
发表于 2024-4-2 08:08:55 | 显示全部楼层
dasuimao 发表于 2024-4-1 09:11
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象, ...

谢谢分享。
回复

使用道具 举报

24

主题

70

回帖

142

积分

初级会员

积分
142
发表于 2024-4-2 08:26:37 | 显示全部楼层
dasuimao 发表于 2024-4-1 09:11
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象, ...

你好!能否详细解释一下?netxduo与TX_PORT_BASEPRI有什么关联呢?
回复

使用道具 举报

3

主题

1223

回帖

1232

积分

至尊会员

积分
1232
发表于 2024-4-2 09:43:19 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 13:43 , Processed in 0.206528 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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