关于phy芯片的奇怪现象

公司使用海思3512的板子做开发,之前使用RTL8201BL芯片,发现其不支持auto MDIX,于是换成ip101alf的芯片,但在使用中却一直是这样一个现象:
(1)uboot阶段:板子与PC机都用直连线接在TP—LINK的路由器上(100mbps),设置IP地址在同一网段,发现板子ping不通PC机;而将板子与PC机都接在集线器HUB上(10mbps),则板子可以ping通PC机;
(2)系统运行起来后阶段:先将PHY芯片的两个ko文件(libphy.ko, hiether.ko)insmod, 然后设置板子IP地址与PC机同一网段,现象是:都接在路由器上的情况依然是板子ping不通PC机, PC机也拼不通板子;而接在集线器上的情况则可以互相ping通,且可以通过IE访问板子上的应用程序。

ip101alf总共只有标号分别为0,1,2,3,4,5,6,16,17的这些寄存器, 查看其说明,我在uboot阶段只对0,4,6,1617做了配置(17号寄存器用于设置中断状态\控制,将其禁止了)。对配置的值进行了N次测试,结果始终如上所述, 随后又做一测试:注释掉所有对phy的初始化,结果工作现象依然如上述,查资料了解到phy芯片工作在物理层,主要负责电路的编解码,配置上没有什么大文章可做, 都是些基本设置。 对于phy的驱动修改,也是按照手册进行相应的设置的,这点可以保证没有问题,因为它就几个寄存器可供操作, 而且说明详细。

将集线器去除, 直接将板子连在PC机上,其工作现象和连在HUB上相同。
到这里更加无解了, 为什么接在路由器上就不能工作呢?
路由器是三层设备,工作在网络层, 通过IP地址与mac地址来转发数据,当板子运行在uboot阶段时,在板子上ping PC机, 可以看到其实PC机已经获取到了板子的IP地址和MAC地址,用抓包工具查看,发现板子只发送了arp包而没有发送ICMP包, 就是因为板子没有收到从PC机发回的arp确认包,所以ICMP包无从发送, 这就可以将问题归结到路由器的数据转发问题了么? 很不解, 接在HUB上就工作正常,(我觉得是不是经过HUB转发, HUB的phy芯片对其做了什么数据处理, 但这是应该不是问题所在。顺便提下)。

上面所用到的uboot,ko文件同样地用于TRL8201, 其在uboot阶段,OS阶段,均工作正常。。。。很不解 !

查一下网口是否支持auto-mdix功能,是不是这个路由器的auto-mdix不支持,集线器支持,还有网线用的是否是交叉或者平行的有关吧。
温馨提示:答案为网友推荐,仅供参考
相似回答