小米mix3怎么样出来了么

今天看啥 热点:
I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之网卡驱动移植,tqimx6qtqe9
由于对网卡这块不是很熟悉,误以为网卡驱动也可以简单的配置下DTS就可以正常工作了,实际移植中遇到了些问题。闲话少说,下面开始tqimx6q的网卡驱动移植。
首先在我们的DTS中添加网卡配置,参考sabrelite的DTS,我们可以如下编写:
pinctrl-names = &default&;
pinctrl-0 = &&pinctrl_enet_1&;
phy-mode = &rgmii&;
status = &okay&;
};开始以为添加以上内容后编译并烧写DTB就可以正常工作了,实则不然,还需要添加PHY相关的配置代码。
打开arch/arm/mach-imx/mach-imx6q.c,在宏PHY_ID_AR8031附近做如下修改:
static int ar8035_phy_fixup(struct phy_device *dev)
/* Ar803x phy SmartEEE feature cause link status generates glitch,
* which cause ethernet link down/up issue, so disable SmartEEE
phy_write(dev, 0xd, 0x3);
phy_write(dev, 0xe, 0x805d);
phy_write(dev, 0xd, 0x4003);
val = phy_read(dev, 0xe);
phy_write(dev, 0xe, val & ~(1 && 8));
* Enable 125MHz clock from CLK_25M on the AR8031.
* is fed in to the IMX6 on the ENET_REF_CLK (V22) pad.
* Also, introduce a tx clock delay.
* This is the same as is the AR8031 fixup.
ar8031_phy_fixup(dev);
/*check phy power*/
val = phy_read(dev, 0x0);
if (val & BMCR_PDOWN)
phy_write(dev, 0x0, val & ~BMCR_PDOWN);
#define PHY_ID_ARdd072
static void __init imx6q_enet_phy_init(void)
if (IS_BUILTIN(CONFIG_PHYLIB)) {
phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
ksz9021rn_phy_fixup);
phy_register_fixup_for_uid(PHY_ID_KSZ9031, MICREL_PHY_ID_MASK,
ksz9031rn_phy_fixup);
phy_register_fixup_for_uid(PHY_ID_AR8031, 0xffffffff,
ar8031_phy_fixup);
phy_register_fixup_for_uid(PHY_ID_AR8035, 0xffffffff,
ar8035_phy_fixup);
即添加AR8035的ID,并初始化AR8035的寄存器,具体的含义我还没有来得及分析,以上修改参考了:
http://lxr./source/arch/arm/mach-imx/mach-imx6q.c
完成以上修改之后重新编译uImage和dtb,然后烧写开发板即可。
寻求网卡的测试方法目标应该很明确,就是能ping通外网即可,下面是我在tqimx6q上的测试步骤。
Step1. 查看网卡信息
执行命令:
ifconfig -a效果如下:
@tqimx6q #ifconfig -a
Link encap:Ethernet
HWaddr AA:EF:AE:8A:EA:05
BROADCAST MULTICAST
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)
TX bytes:0 (0.0 B)
Link encap:Local Loopback
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B)
TX bytes:0 (0.0 B)
Link encap:IPv6-in-IPv4
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B)
TX bytes:0 (0.0 B)Step2. 使能网卡eth0,执行命令:
ifconfig eth0 up效果如下:
@tqimx6q #ifconfig eth0 up
fec 2188000.ethernet eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=2188000.ethernet:00, irq=-1)
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
@tqimx6q #libphy: 2188000.ethernet:00 - Link is Up - 100/Full
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes readyStep3. 动态获取IP,执行指令:
udhcpc效果如下:
@tqimx6q #udhcpc
udhcpc (v1.22.1) started
Sending discover...
Sending select for 192.168.0.106...
Lease of 192.168.0.106 obtained, lease time 86400Step4. 将动态获取的IP设置给网卡eth0,执行指令:
ifconfig eth0 192.168.0.106之后可以通过命令查看网卡配置信息:
ifconfig eth0效果如下:
@tqimx6q #ifconfig eth0 192.168.0.106
@tqimx6q #ifconfig eth0
Link encap:Ethernet
HWaddr AA:EF:AE:8A:EA:05
inet addr:192.168.0.106
Bcast:192.168.0.255
Mask:255.255.255.0
inet6 addr: fe80::a8ef:aeff:fe8a:ea05/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
RX packets:253 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2 KiB)
TX bytes: KiB)Step5. 设置网关,执行指令:
route add default gw 192.168.0.1Step6. 通过ping指令测试网络状态,执行指令:
ping 8.8.8.8效果如下:
@tqimx6q #ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=43 time=77.409 ms
64 bytes from 8.8.8.8: seq=1 ttl=43 time=83.292 ms
64 bytes from 8.8.8.8: seq=2 ttl=43 time=88.236 ms
64 bytes from 8.8.8.8: seq=3 ttl=43 time=80.713 ms
64 bytes from 8.8.8.8: seq=4 ttl=43 time=74.452 ms
64 bytes from 8.8.8.8: seq=5 ttl=43 time=78.627 ms可见,tqimx6q已经可以ping通谷歌的DNS服务器了。至此,网卡的移植工作就完成了,PHY相关的配置还没有仔细研究就来分享了,请见谅。文章编写匆忙,如有问题请帮忙指出,有疑问可以留言讨论。
本文作者:girlkoo
本文链接:http://blog.csdn.net/girlkoo/article/details/
相关搜索:
相关阅读:
相关频道:
Android教程最近更新21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 75|回复: 1
IMX6Q AR8031百兆模式
&&未结帖(20)
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
& && & 今天我遇到了一点问题,我们公司之前的开发人员在开发imx6sl的板子时候,将网卡设置成为了100M模式,但是在最近测试中,
我们发现我们的机器延迟很大,经过测试发现我们的网卡变回了千兆模式,而我们之前的开发人员说千兆模式下丢包很严重。
& && & 可是,我们没有修改过任何的内核源码,只是替换了一个Logo,现在我们编译出来的内核都是千兆模式。
& && &然后,我们发现了之前开发人员留下的一个文档,内容如下:
& && &我又重新检查了源码,发现源码是已经修改过了的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
解决imx6千兆网卡AR8031数据丢包问题:
修改android源码中内核代码kernel_imx/arch/arm/mach-imx/mach-imx6sl.c文件
1.添加头文件包含#include &linux/phy.h&
2.添加如下代码
//******************************************************
static int ar8031_phy_fixup(struct phy_device *dev)
/* disable phy AR8031 SmartEEE function. */
phy_write(dev, 0xd, 0x3);
phy_write(dev, 0xe, 0x805d);
phy_write(dev, 0xd, 0x4003);
val = phy_read(dev, 0xe);
val &= ~(0x1 && 8);
phy_write(dev, 0xe, val);
/* To enable AR8031 output a 125MHz clk from CLK_25M */
phy_write(dev, 0xd, 0x7);
phy_write(dev, 0xe, 0x8016);
phy_write(dev, 0xd, 0x4007);
val = phy_read(dev, 0xe);
val &= 0xffe3;
val |= 0x18;
phy_write(dev, 0xe, val);
/* introduce tx clock delay */
phy_write(dev, 0x1d, 0x5);
val = phy_read(dev, 0x1e);
val |= 0x0100;
phy_write(dev, 0x1e, val);
#define PHY_ID_ARdd074
static void __init imx6q_enet_phy_init(void)
&&phy_register_fixup_for_uid(PHY_ID_AR8031, 0xffffffff,
& & ar8031_phy_fixup);
//*******************************************************************
3.修改函数如下,添加调用关系
static inline void imx6sl_fec_init(void)
imx6sl_fec_clk_init();
imx6q_enet_phy_init(); //这一行是添加的!!!!
imx6_enet_mac_init(&fsl,imx6sl-fec&);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题1:按照这个文档的处理方式是否真的能够将千兆网设置为百兆?
问题2:如果可以,那么我们网络变回千兆网是什么问题导致的?是不是还需要配置内核的其它信息?
问题3:如果不可以,那么怎么设置AR8031运行在100M模式下呢
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
主题帖子积分
专家等级:结帖率:50%
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
看了下内核源码,这个部分的修改,完全是复制mach-imx/mach-imx6q.c文件里的一部分代码过来。
而且,我在这些函数了做了printk,发现内核启动的时候根本没有运行imx6sl相关的代码,而运行的是imx6q的代码,因为我们的设备树是imx6d的。
不过我已经排除了是设备树导致这个问题
我使用imx6d的设备树,配合之前开发人员留下的内核依旧是100M。
使用之前开发人员留下的设备树,配合我现在编译的内核,依旧是1000M。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
热门推荐 /3飞凌嵌入式Cortex-A9双核精简版iMX6DL发布,支持Ubuntu 12.04 LTS、Linux console系统、Linux qt<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".5系统、Android4.4.2系统。
下面着重介绍一下飞凌嵌入式iMX6DL各个系统的基本情况及各个驱动的开源情况。
Ubuntu 12.04 LTS
交叉编译器& &arm-fsl-linux-gnueabi-gcc-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".2 i.MX6专用ARMv7指令集,支持硬浮点运算
&&& 支持USB下载烧写& USB一键刷机
&&& 支持单个/多个文件一键烧写&&
&&& 支持EXT4格式系统文件烧写&&
&&& 烧写工具MFG Tools支持Windows XP/ Vis /Windows7&
UBOOT&&&&&& 启动方式选择(eMMC,SD卡)&&& 提供源码
&&& UBOOT开机LOGO(以后提供) 提供源码
&&& 内存(1G)&& 提供源码
Ubuntu内核&&&版本: Linux-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".35& 支持方式
&&& 支持EXT4/NFS/FAT32/NTFS格式的文件系统 提供源码
&&& eMMC驱动(4G/8G)& 提供源码
&&& 看门狗驱动 提供源码
&&& IO驱动 提供源码
&&& RTC驱动&& 提供源码
&&& SPI驱动&& 提供源码,可以和MCP2515通信,经验证
&&& 用户按键驱动:3个&&& 提供源码
&&& I2C驱动&& 提供源码,经验证
&&& LCD驱动(7寸支持) 提供源码,
&&& USB Host驱动: 支持U盘,USB Hub,USB键鼠等& 提供源码
&&& USB Device驱动&& 提供源码
&&& TF/SD/MMC卡驱动:最大可支持32GB&& 提供源码
&&& 串口驱动:4个 提供源码
&&& WM8962音频驱动(支持录音和放音,ALSA接口,支持D类功放,喇叭,耳机输出)&&& 提供源码
&&& 以太网络(AR8031,Mbps)& 提供源码
&&& IPU驱动(图像处理器)& 提供源码
&&& VPU驱动(硬件多媒体编解码器) 提供源码
&&& HDMI驱动& 提供源码
&&& 3D加速 提供源代
&&& 2D加速 提供源代
&&& SATA硬盘(四核支持,双核不支持)&& 提供源块(SATA II,3.0 Gbps驱动)
&&& LVDS单双路(单路最大支持1366×768,双路最大支持1920×1080以后提供)&& 提供源码
&&& USB转串口驱动 提供源码
Linux console系统
交叉编译器&& arm-fsl-linux-gnueabi-gcc-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".2 i.MX6专用ARMv7指令集,支持硬浮点运算
&&& 支持USB下载烧写& USB一键刷机
&&& 支持单个文件/多个文件一键烧写&&
&&& 支持EXT4格式系统文件烧写&&
&&& 烧写工具MFG Tools支持WindowsXP/Vist/ Windows7&
UBOOT&&&&&& 启动方式选择(eMMC)&& 提供源码
&&& 内存(1G)&& 提供源码
&&& UBOOT开机LOGO(后续提供) 提供源码
Linux 内核&&&版本: Linux-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".35&
&&& 支持EXT4/NFS/FAT32/NTFS等格式的文件系统& 提供源码
&&& eMMC驱动(4G/8G)& 提供源码
&&& 看门狗驱动 提供源码
&&& RTC驱动&& 提供源码
&&& IO驱动 提供源码
&&& 用户按键驱动:4个&&& 提供源码
&&& SPI驱动&& 提供源码,可以和MCP2515通信,经验证
&&& I2C驱动&& 提供源码
&&& 摄像头驱动OV5640 提供源码
&&& PWM控制驱动&& 提供源码
&&& 电容触摸驱动& 提供源码
&&& LCD背光驱动,支持255级可调 提供源码
&&& LCD驱动(标清7")& 提供源码
&&& Linux 内核USB Host驱动:支持优盘,USB Hub,USB键鼠等 提供源码
&&& USB Device驱动&& 提供源码
&&& TF/SD/MMC卡驱动:最大可支持32GB&& 提供源码
&&& 串口驱动:4个 提供源码
&&& 音频驱动:支持录音和放音,ALSA接口,支持D类功放,喇叭,耳机输出)& 提供源码
&&& 以太网络,(AR8031,Mbps)&&& 提供源码
&&& 3G驱动 提供源码
&&& USB转串口驱动 提供源码
&&& SATA硬盘驱动(四核支持,双核不支持)提供源码(SATA II,3.0 Gbps驱动)
&&& LVDS单双路(单路最大支持1366×768,双路最大支持1920×1080以后提供)&& 提供源码(以后添加)
实用APP&&&&& Wifi 配置工具 开源组织提供源码
&&& telnet 提供源码
&&& RTC测试&& 提供源码
&&& SPI转CAN MCP2515 提供源码
&&& Flexcan&&& 提供源码
&&& IP/MAC地址修改&& 提供源码
&&& 数据库sqllite 开源组织提供源码
&&& 休眠唤醒&& 提供源码
&&& TTL转RS232&& 提供源码
&&& RS485测试 提供源码
&&& 录音/播放测试 , , 支持ALSA接口的录音与播放,提供源码
&&& GPRS上网& 提供源码
&&& GPS测试&& 提供源码
&&& 3G上网 开源组织提供源码
&&& USB摄像头测试 开源组织提供源码
&&& 录音放音测试& 开源组织提供源码
&&& I2C测试&& 提供源码
&&& GPU测试&& 飞思卡尔官方提供二进制文件
&&& IPU测试&& 提供源码
&&& VPU测试&& 提供源码
&&& Speaker喇叭测试& 提供源码
&&& RGB屏幕背光调节测试& 提供源码
&&& 播放1080P视频和MP3文件测试&&& 提供源码
&&& 看门狗 提供源码
&&& MMC/TF/SD卡和U盘自动挂载和卸载
&&& SATA2ext4硬盘自动挂载和卸载(四核支持,双核不支持) &&&& 提供源码
&&& FTP网络工具&& 提供源码
&&& Boa 的Web Server 开源组织提供源码
&&& SPI测试&& 提供源码
Linux qt<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".5系统 (qt官方测试程序在资料中,qt 飞凌测试程序稍后更新)
交叉编译器&& arm-fsl-linux-gnueabi-gcc-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".2 i.MX6专用ARMv7指令集,支持硬浮点运算
&&& 支持USB下载烧写& USB一键刷机
&&& 支持单个文件/多个文件一键烧写&&
&&& 支持EXT4格式系统文件烧写&&
&&& 烧写工具MFG Tools支持WindowsXP/Vist/ Windows7
UBOOT&&&&&&&启动方式选择(eMMC)&& 提供源码
&&& 内存(1G)&& 提供源码
&&& UBOOT开机LOGO(后续提供) 提供源码
Linux 内核&& 版本: Linux-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".35&
&&& 支持EXT4/NFS/FAT32/NTFS等格式的文件系统& 提供源码
&&& eMMC驱动(4G/8G)& 提供源码
&&& 看门狗驱动 提供源码
&&& RTC驱动&& 提供源码
&&& IO驱动 提供源码
&&& 用户按键驱动:4个&&& 提供源码
&&& SPI驱动&& 提供源码,可以和MCP2515通信,已经验证
&&& I2C驱动&& 提供源码
&&& 摄像头驱动OV5640 提供源码
&&& PWM控制驱动&& 提供源码
&&& 电容触摸驱动& 提供源码
&&& LCD背光驱动,支持255级可调 提供源码
&&& LCD驱动(标清7")& 提供源码
&&& Linux 内核USB Host驱动:支持优盘,USB Hub,USB键鼠等&& 提供源码
&&& USB Device驱动&& 提供源码
&&& TF/SD/MMC卡驱动:最大可支持32GB&& 提供源码
&&& 串口驱动:4个 提供源码
&&& WM8962音频驱动:支持录音和放音,ALSA接口,支持D类功放,喇叭,耳机输出)&& 提供源码
&&& 以太网络,(AR8031,Mbps)&&& 提供源码
&&& 3G驱动 提供源码
&&& USB转串口驱动 提供源码
&&& SATA硬盘驱动(四核支持,双核不支持)提供源码(SATA II,3.0 Gbps驱动)
&&& LVDS单双路(单路最大支持1366×768,双路最大支持1920×1080以后提供)&& 提供源码(以后添加)
实用APP&&&&& WIFI 配置工具 开源组织提供源码
&&& telnet 提供源码
&&& RTC测试&& 提供源码
&&& SPI转CAN MCP2515 提供源码
&&& Flexcan&&& 提供源码
&&& IP/Mac地址修改&& 提供源码
&&& 数据库Sqllite 开源组织提供源码
&&& 休眠唤醒&& 提供源码
&&& TTL转RS232&& 提供源码
&&& RS485测试 提供源码
&&& 录音/播放测试 支持ALSA接口的录音与播放,提供源码
&&& GPRS上网& 提供源码
&&& GPS测试&& 提供源码
&&& 3G上网 开源组织提供源码
&&& USB摄像头测试 开源组织提供源码
&&& 录音放音测试& 开源组织提供源码
&&& I2C测试&& 提供源码
&&& GPU测试&& 飞思卡尔官方提供二进制文件
&&& IPU测试&& 提供源码
&&& VPU测试&& 提供源码
&&& Speaker喇叭测试& 提供源码
&&& RGB屏幕背光调节测试& 提供源码
&&& 播放1080p视频和mp3文件测试&&& 提供源码
&&& 看门狗 提供源码
&&& MMC/TF/SD卡和U盘自动挂载和卸载
&&& SATA2ext4硬盘自动挂载和卸载(四核支持,双核不支持) 提供源码
&&& FTP网络工具&& 提供源码
&&& Boa 的Web Server 开源组织提供源码
&&& SPI测试&& 提供源码
Android<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".2系统
交叉编译器&& arm-fsl-linux-gnueabi-gcc-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".2 i.MX6专用ARMv7指令集,支持硬浮点运算
&&& 支持USB下载烧写& USB一键刷机
&&& 支持单个/多个文件一键烧写&&
&&& 支持EXT4格式系统文件烧写&&
&&& 烧写工具MFG Tools支持Windows XP/ Vis /Windows7&
UBOOT&&&&&&&启动方式选择(eMMC,SD卡)&& 提供源码
&&& UBOOT开机LOGO(以后提供) 提供源码
&&& 内存(1G)&& 提供源码
Android内核&&版本: Linux-<st1:chsdate style="FONT-FAMILY: " w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".35& 支持方式
&&& 支持EXT4/NFS/FAT32/NTFS格式的文件系统 提供源码
&&& 网卡驱动(1000M/100M) 提供源码
&&& LED驱动&& 提供源码
&&& LCD 驱动&& 提供源码
&&& USB接口驱动&& 提供源码
&&& PWM 驱动(背光)& 提供源码
&&& SATA2驱动(四核支持,双核不支持)& 提供源码(SATA II,3.0 Gbps驱动)
&&& emmc驱动& 提供源码
&&& Ext4文件系统& 提供源码,
&&& SD卡驱动& 提供源码
&&& LCD FrameBuffer&& 提供源码
&&& 精准触摸驱动(电容)&& 提供源码
&&& RTC实时时钟驱动& 提供源码
&&& 音频驱动(IIS接口)& 提供源码
&&& SPI驱动&& 提供源码
&&& 串口(含三个串口)& 提供源码
&&& 按键驱动&& 提供源码
&&& 蓝牙驱动&& 提供源码
&&& 看门狗驱动 提供源码
&&& Wifi驱动& 提供源码
&&& RS485驱动 提供源码
&&& CAN驱动&& 提供源码
更多关于iMX6DL的详细资料请关注飞凌嵌入式产品中心:&
Copyright &
保定飞凌嵌入式技术有限公司 All Rights Reserved&&飞思卡尔 I.MX6Q(44)
由于对网卡这块不是很熟悉,误以为网卡驱动也可以简单的配置下DTS就可以正常工作了,实际移植中遇到了些问题。闲话少说,下面开始tqimx6q的网卡驱动移植。
首先在我们的DTS中添加网卡配置,参考sabrelite的DTS,我们可以如下编写:
&fec&{&&&&&&pinctrl-names&=&&default&;&&&&&&pinctrl-0&=&&&pinctrl_enet_1&;&&&&&&phy-mode&=&&rgmii&;&&&&&&status&=&&okay&;&&};&&
开始以为添加以上内容后编译并烧写DTB就可以正常工作了,实则不然,还需要添加PHY相关的配置代码。
打开arch/arm/mach-imx/mach-imx6q.c,在宏PHY_ID_AR8031附近做如下修改:
static&int&ar8035_phy_fixup(struct&phy_device&*dev)&&{&&&&&&u16&&&&&&&&&&&&&&&&&&&&&&&&&&&phy_write(dev,&0xd,&0x3);&&&&&&phy_write(dev,&0xe,&0x805d);&&&&&&phy_write(dev,&0xd,&0x4003);&&&&&&&&&&&&&&&&&&val&=&phy_read(dev,&0xe);&&&&&&phy_write(dev,&0xe,&val&&&~(1&&&&8));&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ar8031_phy_fixup(dev);&&&&&&&&&&&&&&&&&&&&&&&&val&=&phy_read(dev,&0x0);&&&&&&if&(val&&&BMCR_PDOWN)&&&&&&&&&&phy_write(dev,&0x0,&val&&&~BMCR_PDOWN);&&&&&&&&&&&&&&&&&&return&0;&&}&&&&#define&PHY_ID_ARdd072&&&&static&void&__init&imx6q_enet_phy_init(void)&&{&&&&&&if&(IS_BUILTIN(CONFIG_PHYLIB))&{&&&&&&&&&&phy_register_fixup_for_uid(PHY_ID_KSZ9021,&MICREL_PHY_ID_MASK,&&&&&&&&&&&&&&&&&&ksz9021rn_phy_fixup);&&&&&&&&&&phy_register_fixup_for_uid(PHY_ID_KSZ9031,&MICREL_PHY_ID_MASK,&&&&&&&&&&&&&&&&&&ksz9031rn_phy_fixup);&&&&&&&&&&phy_register_fixup_for_uid(PHY_ID_AR8031,&0xffffffff,&&&&&&&&&&&&&&&&&&ar8031_phy_fixup);&&&&&&&&&&phy_register_fixup_for_uid(PHY_ID_AR8035,&0xffffffff,&&&&&&&&&&&&&&&&&&ar8035_phy_fixup);&&&&&&}&&}&&
即添加AR8035的ID,并初始化AR8035的寄存器,具体的含义我还没有来得及分析,以上修改参考了:
完成以上修改之后重新编译uImage和dtb,然后烧写开发板即可。
寻求网卡的测试方法目标应该很明确,就是能ping通外网即可,下面是我在tqimx6q上的测试步骤。
Step1. 查看网卡信息
执行命令:
ifconfig&-a&&
效果如下:
@tqimx6q&#ifconfig&-a&&eth0&&&&&&Link&encap:Ethernet&&HWaddr&AA:EF:AE:8A:EA:05&&&&&&&&&&&&&&BROADCAST&MULTICAST&&MTU:1500&&Metric:1&&&&&&&&&&&&RX&packets:0&errors:0&dropped:0&overruns:0&frame:0&&&&&&&&&&&&TX&packets:0&errors:0&dropped:0&overruns:0&carrier:0&&&&&&&&&&&&collisions:0&txqueuelen:1000&&&&&&&&&&&&&RX&bytes:0&(0.0&B)&&TX&bytes:0&(0.0&B)&&&&lo&&&&&&&&Link&encap:Local&Loopback&&&&&&&&&&&&&&LOOPBACK&&MTU:65536&&Metric:1&&&&&&&&&&&&RX&packets:0&errors:0&dropped:0&overruns:0&frame:0&&&&&&&&&&&&TX&packets:0&errors:0&dropped:0&overruns:0&carrier:0&&&&&&&&&&&&collisions:0&txqueuelen:0&&&&&&&&&&&&&RX&bytes:0&(0.0&B)&&TX&bytes:0&(0.0&B)&&&&sit0&&&&&&Link&encap:IPv6-in-IPv4&&&&&&&&&&&&&&NOARP&&MTU:1480&&Metric:1&&&&&&&&&&&&RX&packets:0&errors:0&dropped:0&overruns:0&frame:0&&&&&&&&&&&&TX&packets:0&errors:0&dropped:0&overruns:0&carrier:0&&&&&&&&&&&&collisions:0&txqueuelen:0&&&&&&&&&&&&&RX&bytes:0&(0.0&B)&&TX&bytes:0&(0.0&B)&&
Step2. 使能网卡eth0,执行命令:
ifconfig&eth0&up&&
效果如下:
@tqimx6q&#ifconfig&eth0&up&&fec&2188000.ethernet&eth0:&Freescale&FEC&PHY&driver&[Generic&PHY]&(mii_bus:phy_addr=2188000.ethernet:00,&irq=-1)&&IPv6:&ADDRCONF(NETDEV_UP):&eth0:&link&is&not&ready&&@tqimx6q&#libphy:&2188000.ethernet:00&-&Link&is&Up&-&100/Full&&IPv6:&ADDRCONF(NETDEV_CHANGE):&eth0:&link&becomes&ready&&
Step3. 动态获取IP,执行指令:
效果如下:
@tqimx6q&#udhcpc&&udhcpc&(v1.22.1)&started&&Sending&discover...&&Sending&select&for&192.168.0.106...&&Lease&of&192.168.0.106&obtained,&lease&time&86400&&
Step4. 将动态获取的IP设置给网卡eth0,执行指令:
ifconfig&eth0&192.168.0.106&&
之后可以通过命令查看网卡配置信息:
ifconfig&eth0&&
效果如下:
@tqimx6q&#ifconfig&eth0&192.168.0.106&&@tqimx6q&#ifconfig&eth0&&eth0&&&&&&Link&encap:Ethernet&&HWaddr&AA:EF:AE:8A:EA:05&&&&&&&&&&&&&&inet&addr:192.168.0.106&&Bcast:192.168.0.255&&Mask:255.255.255.0&&&&&&&&&&&&inet6&addr:&fe80::a8ef:aeff:fe8a:ea05/64&Scope:Link&&&&&&&&&&&&UP&BROADCAST&RUNNING&MULTICAST&&MTU:1500&&Metric:1&&&&&&&&&&&&RX&packets:253&errors:0&dropped:0&overruns:0&frame:0&&&&&&&&&&&&TX&packets:8&errors:0&dropped:0&overruns:0&carrier:0&&&&&&&&&&&&collisions:0&txqueuelen:1000&&&&&&&&&&&&&RX&bytes:2&KiB)&&TX&bytes:&KiB)&&
Step5. 设置网关,执行指令:
route&add&default&gw&192.168.0.1&&
Step6. 通过ping指令测试网络状态,执行指令:
ping&8.8.8.8&&
效果如下:
@tqimx6q&#ping&8.8.8.8&&PING&8.8.8.8&(8.8.8.8):&56&data&bytes&&64&bytes&from&8.8.8.8:&seq=0&ttl=43&time=77.409&ms&&64&bytes&from&8.8.8.8:&seq=1&ttl=43&time=83.292&ms&&64&bytes&from&8.8.8.8:&seq=2&ttl=43&time=88.236&ms&&64&bytes&from&8.8.8.8:&seq=3&ttl=43&time=80.713&ms&&64&bytes&from&8.8.8.8:&seq=4&ttl=43&time=74.452&ms&&64&bytes&from&8.8.8.8:&seq=5&ttl=43&time=78.627&ms&&
可见,tqimx6q已经可以ping通谷歌的DNS服务器了。至此,网卡的移植工作就完成了,PHY相关的配置还没有仔细研究就来分享了,请见谅。文章编写匆忙,如有问题请帮忙指出,有疑问可以留言讨论。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:288106次
积分:4782
积分:4782
排名:第5760名
原创:118篇
转载:388篇
评论:57条
(30)(33)(9)(23)(18)(13)(68)(36)(33)(82)(19)(35)(41)(7)(5)(3)(9)(5)(8)(3)(7)(16)(1)(9)(1)

我要回帖

更多关于 小米mix3 的文章

 

随机推荐