嵌入式技术william hill官网
直播中

李红

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

STM32F407以太网在驱动层发送函数中死循环问题

问题描述:
芯片STM32F407ZGT6,RTT版本4.0.4。
用tcp方式跟上位机建立长连接,心跳包10s一次,每次上电时通信正常,过10至20分钟之后,突然卡死,运行灯停止闪烁,没有任何错误日志。进入调试模式发现卡死在rt_stm32_eth_tx()函数中等待解锁的死循环中:
while (EthHandle.Lock == HAL_LOCKED),一直没找到解决方法。
请问有大佬遇到过这个情况吗?或者帮忙分析下可能的问题原因?
3.png



回帖(7)

王利祥

2022-4-1 10:46:59
先确认server有没有问题
举报

李红

2022-4-1 10:47:15
server应该没问题,用H7跑十天半个月都正常
举报

刘军

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

李红

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

刘军

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

李红

2022-4-1 10:50:40
感谢回复! 不过出问题的时候,并没有发其他的数据,除了心跳。我先试试看能否解决
举报

天空上的海先森

2023-12-6 15:57:13
您好 想询问下  当时F407 eth在while (EthHandle.Lock == HAL_LOCKED); 死循环的问题  您后来是怎么解决的呢
举报

更多回帖

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