imx6 ar8031 千兆网卡不能用
/***************************************************************************
* imx6 ar8031 千兆网卡不能用
* imx6无论是运行linux还是android都无法ping通直连的pc,但是配置成dhcp却能够正常上网。
* 本文记录解决过程。
*
* Tony Liu, 2016-4-19, Shenzhen
***************************************************************************/
参考:
交叉线,直通线区别:
http://www.admin10000.com/document/3946.html
nxp论坛中的讨论:
http://www.nxpic.org/module/forum/forum.php?mod=viewthread&tid=595457&extra=&highlight=ping%2B%E4%B8%8D%E9%80%9A&page=3
mac配置中的宏:
http://lists.infradead.org/pipermail/linux-arm-kernel/2014-July/270174.html
一、ping不通
进行如下尝试: .首先关闭电脑和板子上的防火墙。
.板子添加默认网关
route add default gw 192.168.2.1 netmask 255.255.255.0
.查看电脑上是否有到板子的arp表项。
arp -a
接口: 192.168.2.110 --- 0xb
Internet 地址 物理地址 类型
224.0.0.2 --5e--- 静态
224.0.0.22 --5e--- 静态
224.0.0.251 --5e---fb 静态
224.0.0.252 --5e---fc 静态
239.255.255.250 --5e-7f-ff-fa 静态 如果没有,在windows上添加静态arp。
使用 netsh i i show in 命令 查看 本地连接的idx编号
C:\Windows\system32>netsh i i show in Idx Met MTU 状态 名称
--- ---------- ---------- ------------ ---------------------------
connected Loopback Pseudo-Interface
connected 本地连接
connected 本地连接
connected VMware Network Adapter VMnet1
connected VMware Network Adapter VMnet8
使用 netsh -c "i i" add neighbors 本地连接的idx “网关IP” “网关mac” 命令绑定。
网关mac是板子的mac。
netsh -c "i i" add neighbors "192.168.2.1" "1e-ed-19-27-1a-b3"
查看结果:
接口: 192.168.2.110 --- 0xb
Internet 地址 物理地址 类型
192.168.2.1 1e-ed---1a-b3 静态
224.0.0.2 --5e--- 静态
224.0.0.22 --5e--- 静态
224.0.0.251 --5e---fb 静态
224.0.0.252 --5e---fc 静态
239.255.255.250 --5e-7f-ff-fa 静态 二、板子通过交换机可以ping同电脑。 、板子的phy是ar8031,连接交换机之后,可以ping通电脑。怀疑可能线序有问题,所以采用交叉线进行直连,也不能ping通。
、交换机只支持10M/100M,查看PC网卡属性,链接速度也自协商到100M,而此时板子上的网络也是100M,所以能够ping通。初步分析,直连情况下,电脑网卡和板子上phy自协商失败。
、直连情况下,将电脑的网卡速率强制设置为10M全双工/半双工,板子网络也变为10M半双工,说明自协商成功,只是在1000M的状态被限制了。
更改电脑网卡速率,板子串口输出。
PHY: : - Link is Down
PHY: : - Link is Up - /Half
三、代码跟踪
、可能是phy设置有误,上网查看,设置的内容都一样,更改phy设置没有生效。
、查看驱动kernel/driver/net/fec.c
在驱动中进行调试。由于每次网络断开,直连的后都会有输出。
static void
fec_restart(struct net_device *dev, int duplex)函数。
添加调试,发现板子自协商的时候,直连电脑的网卡是1G或者自协商时,都只进入10M/100M的配置。
/* 10M or 100M */
if (fep->phy_dev && fep->phy_dev->speed == SPEED_100) {
val &= ~( << );
}
else {
val |= ( << );
}
... ... ...
//说明if的条件里面没有都满足。
/* if phy work at 1G mode, set ENET RGMII speed to 1G */
if (fep->phy_dev && (fep->phy_dev->supported &
(SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full)) &&
fep->phy_interface == PHY_INTERFACE_MODE_RGMII &&
fep->phy_dev->speed == SPEED_1000) {
val |= (0x1 << ); //使能1000M模式
} /* RX FIFO threshold setting for ENET pause frame feature
* Only set the parameters after ticket TKT116501 fixed.
* The issue has been fixed on Rigel TO1.1 and Arik TO1.2
*/
if ((cpu_is_mx6q() &&
(mx6q_revision() >= IMX_CHIP_REVISION_1_2)) ||
(cpu_is_mx6dl() &&
(mx6dl_revision() >= IMX_CHIP_REVISION_1_1))) {
writel(FEC_ENET_RSEM_V, fep->hwp + FEC_R_FIFO_RSEM);
writel(FEC_ENET_RSFL_V, fep->hwp + FEC_R_FIFO_RSFL);
writel(FEC_ENET_RAEM_V, fep->hwp + FEC_R_FIFO_RAEM);
writel(FEC_ENET_RAFL_V, fep->hwp + FEC_R_FIFO_RAFL); /* OPD */
writel(FEC_ENET_OPD_V, fep->hwp + FEC_OPD);
} if (cpu_is_mx6q() || cpu_is_mx6dl()) {
/* enable endian swap */
val |= (0x1 << );
/* enable ENET store and forward mode */
writel(0x1 << , fep->hwp + FEC_X_WMRK);
}
writel(val, fep->hwp + FEC_ECNTRL); //使能Ethernet Control Register static int fec_enet_mii_probe(struct net_device *ndev)函数:
查看初始化,反向芯片选择这里只打开了10M/100M的支持,没有打开1000M支持。导致MAC寄存器没有使能1000M功能。
将PHY_BASIC_FEATURES更改为PHY_GBIT_FEATURES。问题解决。
如下所示。
/* mask with MAC supported features */
if (cpu_is_mx6q() || cpu_is_mx6dl())
// phy_dev->supported &= PHY_BASIC_FEATURES;
phy_dev->supported &= PHY_GBIT_FEATURES;
else
phy_dev->supported &= PHY_BASIC_FEATURES; 宏定义如下:
#define PHY_BASIC_FEATURES (SUPPORTED_10baseT_Half | \
SUPPORTED_10baseT_Full | \
SUPPORTED_100baseT_Half | \
SUPPORTED_100baseT_Full | \
SUPPORTED_Autoneg | \
SUPPORTED_TP | \
SUPPORTED_MII) #define PHY_GBIT_FEATURES (PHY_BASIC_FEATURES | \
SUPPORTED_1000baseT_Half | \
SUPPORTED_1000baseT_Full)
网卡速率调整: 控制面板\网络和 Internet\网络连接。右键网卡,属性->配置->高级,如下图所示。
imx6 ar8031 千兆网卡不能用的更多相关文章
- I.MX6 开启 1000Mb/s interface
/*********************************************************************** * I.MX6 开启 1000Mb/s interfa ...
- imx6 fec分析
/***************************************************************************** * imx6 fec分析 * 本文主要分析 ...
- imx6 matrix keyboard
imx6需要添加4x4的矩阵键盘.本文记录添加方法. 参考链接 http://processors.wiki.ti.com/index.php/TI-Android-JB-PortingGuide h ...
- imx6 关闭调试串口
需要关闭imx6调试串口,用作普通的串口使用. 参考链接 http://blog.csdn.net/neiloid/article/details/7585876 http://www.cnblogs ...
- imx6 Image Vector Table (IVT)
imx6开启启动之后,运行板子上的ROM程序.ROM确定启动的设备,进行一些初始化,然后读取IVT,进行寄存器初始化,最后运行uboot/cpu/arm_cortexa8/start.S中的_star ...
- imx6 usb otg config 配置
imx6 usb的host和slave配置,配置之后,安装gadget模块,就能够在host和slave之间切换. 参考文档: i.MX 6Dual/6Quad Linux Reference Man ...
- imx6 gpio irq
/***************************************************************** * gpio irq * * 一直以来都没了解过gpio的irq, ...
- imx6 otg host support
本文记录添加imx6 otg host支持的过程. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6108560.html https://communi ...
- imx6 RGB LCD
imx6dl需要支持lcd接口的屏,imx6dl的datasheet并没有明确的说明lcd相关的配置,只在Display Content Integrity Checker (DCIC)一章中介绍.本 ...
随机推荐
- django中处理文件上传文件
1 template模版文件uploadfile.html 特别注意的是,只有当request方法是POST,且发送request的<form>有属性enctype="multi ...
- django1.8读书笔记模型高级进阶
一.访问外键和多对多值 例如:模型类定义如下 from django.db import models class Publisher(models.Model): name = models.Cha ...
- 读书笔记6pandas简单使用
一.序列Series,很像numpy中的array数组,可以由列表.元组.字典.numpy中的array来初始化 >>> from pandas import Series > ...
- jQuery.ajax() 如何设置 Headers 中的 Accept 内容
其实很简单,首先如果是常见类型,则请直接设置 dataType 属性 $.ajax({ dataType: "json", type: "get", succe ...
- HDU 1260 Tickets (动规)
Tickets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- Ruby的DevKit名词解释
为了加快运行速度,Ruby下好多扩展包都是用C语言写的二进制包,如果我们要安装就要重新编译,DevKit包主要就是将编译用的工具链打包,解决了众多依赖问题,方便了群众. 但是,在实际安装中,可能还会遇 ...
- JS动态创建Table,Tr,Td并赋值
JS动态创建Table,Tr,Td并赋值. 成果库修改: 要求主题列表随成果类型改变而改变 网上查询资料后开工,在成果类型下拉框添加change()事件触发Dwr,查询主题集合——动态创建/编辑Tab ...
- 【Android】3.4 图层展示
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 3.4 示例4--图层展示 一.简介 1.地图类型 百度地图Android SDK 3.7.1提供了两种类型的 ...
- 【Android】11.5 创建和管理Fragments
分类:C#.Android.VS2015: 创建日期:2016-02-22 一.简介 想要管理activity中的fragment,可以用FragmentManager类来实现.通过在activity ...
- navicat如何导入sql文件和导出sql文件
http://jingyan.baidu.com/article/a65957f4976aad24e67f9b9b.html ************************************* ...