1.11版hal库移植NetXDuo,ping一段时间后不通
最近在鼓捣使用新版以太网的hal库移植NetXDuo,使用官方移植的nx_stm32_eth_driver,碰到了这个问题,上电后ping一段时间之后,会持续ping不通,除非重新复位。观察任务运行状态,能ping通的时候IP任务状态为BLOCK_MEMORY(例程也是一直处于这个状态),不能ping通的时候,IP任务状态变为READY但是任务执行计数不增加,打断点调试,是完全进不去ETH_IRQHandler中断。
、
有没有大佬帮忙提供一个调试思路?
卡在BLOCK_MEMORY这个地方,我估计是创建的ThreadX Block内存不足,你看下他们官方例子,这个创建的多大。
还有关键的一点,没及时释放,看看移植的时候是不是释放的地方有遗漏了。最后一点,直接使用官方的例子跑下,把官方的那个LAN8720的PHY修改为9162即可,这个可以方便排查问题。
他们后面的H7 ThreadX软件包里面都升级到新版HAL了。 eric2013 发表于 2024-3-12 08:45
卡在BLOCK_MEMORY这个地方,我估计是创建的ThreadX Block内存不足,你看下他们官方例子,这个创建的多大。
...
谢谢!我尝试下直接修改把官方例程的phy改成dm9162。
block_memory应该是正常现象,因为我看例程也是一直处于这个状态,反而是ready状态会卡住而且ping不通。
内存释放的处理,我是直接用的官方移植的nx_stm32_driver文件。 本帖最后由 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 09:52 编辑
刚刚不小心把CubeMX里Thread的配置项复位了,目前ping了50w包没有丢,也没有出现任务卡死的状态,System Timer Thread优先级设置为0,NetXDuo App thread优先级设置为10。应该是配置MX的Thread的配置项的时候不小心动了哪里,现在已经复现不了这个问题了。 Florence 发表于 2024-3-14 00:17
刚刚不小心把CubeMX里Thread的配置项复位了,目前ping了50w包没有丢,也没有出现任务卡死的状态,System Ti ...
50w没有丢包,那基本没问题了。 eric2013 发表于 2024-3-14 10:11
50w没有丢包,那基本没问题了。
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象,接收到的数据和发送的对不牢,最终应该找到了原因:
//抢占优先级设置大于TX_PORT_BASEPRI的中断依然可以正常响应,不会被ThreadX屏蔽掉
//#define TX_PORT_USE_BASEPRI
//#define TX_PORT_BASEPRI (0x10)
不要使用BASEPRI就正常了 dasuimao 发表于 2024-4-1 09:11
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象, ...
那看来频繁使用 BASEPRI 这个中断还是有些不太可靠啊, dasuimao 发表于 2024-4-1 09:11
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象, ...
谢谢分享。 dasuimao 发表于 2024-4-1 09:11
这个问题我也遇到了,运行一段时间后Ping不同,我是用接收数据后,全部发出去测试,有时候会有丢包现象, ...
你好!能否详细解释一下?netxduo与TX_PORT_BASEPRI有什么关联呢? {:8:}
页:
[1]