使用正点原子的以太网代码进行UDP通讯会卡死
有个项目是8通道ADC独立采样,每个通道使用4字节浮点型传输。ADC采样速率100K+,UDP通讯速率33Mbps。跑个十几二十分钟后就发现以太网停了,然后仿真发现程序卡死在下图的while循环里。heth.State一直是BUSY,while循环里边的函数一直返回ERR_MEM
State每次都不一样,最新测试了一次一直是READY 把数据接收从中断接收放到main- while里面去试试 Unarty 发表于 2025-5-13 10:21
把数据接收从中断接收放到main- while里面去试试
把while改if qinlu123 发表于 2025-5-13 13:14
把while改if
改成if为轮询判断状态就可以了,是吗? 可以单独保留lwip的代码验证看看,确认网络部分代码没有问题,再慢慢加入其它逻辑 dffzh 发表于 2025-5-13 13:30
改成if为轮询判断状态就可以了,是吗?
还没试呢。UDP单向通讯不知为何会偶尔进接收中断,在中断里打断点进来后稍微等一会再运行反复几次后就不再进了,但是跑了一会后网速从33M降到2M了 网上查资料说是有个什么MMC中断需要关闭,但是没找到关闭办法 qinlu123 发表于 2025-5-13 13:43
还没试呢。UDP单向通讯不知为何会偶尔进接收中断,在中断里打断点进来后稍微等一会再运行反复几次后就不 ...
1、是不是有地方申请内存没释放呀?RAM空间越来越少;
2、deepseek了一下,输出了可能原因,你可以参考一下我发你的pdf附件。
dffzh 发表于 2025-5-13 13:59
1、是不是有地方申请内存没释放呀?RAM空间越来越少;
2、deepseek了一下,输出了可能原因,你可以参考一 ...
这个问题很多人遇到
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118310
http://www.openedv.com/thread-335748-1-1.html qinlu123 发表于 2025-5-13 14:32
这个问题很多人遇到
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118310
http://www.openedv.co ...
看来是个经典问题啊,我来学习学习;
我看你发的第一个论坛链接下面有这个帖子,你有按照操作试试吗?
dffzh 发表于 2025-5-13 14:41
看来是个经典问题啊,我来学习学习;
我看你发的第一个论坛链接下面有这个帖子,你有按照操作试试吗?
...
他这个帖子是STM32H7的解决办法,我感觉应该是这个问题,但是我不知道F407该咋办。我现在开着仿真,刚开始会进几次接收中断然后就不进了,跑一段时间通讯会降速,如果这时候我关闭仿真网速直接归0,也就是说我开不开仿真对程序运行也有影响。 本帖最后由 dffzh 于 2025-5-13 15:29 编辑
qinlu123 发表于 2025-5-13 14:48
他这个帖子是STM32H7的解决办法,我感觉应该是这个问题,但是我不知道F407该咋办。我现在开着仿真,刚开 ...
找到MMC中断屏蔽寄存器(ETH_MMCIMR)的地址,将该寄存器所有位置1来屏蔽所有MMC中断:
// 屏蔽所有MMC中断
ETH->MMCIMR = 0xFFFFFFFF;
你试试看。
dffzh 发表于 2025-5-13 15:24
找到MMC中断屏蔽寄存器(ETH_MMCIMR)的地址,将该寄存器所有位置1来屏蔽所有MMC中断:
// 屏蔽所有MMC中 ...
我试试,刚打开手册 qinlu123 发表于 2025-5-13 15:30
我试试,刚打开手册
用的什么PHY芯片?
长时间运行可能会导致PHY芯片温度升高,在高温下PHY是不是会自动降速以保护芯片?
查看下PHY芯片的手册,看下工作温度;
然后测试一下板子的温度。
dffzh 发表于 2025-5-13 16:36
用的什么PHY芯片?
长时间运行可能会导致PHY芯片温度升高,在高温下PHY是不是会自动降速以保护芯片?
查 ...
LAN8720,不降速正常运行45℃,现在还没复现。刚才捋了一遍手册没发现,准备让deepseek翻译一下再看 dffzh 发表于 2025-5-13 16:36
用的什么PHY芯片?
长时间运行可能会导致PHY芯片温度升高,在高温下PHY是不是会自动降速以保护芯片?
查 ...
不知道咋整的寄存器又变回去了,看来光初始化的时候写一次寄存器还不行
dffzh 发表于 2025-5-13 16:36
用的什么PHY芯片?
长时间运行可能会导致PHY芯片温度升高,在高温下PHY是不是会自动降速以保护芯片?
查 ...
看来不是那俩寄存器的问题,现在还是会卡死 qinlu123 发表于 2025-5-13 18:02
看来不是那俩寄存器的问题,现在还是会卡死
我现在把while循环从中断里拿出来改成if轮询再测试 qinlu123 发表于 2025-5-13 18:02
看来不是那俩寄存器的问题,现在还是会卡死
所以你的意思是按那个论坛上的类似STM32H系列的修改后没有效果?
页:
[1]
2