uboot-网络配置


一、网络简介

💦I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET,需要外接一个 PHY 芯片来实现网络通信功能,也就是内部 MAC+外部 PHY 芯片的方案。
💦大家可能听过 DM9000 这个网络芯片,在一些没有内部 MAC 的 CPU 中,比如三星的 2440,4412 等,就会采用 DM9000 来实现联网功能。DM9000 提供了一个类似 SRAM 的访问接口,主控 CPU 通过这个接口即可与DM9000 进行通信,DM9000 就是一个 MAC+PHY 芯片。这个方案就相当于外部 MAC+外部PHY。
💦I.MX6U 这样的内部 MAC+PHY 芯片与 DM9000 方案比有什么优势吗?、
💦优势就是通信效率和速度,一般 SOC 内部的 MAC 是带有一个专用 DMA 的,专门用于处理网络数据包,采用 SRAM 来读写 DM9000 的速度是压根就没法和内部 MAC+外部 PHY 芯片的速度比。
💦I.MX6UL/ULL 有两个网络接口 ENET1 和 ENET2, I.MX6U-ALPHA 开发板提供了这两个网络接口,其中 ENET1 和 ENET2 都使用 LAN8720A 作为 PHY 芯片。
💦NXP 官方的I.MX6ULL EVK 开发板使用 KSZ8081 这颗 PHY 芯片,LAN8720A 相比 KSZ8081 具有体积小、外围器件少、价格便宜等优点。所以需要修改网络驱动来适配LAN8720A 。
💦ENET1原理图如下:
在这里插入图片描述
💦LAN8720A 状态判断
I.MX6ULL 会读取 LAN8720 内部寄存器来判断当前的物理链接状态、连接速度(10M 还是 100M)和双工状态(半双工还是全双工)。
💦通讯方式
I.MX6ULL 通过 MDIO接口来读取 PHY 芯片的内部寄存器,MDIO 接口有两个引脚,ENET_MDC 和 ENET_MDIO,ENET_MDC 提供时钟,ENET_MDIO 进行数据传输。一个 MDIO 接口可以管理 32 个 PHY 芯片,同一个 MDIO 接口下的这些 PHY 使用不同的器件地址来做区分,MIDO 接口通过不同的器件地址即可访问到相应的 PHY 芯片。
💦I.MX6U-ALPHA 开发板 ENET1 上连接的 LAN8720A器件地址为 0X0,所示我们要修改 ENET1 网络驱动的话重点就三点:
①、ENET1 复位引脚初始化。
②、LAN8720A 的器件 ID。
③、LAN8720 驱动
💦ENET2原理图如下:
在这里插入图片描述
💦关于 ENET2 网络驱动的修改也注意一下三点:
①、ENET2 的复位引脚,ENET2 的复位引脚 ENET2_RST 接到了I.MX6ULL 的SNVS_TAMPER8 上。
②、ENET2 所使用的 PHY 芯片器件地址,PHY 器件地址为 0X1。
③、LAN8720 驱动,ENET1 和 ENET2 都使用的 LAN8720,所以驱动肯定是一样的。

二、修改PHY芯片地址

💦修改 uboot 中的 ENET1 和 ENET2 的 PHY 地址和驱动,打开 mx6ull_alientek_emmc.h这个文件,找到如下代码:
💦未修改时如下:
在这里插入图片描述
💦修改后如下:
在这里插入图片描述

三、删除 uboot 中 74LV595 的驱动代码

💦原因:75LV595是官方用来控制PHY复位的芯片,在开发板上,是使用IO直接控制的,所以将跟75LV595芯片相关的代码删除。

1.删除宏定义,添加ENET1和ENET2复位引脚,宏定义

在这里插入图片描述
💦ENET1 的复位引脚连接到 SNVS_TAMPER7 上,对应 GPIO5_IO07,ENET2 的复位引脚连接到 SNVS_TAMPER8 上,对应 GPIO5_IO08。

2.删除内容如下

💦是 74LV595 的 IO 配置参数结构体,将其删除掉。
在这里插入图片描述
💦在mx6ull_alientek_emmc.c 中找到函数 iox74lv_init
💦iox74lv_init 函数是 74LV595 的初始化函数,iox74lv_set 函数用于控制 74LV595 的 IO 输出电平,将这两个函数全部删除掉!
在这里插入图片描述
在这里插入图片描述
💦在 mx6ull_alientek_emmc.c 中找到 board_init 函数,此函数是板子初始化函数,会被board_init_r 调用,board_init 函数内容如下:
💦board_init 会调用 imx_iomux_v3_setup_multiple_pads 和 iox74lv_init 这两个函数来初始化74lv595 的 GPIO,将这两行删除掉。
在这里插入图片描述

四、添加 I.MX6U-ALPHA 开发板网络复位引脚驱动

💦结构体数组 fec1_pads 和 fec2_pads 是 ENET1 和 ENET2 这两个网口的 IO 配置参数,在这两个数组中添加两个网口的复位 IO 配置参数
在这里插入图片描述
在这里插入图片描述

💦函数 setup_iomux_fec 就是根据 fec1_pads 和 fec2_pads 这两个网络 IO 配置数组来初始化I.MX6ULL 的网络 IO。我们需要在其中添加网络复位 IO 的初始化代码,并且复位一下 PHY 芯片,修改后的 setup_iomux_fec 函数如下:
在这里插入图片描述

💦修改 drivers/net/phy/phy.c 文件中的函数 genphy_update_link
uboot 中的 LAN8720A 驱动有点问题,打开文件drivers/net/phy/phy.c,找到函数 genphy_update_link,这是个通用 PHY 驱动函数,此函数用于更新 PHY 的连接状态和速度。使用 LAN8720A 的时候需要在此函数中添加一些代码,修改后的函数 genphy_update_link 如下所示:
在这里插入图片描述
💦读取LAN8720A 的 BMCR 寄存器(寄存器地址为 0),此寄存器为 LAN8720A 的配置寄存器,这里先读取此寄存器的默认值并保存起来。向寄存器 BMCR 寄存器写入 BMCR_RESET(值为0X8000),因为 BMCR 的 bit15 是软件复位控制位,复位完成以后此位会自动清零。等待 LAN8720A 软件复位完成,也就是判断 BMCR的 bit15 位是否为 1,为 1 的话表示还没有复位完成。重新向 BMCR 寄存器写入以前的值, 一开始读出的那个值。

  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Uboot是一种嵌入式系统的引导程序,用于启动操作系统。TP-Link720nv4是一款由TP-Link公司生产的路由器型号。 Uboot-tplink720nv4是指为TP-Link720nv4路由器定制的Uboot引导程序。Uboot-tplink720nv4具有以下特点: 1. 支持快速启动:Uboot-tplink720nv4能够在路由器开机时快速加载,以便尽快启动路由器操作系统,降低用户等待时间。 2. 自定义引导选项:Uboot-tplink720nv4具有丰富的引导选项,用户可以根据自己的需求进行选择。比如,可以选择从不同的存储设备启动,如FLASH、SD卡等,或者通过网络启动。 3. 系统维护功能:Uboot-tplink720nv4还提供了一些系统维护功能,方便用户管理和维护路由器。例如,可以进行固件升级、配置文件恢复和备份等操作。 4. 可靠性和稳定性:Uboot-tplink720nv4经过精心设计和测试,具有较高的可靠性和稳定性。它能够有效地处理各种异常情况,并在出现问题时进行适当的错误处理和恢复。 总之,Uboot-tplink720nv4是一款针对TP-Link720nv4路由器定制的引导程序,能够提供快速启动、自定义引导选项、系统维护功能以及可靠性和稳定性等特点。这些特点使得Uboot-tplink720nv4成为路由器启动和管理的重要工具,为用户提供了更好的使用体验和更高的可靠性。 ### 回答2: U-Boot是一个开源的引导加载程序,用于在嵌入式设备上引导操作系统。而TP-Link 720N V4是一款由TP-Link公司生产的路由器。uboot-tplink720nv4是U-Boot的一个定制版本,专门针对TP-Link 720N V4进行优化和适配。 uboot-tplink720nv4的主要功能有以下几个方面: 1. 引导加载程序:uboot-tplink720nv4负责引导路由器的操作系统。它从存储介质(如闪存或TF卡)中读取操作系统的映像文件,并将其加载到系统内存中进行执行。它也可以从网络中引导操作系统,例如通过TFTP协议从服务器下载映像文件。 2. 诊断和配置uboot-tplink720nv4提供了一套诊断和配置工具,可以对路由器进行诊断和设置。通过串口或网络接口,用户可以访问uboot-tplink720nv4的控制台,查看系统状态、配置参数和执行一些基本的维护操作。 3. 固件更新:uboot-tplink720nv4还支持在路由器上进行固件更新。用户可以通过控制台上传新的固件映像文件,uboot-tplink720nv4会将其写入到闪存中,以更新路由器的软件版本。 4. 定制和优化:uboot-tplink720nv4是根据TP-Link 720N V4的硬件架构和功能进行定制和优化的。它可以最大程度地利用路由器的资源,提供高性能和稳定的引导加载功能。 总之,uboot-tplink720nv4是一款针对TP-Link 720N V4路由器的定制U-Boot引导加载程序,它提供了引导加载、诊断和配置、固件更新等功能,可以最大化利用路由器的性能和功能。 ### 回答3: uboot-tplink720nv4 是一个针对 TP-Link 720n V4 路由器的 U-Boot 引导程序。U-Boot 是一个开源的引导加载程序,它负责加载操作系统并引导设备启动。TP-Link 720n V4 是一款低成本的家用路由器,uboot-tplink720nv4 提供了一种自定义引导程序的方式,使用户能够更灵活地管理和控制设备。 uboot-tplink720nv4 的安装需要通过刷写固件的方式完成。刷写固件前需确保设备已 root 或已解锁。在刷写过程中需要注意备份原始固件,以防意外发生。安装完成后,用户可以根据自己的需要进行配置和使用。 uboot-tplink720nv4 提供了丰富的功能和选项,例如用户可以定制启动菜单、修改网络设置、烧录新固件等。这些功能使用户可以更好地控制路由器,并提供了更高的扩展性和自定义化的可能性。 与传统的固件相比,uboot-tplink720nv4 的优势在于其开源性和灵活性。用户可以根据自己的需求进行二次开发和定制,从而实现更多个性化的功能。此外,作为开源项目,uboot-tplink720nv4 可以通过社区的力量进行不断的改进和更新,提供更好的用户体验和稳定性。 总之,uboot-tplink720nv4 是一个适用于 TP-Link 720n V4 路由器的 U-Boot 引导程序,它提供了更灵活和可定制的方式来管理和控制设备。用户可以根据自己的需求进行安装和配置,并享受更多个性化的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值