Florence 发表于 2024-3-10 23:13:31

1.11版hal库移植NetXDuo,ping一段时间后不通

最近在鼓捣使用新版以太网的hal库移植NetXDuo,使用官方移植的nx_stm32_eth_driver,碰到了这个问题,上电后ping一段时间之后,会持续ping不通,除非重新复位。



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




有没有大佬帮忙提供一个调试思路?

eric2013 发表于 2024-3-12 08:45:52

卡在BLOCK_MEMORY这个地方,我估计是创建的ThreadX Block内存不足,你看下他们官方例子,这个创建的多大。

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

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

Florence 发表于 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文件。

Florence 发表于 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任务会卡死,

Florence 发表于 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的配置项的时候不小心动了哪里,现在已经复现不了这个问题了。

eric2013 发表于 2024-3-14 10:11:11

Florence 发表于 2024-3-14 00:17
刚刚不小心把CubeMX里Thread的配置项复位了,目前ping了50w包没有丢,也没有出现任务卡死的状态,System Ti ...

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

dasuimao 发表于 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就正常了

hpdell 发表于 2024-4-1 12:19:27

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

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

eric2013 发表于 2024-4-2 08:08:55

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

谢谢分享。

utyang 发表于 2024-4-2 08:26:37

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

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

morning_enr6U 发表于 2024-4-2 09:43:19

{:8:}
页: [1]
查看完整版本: 1.11版hal库移植NetXDuo,ping一段时间后不通