嵌入式技术论坛
直播中

李伟

7年用户 1536经验值
私信 关注
[问答]

STM32F407以太网在驱动层发送函数中等不到HAL解锁造成死循环是何原因

芯片STM32F407ZGT6,RTT版本4.0.4。

问题描述

用tcp方式跟上位机建立长连接,心跳包10s一次,每次上电时通信正常,过10至20分钟之后,突然卡死,运行灯停止闪烁,没有任何错误日志。进入调试模式发现卡死在rt_stm32_eth_tx()函数中等待解锁的死循环中:

while (EthHandle.Lock == HAL_LOCKED),一直没找到解决方法。

请问有大佬遇到过这个情况吗?或者帮忙分析下可能的问题原因?

回帖(5)

建立建利12

2022-7-20 10:41:34
先确认server有没有问题
举报

李伟

2022-7-20 10:41:52
server应该没问题,用H7跑十天半个月都正常
举报

张龙祥

2022-7-20 10:42:13
没有遇到过题主的问题,但是想问一下题主有没有把什么数据放在了CCRAM(起始地址是0x10000000的那块RAM)里面
举报

李伟

2022-7-20 10:42:26
还真的有!一共64K,我分了60K放了链表数据,因为需要高效的执行查找、插入、删除等操作
举报

张龙祥

2022-7-20 10:42:36
你先尝试把这些数据放在RAM1里面,不要去用CCRAM, 看看会不会出问题。
我猜测应该是你这些数据或这些数据中的部分数据和以太网发送有关,而DMA是不能访问CCRAM的,所以引发了这个问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分