硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1126|回复: 7
收起左侧

[以太网] LWIP+FreeRTOS+PHY8720A问题

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2024-8-6 09:54:19 | 显示全部楼层 |阅读模式


1.未装到产品上时,间隔一段时间复位网口芯片,重连时正常的。装上产品后,用不了多久就会出现发送失败,然后网口芯片寄存器值就不对,复位重连失败。猜测可能存在电压干扰问题。
2.出现发送失败后,进行lwip相关线程挂起后,然后再将网口芯片重新初始化,再进行将线程释放掉。会出现freertos部分某个任务出现无法再调用情况,导致无法正常通讯。如果整体重新复位有啥可以正常通讯的,现在是想仅仅对lwip及网口部分进行复位重新启用,避免出现故障时一直无法再连接。
3.freertos什么情况下会出现部分线程不调度?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-8-6 12:54:32 | 显示全部楼层
1、我有个骚操作,出现问题后,自家调用NVIC Reset能恢复正常连接不,如果不能,那就确实是硬件方面的干扰问题了。
2、部分任务不调度的原因比较多,有必要锁定下这个任务最后一次调度,出问题的地方在那。

回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-8-16 18:03:30 | 显示全部楼层
eric2013 发表于 2024-8-6 12:54
1、我有个骚操作,出现问题后,自家调用NVIC Reset能恢复正常连接不,如果不能,那就确实是硬件方面的干扰 ...

主芯片软件复位是可以重新连接的,只重新初始化网口部分的话不行,会出现发送一直执行不了。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-8-16 18:08:08 | 显示全部楼层
eric2013 发表于 2024-8-6 12:54
1、我有个骚操作,出现问题后,自家调用NVIC Reset能恢复正常连接不,如果不能,那就确实是硬件方面的干扰 ...

每次都是这个位置出现问题,low_level_output()函数中
if((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET)
  {
    errval = ERR_USE;
    errortimeout++;
    goto error;
  }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-8-17 10:34:35 | 显示全部楼层
xiaohuihuiya 发表于 2024-8-16 18:08
每次都是这个位置出现问题,low_level_output()函数中
if((DmaTxDesc->Status & ETH_DMATXDESC_OWN)  ...

那基本说明你的硬件是没问题的,就是你的软件设计问题了。lwip出问题后,确实不容像TCPnet那样方便的复位,TCPnet有个专门的复位API
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-8-19 09:56:54 | 显示全部楼层
eric2013 发表于 2024-8-17 10:34
那基本说明你的硬件是没问题的,就是你的软件设计问题了。lwip出问题后,确实不容像TCPnet那样方便的复位 ...

1.但是我看STM32F407编程手册里面,29.6.7中TxDMA操作中第七点,完成帧传输后,状态信息将写入该发送描述符(TDES0),这个步骤会进行OWN位清零,但是这个一直没被清。然后txdma状态一直都是处于DMA状态,没用释放给CPU。但是我全局搜索了整个程序,并没有看到有哪里对这个位置进行复位,猜想应该是lan8720传输完成后会进行own清零。
2.之前有测试过lan8720寄存器值,正常时 SR:1058 BSR:782d BCR:1100  ,出现异常时SR:0044 BSR:7809 BCR 0000,就是因为这样所以才选择重新复位外设,重新设置lan8720,初始化完成后寄存器值是正确的。
3.lwip复位需要调用哪些函数,是lwipclose()就行吗还是需要写其他。
4.这个demo是找的野火程序,关于lwip部分软件没怎么动过,只改过那个连接服务器的函数,改为间隔时间进行上传数据。
5.接下来我应该如何排查问题,现在这个问题困扰好久了。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-8-19 10:09:39 | 显示全部楼层
1.这个是目前测试使用的demo程序,有时间的话帮忙看看,有啥需要优化的。

lwip_client (2).rar

4.68 MB, 下载次数: 4

这个是目前测试使用的例程

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-8-20 09:28:34 | 显示全部楼层
xiaohuihuiya 发表于 2024-8-19 09:56
1.但是我看STM32F407编程手册里面,29.6.7中TxDMA操作中第七点,完成帧传输后,状态信息将写入该发送描述 ...


有几个地方可以改进的,你试试
1、上电后,手动硬件复位,然后软件复位8720, 复位完成或,延迟1秒访问。
2、RMII说涉及到GPIO速度等级设置low试试
3、还有个区别的地方就是底层驱动接口实现了,这个帖子你可以和你的底层接口实现对比下
https://www.armbbs.cn/forum.php? ... &extra=page%3D1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 03:05 , Processed in 0.265821 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表