I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之网卡驱动移植

发布者:堕落的猫最新更新时间:2020-12-29 来源: eefocus关键字:I  TQE9  BSP  网卡驱动移植 手机看文章 扫描二维码
随时随地手机看文章

由于对网卡这块不是很熟悉,误以为网卡驱动也可以简单的配置下DTS就可以正常工作了,实际移植中遇到了些问题。闲话少说,下面开始tqimx6q的网卡驱动移植。


DTS编写


首先在我们的DTS中添加网卡配置,参考sabrelite的DTS,我们可以如下编写:


&fec {

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_enet_1>;

    phy-mode = "rgmii";

    status = "okay";

};

开始以为添加以上内容后编译并烧写DTB就可以正常工作了,实则不然,还需要添加PHY相关的配置代码。

PHY配置


打开arch/arm/mach-imx/mach-imx6q.c,在宏PHY_ID_AR8031附近做如下修改:


static int ar8035_phy_fixup(struct phy_device *dev)

{

    u16 val;

    

    

    /* 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.  This

    * 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);

    

    

    return 0;

}

 

#define PHY_ID_AR8035 0x004dd072

 

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.free-electrons.com/source/arch/arm/mach-imx/mach-imx6q.c

完成以上修改之后重新编译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,执行指令:

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 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:24238 (23.6 KiB)  TX bytes:1152 (1.1 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服务器了。至此,网卡的移植工作就完成了,


关键字:I  TQE9  BSP  网卡驱动移植 引用地址:I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之网卡驱动移植

上一篇:I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之CAN移植
下一篇:I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之USB HOST移植

推荐阅读最新更新时间:2024-11-09 12:59

英特尔i9-13900HK和i7-13700H移动处理器跑分和规格曝光
英特尔即将推出第 13 代 Raptor Lake 处理器,现在其中的高端酷睿 i9-13900HK 和酷睿 i7-13700H 两款处理器已经现身 GeekBench 跑分库。英特尔第 13 代 Raptor Lake 移动处理器阵容分为 2 个性能为导向的 CPU 分支,分别为 Raptor Lake-H55 和 Raptor Lake HX SKU。 H55 部件将采用专门为轻薄游戏笔记本设计的模具配置,而 HX 则采用和台式机类似的模具配置。H55 CPU 将提供多达 14 个内核和 20 个线程,而 Raptor Lake-HX 系列提供最多 24 个内核和 32 个线程。 泄露的芯片包括 CoreT i9-1
[家用电子]
交通方案 | 基于飞凌A40i核心板打造智慧公交系统
等公交车是一件令人烦恼的事情,这个过程会不断挑战我们的耐心,也许你的奋力追赶换来的只是擦肩而过,也许你的耐心等待换来的只是姗姗来迟,即使你等来了公交车,也还得承担挤不上去的风险。 但是不知道从哪天开始,画面变了。早上收拾妥当准备坐公交车上班,出门前先掏出手机打开出行APP,看看公交车到哪了,再决定是一路狂奔到公交站还是慢悠悠的溜达着过去。 在公交车上,司机能随时通过身边的小屏幕看到车厢内以及前后门的情况,出入站上下车更安全方便;到站后语音播报系统自动根据位置信息进行播报,提醒乘客下车,准确又便捷;站台上有电子公交站牌,车辆到哪了,预计还有多长时间到本站,一目了然。 这些智能化的产品不知不觉中改变了大家的生活,极大地方
[嵌入式]
交通方案 | 基于飞凌A40<font color='red'>i</font>核心板打造智慧公交系统
纯电动捷豹 I-TYPE 6 赛车重磅发布,搭载先进 Wolfspeed 碳化硅技术
2022年12月5日, 英国伦敦、美国北卡罗来纳州达勒姆市与中国上海市讯 — 全球碳化硅(SiC)技术引领者 Wolfspeed, Inc. 宣布为捷豹 TCS 车队近日重磅发布的捷豹 I-TYPE 6 赛车提供功率半导体技术和产品的全方位支持。 全新I-TYPE 6赛车专为 2023 年度 ABB 国际汽联电动方程式世界锦标赛 Formula E(以下简称:Formula E)设计、研发打造,标志着 Formula E 赛事正式迈入第三代(Gen3)赛车新时代。 捷豹 I-TYPE 6 赛车是捷豹有史以来最先进、最高效的纯电动赛车。它是首款配备前后双电机动力总成的 Formula E 赛车,前轴与后轴最大动能回收功率分
[汽车电子]
纯电动捷豹 <font color='red'>I</font>-TYPE 6 赛车重磅发布,搭载先进 Wolfspeed 碳化硅技术
MEMS 麦克风中 PDM 和 I²S 数字输出接口的比较和选择
本文将详细讨论脉冲密度调制 (PDM) 和集成电路内置音频 (I²S) 两种数字接口,简介它们的独特特性以及在系统设计时的优缺点。工程师具体选择哪一种,将取决于对两种技术的研究,并要了解哪种协议对于特定应用更适合。具体要考虑的几个关键因素包括: 音质 功耗 物料成本 设计的空间限制 硬件的运行环境 如果您在MEMS 麦克风的数字输出接口选择上有需求,相信本文会有所帮助。 麦克风用在嵌入式系统中已经有很多年了。自其诞生以来,由于家居、汽车和可穿戴设备中基于语音的应用范围不断扩大,MEMS 麦克风的市场使用率迅速增加。MEMS 麦克风不仅具有显著减少电路板空间、低功率要求和提高抗电噪声能力的优点,而且还具有更高的设
[嵌入式]
MEMS 麦克风中 PDM 和 <font color='red'>I</font>²S 数字输出接口的比较和选择
C51---12 AT24C02 (I2C总线)
存储器介绍 存储器简化模型 AT24C02 引脚以及电路 内部结构框图 I2C总线❗ I2C总线介绍 I2C电路规范 I2C时序❗ I2C数据帧❗ AT24C02数据帧❗ AT24C02数据存储 功能 按键1 使数字+1 按键2 使数字-1 按键3 将数字写入AT24C02 按键4 读出AT24C02刚刚写入的数据 代码 main.c #include REGX52.H #include LCD1602.h #include Key.h #include AT24C02.h #include Delay.h unsigned char KeyNum; unsign
[单片机]
C51---12 AT24C02 (<font color='red'>I</font>2C总线)
基于ATtiny841通过I2C总线连接GPS模块
本篇文章主要描述了如何通过I2C总线连接一个简单的GPS模块。使用的控制器是ATtiny841: 简介 将GPS纳入到项目中是一项非常艰巨的任务。首先,您必须正确解析您使用的GPS模块返回的NMEA语句,然后如果您使用接收到的经度和纬度进行任何计算,则需要将浮点GPS库结合到例程中来执行计算。 如果您需要处理一些任何其他重要的事情,GPS处理任务可能会干扰您的其他任务。将GPS处理作为单独的I2C模块解决了这个问题。 我最初设计这个是为运行我的Lisp解释器uLisp的电路板提供GPS支持,但它对于您希望通过简单的I2C接口访问GPS数据的任何其他应用程序都很有用。 GPS变量 I2C数据中的18个字节包含从
[单片机]
基于ATtiny841通过<font color='red'>I</font>2C总线连接GPS模块
全新 i-ToF 图像传感器助力打造更小巧的 3D 摄像系统
全新 i-ToF 图像传感器助力打造更小巧的 3D 摄像系统,在优化成本的同时提升量子效率 【2023 年 03 月 28日,德国慕尼黑讯】 英飞凌科技股份公司与 专注于3D ToF 领域的优质合作伙伴湃安德(pmd)联合推出IRS2877C ToF VGA 传感器的性能进阶版——IRS2976C 飞行时间(ToF)VGA 传感器。该传感器是 REAL3™ 系列产品的新成员。 这款产品采用了英飞凌的新型像素技术,将像素的量子效率提升到 30% 以上,达到迄今为止只有背面照明(BSI)传感器才能实现的水平,同时又保持了正面照明(FSI)传感器的成本优势。得益于此,IRS2976C 图像传感器成为全球首款获得谷歌人脸识别
[传感器]
全新 <font color='red'>i</font>-ToF 图像传感器助力打造更小巧的 3D 摄像系统
8051/2单片机常用的本地通讯方式 UART,RS485,I2C,SPI 之 SPI 25AA040A 读写 E2PROM 4
一、说明 PART 3 SPI (SCLK,SDO,SDI) 全双工 SCLK 时钟 ,SDO(MOSI) 数据输出,SDI (MISO) 数据输入 8051SPI 和 I2C一样也是需要用IO模拟 SPI总线传输共有4种类型, CPOL位,高电平为:1,低电平为:0 CPHA位, 边沿,先读后写:0,先写后读:1 传输时候,先传输高位再传输低位 实验程序采用SPI 串行总线的EEPROM,25AA040A 过程 读数据: 先写入读命令,再写读地址 写数据: 先使写地址锁存,然后使用写命令,写地址,然后再写入数据 A8 如果是9位寄存器有效 1,8位为0 二、演示 三、时序 命令字 读写时序 写使能
[单片机]
8051/2单片机常用的本地通讯方式 UART,RS485,<font color='red'>I</font>2C,SPI 之 SPI 25AA040A 读写 E2PROM 4
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved