ALPHA开发板网络方案说明

编程入门 行业动态 更新时间:2024-10-17 04:55:53

ALPHA<a href=https://www.elefans.com/category/jswz/34/1769228.html style=开发板网络方案说明"/>

ALPHA开发板网络方案说明

一. 简介

正点原子 ALPHA开发板,包括我们移植的 Uboot,都是参考了 NXP(恩智浦)官方的开发板的。

I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET ,需要外接一个 PHY 芯片来实现网络通信功能,也就是内部 MAC+ 外部 PHY 芯片的方案。

二.  NXP官方uboot针对ALPHA开发板网络驱动更改

1.  I.MX6U-ALPHA 开发板网络简介

(1)   网络方案:

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 芯 片的速度比。采用外部 DM9000 完全是无奈之举,谁让 2440 , 4412 这些芯片内部没有以太网 外设呢,现在又想用有线网络,没有办法只能找个 DM9000 的方案。从这里也可以看出,三星 的 2440 、 4412 这些芯片设计之初就不是给工业产品用的,他们是给消费类电子使用的,比如手 机、平板等,手机或平板要上网,可以通过 WIFI 或者 4G ,我是没有见过哪个手机或者平板上 网是要接根 网线的。正点原子的 I.MX6U-ALPHA 开发板也可以通过 WIFI 或者 4G 上网,这个 是后话了。

(2)   NXP官方IM6ULL开发板与正点原子ALPHA开发板各自所使用的 PHY芯片是什么?

I.MX6UL/ULL 有两个网络接口 ENET1 和 ENET2 ,正点原子的 I.MX6U-ALPHA 开发板提供了这两个网络接口,其中 ENET1 和 ENET2 都使用 LAN8720A 作为 PHY 芯片。 NXP 官方的 I.MX6ULL EVK 开发板使用 KSZ8081 这颗 PHY 芯片, LAN8720A 相比 KSZ8081 具有体积小、 外围器件少、价格便宜等优点。 直接使用 KSZ8081 固然可以,但是我们在实际的产品中不一定 会使用 KSZ8081 ,有时候为了降低成本会选择其他的 PHY 芯片,这个时候就有个问题:换了 PHY 芯片以后网络驱动怎么办?为此,正点原子的 I.MX6U-ALPHA 开发板将 ENET1 和 ENET2 的 PHY 换成了 LAN8720A ,这样就可以给大家讲解更换 PHY 芯片以后如何调整网络驱动,使 网络工作正常。

2.  PHY网络芯片LAN8720A

(1)   LAN8720A硬件接口

正点原子的 I.MX6U-ALPHA 开发板提供了这两个网络接口,其中 ENET1 和 ENET2 都使用LAN8720A 作为 PHY 芯片。

PHY网络芯片 LAN8720A是通过什么接口与 IMX6ULL芯片连接的?

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 芯片。

对于正点原子的 ALPHA开发板而言, ENET1的PHY ADDR是0x0,ENET2的PHY ADDR是0X1.

网络数据连接:

通过原理图可以知道,拿 网口 ENET1来说,网络数据的传输通过 ENET1_TXD0,ENET1_TXD1,ENET1_TXEN,ENET1_RXD0,ENET1_RXD1,ENET1_RXER这些引脚进行的。

复位引脚:

每个LAN8720都有一个复位引脚,ENET1是SNVS_TAMPER7,ENET2是SNVS_TAMPER8。

(2)   LAN8720A驱动说明

注意:IEEE802.3对 网络PHY芯片做了规定,规定了 网络PHY芯片的地址 0~15位共16个寄存器的功能。前 16个寄存器的功能都必须保持一致。而且前 16个寄存器可以保证将 PHY网络芯片驱动起来。

因此,就会存在一个通用 PHY驱动。即通用PHY驱动就能驱动所有的 PHY芯片。

LAN8720驱动,因为所有的PHY,其前16个寄存器一模一样,因此uboot里面已经写好了通用PHY驱动,所以理论上不需要修改。

三.  总结

综上所述,

我们要更改 网络 ENET1 网络或  ENET2 网口驱动,重点是更改三点:

①  LAN8720A 的器件 ID,即更改 PHY芯片的 ADDR。

②  删除原有的74LV595相关代码。

③  ENET2 复位引脚初始化,具体就是 添加ALPHA开发板的网络复位IO。

更多推荐

ALPHA开发板网络方案说明

本文发布于:2023-12-08 12:33:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1672805.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:开发板   方案   网络   ALPHA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!