大家好:
硬件环境:AM335X的ARM芯片、FPGA、以太网PHY芯片DP83848
软件环境:linux系统
问题描述:
我的本地以太网是连接的以太网PHY芯片
光纤是通过FPGA进行处理的;
底层会对他们进行分别的配置的;
但是当我的FPGA没有启动时(FPGA的电源正常的),通过本地PC给光纤口发送数据包时,发送一段时间,我的本地以太网口,也会死机,直接ping不通了;
这个是为什么,光纤和以太网这边会有什么联系吗?
Steven Liu1:
对你目前的问题场景有点模糊:你的本地以太网,是使用的CPSW上的以太网口吗?FPGA是和AM335x的GPMC相连?
问题测试的场景是:以太网连在了某个网络上,AM335x可以正常进行网络通信;本地PC给光纤发数据包,FPGA会接收处理,然后把结果返回给AM335x。
如果FPGA没有启动,过一会,以太网口通信就出问题了?是这个意思吗?
那如果FPGA正常启动呢?
lysz:
回复 Steven Liu1:
你好:
对;我的本地以太网是使用的CPSW上的以太网,FPGA是和AM335x的GPMC相连的
我在描述一下我的场景(有两种场景):
第一种:以太网连接PC机(由于我的linux内核中有内部的web服务器,PC机可以通过网页进行和linux中的arm应用程序进行通讯);
光纤连接我的下一级设备(arm应用程序会和给光纤发送数据包,FPGA会处理发送和接收数据,再于arm应用程序进行通讯);
当FPGA中的应用程序不存在时(但是FPGA电源存在,是上电过程中),以太网会出现死机的状态(因为我的arm应用程序,会不停的给光纤发送广播包);
当FPGA应用程序正常时,以太网通讯正常;
或者当FPGA的电源不存在时(掉电中);以太网通讯正常;
第二种:以太网连接PC机,通过PC中ping 监控以太网是否正常;
光纤连接我的下一级设备,通过PC机ping 我的光纤外部的设备;
然后现象和上边的现象一样的。
结论:我怀疑是不是共用内存的问题,或者socket缓冲区的问题;
还有可能是上下拉电阻或者管脚配置的问题,因为FPGA电源掉电后,本地以太网通讯可以正常了
不知道描述清楚没有。。。
所以现在不知道该怎么解决这个问题?
lysz:
回复 lysz:
对不起,我感觉我们的光纤这一块又不是通过GPMC实现的,因为底层代码中出现的davinci_mdio_read(),mdio总线的方式接入的
leo chen:
回复 lysz:
你的描述确实比较混乱
最好先说清楚你们的方案,然后把数据流理清楚,最后描述好处问题的现象
这样可能更加容易去判断问题
lysz:
回复 leo chen:
对不起,我再从新来一遍。
我得平台是这样的:
硬件:
我有两台设备,这两台设备是通过光纤进行级联的,其中光钎口是通过FPGA和ARM通讯的(相当于FPGA充当了一个PHY芯片,接收外部的数据);这两台设备还各有一个本地以太网口(用于和PC机进行通讯)
软件:
设备中的ARM程序:用于处理本地以太网、FPGA(相当于光纤口)的数据;
FPGA程序:处理光纤口过来的数据,然后送给ARM;
问题描述:
首先先说明我的ARM程序,会不停给光纤口发送数据。
当我的FPGA程序存在时,两台设备是可以通过光纤进行通讯的,本地以太网也是正常的。
但是当我的FPGA程序不存在时,两台设备肯定是不能进行通讯的,但是过一段时间后,我发现我的本地以太网口也不正常,而且本地以太网口都ping不通了。
问题分析:
通过我对代码的研究发送,出现这个问题的原因就是我的ARM程序会不停的给光纤发送数据包,当不发送数据包时,我的本地以太网口没有这个问题;
所以我想问一下大家,这个是为什么?不知道这次我描述清楚了吗?