当前位置: 首页 > news >正文

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开发板网络方案说明

一. 简介 正点原子 ALPHA开发板,包括我们移植的 Uboot,都是参考了 NXP(恩智浦)官方的开发板的。 I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET ,需要外接一个 PHY 芯片来实现网络通信功能&#…...

[Ubuntu 20.04] HEIF图像格式与libheif库及其工具的使用

一、HEIF图像格式 HEIF 是一种高效的图像文件格式,它由 MPEG(Moving Picture Experts Group)组织制定。相较于传统的 JPEG 格式,HEIF 提供了更好的图像质量和更高的压缩率。下面是对 HEIF 格式的详细解析: 图像编码技术:HEIF 使用先进的编码技术来实现更高效的图像压缩。…...

AI驱动的未来:探索人工智能的无限潜力 | 开源专题 No.39

这一系列开源项目代表着多个领域的最新技术成果,包括深度学习、自然语言处理、计算机视觉和分布式训练。它们共同的特点是致力于教育、资源分享、开源精神、多领域应用以及性能和效率的追求,为广大开发者、研究者和学生提供了宝贵的工具和知识&#xff0…...

vs中C++编译未生成exe

1、新建空工程&#xff0c;添加main.h文件至“头文件”文件夹中&#xff0c;添加mian函数及实现 2、编译工程未有任何提示&#xff0c;不报错&#xff0c;不生成exe&#xff0c;无法执行 对比新建控制台程序发现.vcxproj文件中引用main.h文件为 无法生成&#xff1a; <I…...

Linux自有服务与软件包管理

服务是一些特定的进程&#xff0c;自有服务就是系统开机后就自动运行的一些进程&#xff0c;一旦客户发出请求&#xff0c;这些进程就自动为他们提供服务&#xff0c;windows系统中&#xff0c;把这些自动运行的进程&#xff0c;称为"服务" 举例&#xff1a;当我们使…...

Centos7中redis开机自启动设置

以下亲测实践有效。 进入以下目录 cd usr/local/redis/redis-6.2.6/utils/ 编辑修改以下文件内容 vim redis_init_script #修改redis安装启动目录 REDISPORT6379 #修改安装目录 EXEC/usr/local/redis/redis-6.2.6/src/redis-server CLIEXEC/usr/local/redis/redis-6.2.6/sr…...

STM32F4之系统滴答定时器

一、系统滴答定时器概述 传统定时器&#xff1a;如手机闹钟&#xff0c;闹钟等就是一个简单地计数器。 定时器概念&#xff1a;由时钟源计数器计数值组成的计数单元。 系统嘀嗒定时器首先是存在于内核里&#xff0c;系统嘀嗒时钟假如用的是同一个内核那么里面相关的配置&…...

P4 并发控制

文章目录 Task1 锁管理器LockTableUnLockTableLockRowUnLockRow Task2 死锁检测Task3 并发查询执行器Isolation Levelseq_scan_executorinsert_executordelete_executortransaction_manager Task1 锁管理器 LockManager类包含两个属性类&#xff0c;分别是LockRequest和LockRe…...

友元的介绍

实现外部类和外部函数存取类的私有成员和保护成员的方法。 一、友元函数 可访问类所有成员的外部函数 //求两点间的距离&#xff1a;抽象点——>求距离的函数 #include<iostream> #include<cmath> using namespace std; class Point{private:double x,y;publ…...

新手如何找到Docker容器(redis)中的持久化文件?

具体步骤 要查看Docker容器的dump.rdb和appendonly.aof文件&#xff08;如果启用了AOF持久化&#xff09;的位置&#xff0c;我们需要知道容器中Redis配置文件的内容或者容器的数据卷的挂载位置。 这里是一般步骤&#xff1a; 查找容器的数据卷挂载位置 使用docker inspect命令…...

python二次开发Solidworks:读取立方体的高度

在SW中新建一个零件文档&#xff0c;建立一个立方体&#xff0c;长度和宽度自定义&#xff0c;高度100mm&#xff0c;下面通过python实现读取该立方体的高度&#xff1a; import win32com.client as win32 import pythoncomswApp win32.Dispatch(sldworks.application) swApp.…...

NPM安装后报错:ERROR: npm v10.2.1 is known not to run on Node.js v10.24.1.

问题描述 NPM卸载高版本后安装低版本运行报错&#xff1a; C:\Users\Administrator>npm -v ERROR: npm v10.2.1 is known not to run on Node.js v10.24.1. This version of npm supports the following node versions: ^18.17.0 || >20.5.0. You can find the latest…...

【Vue】Element开发笔记

Element开发笔记 前言 官网 https://element.eleme.cn/#/zh-CN/component/upload 其它项目网站 https://www.cnblogs.com/qq2806933146xiaobai/p/17180878.html 表格 序号列添加 <el-table-column type"index" :index"handleIndexCalc" label&qu…...

How to install mongodb 7.0 to Ubuntu 22.04

How to install mongodb 7.0 to Ubuntu 22.04 1、安装1.1、添加gpg1.2、添加apt源1.3、更新1.4、安装 2、管理2.1、服务管理2.1.1、查看服务状态2.1.2、启动服务2.1.3、 设置服务为开机启动2.1.4、取消服务开机启动2.1.5、关闭服务2.1.6、服务重启 2.2、mongosh2.2.1、进入mong…...

AFL安全漏洞挖掘

安全之安全(security)博客目录导读 ATF(TF-A)/OPTEE之FUZZ安全漏洞挖掘汇总 目录 一、AFL简介 二、AFL的安装 三、代码示例及种子语料库 四、AFL插桩编译 五、AFL运行及测试 六、AFL结果分析 一、AFL简介 模糊测试&#xff08;Fuzzing&#xff09;技术作为漏洞挖掘最有…...

ES6 let const var和解构赋值

1.let/const和var的区别 1.变量提升&#xff1a;var会发生变量提升&#xff0c;let和const不存在变量提升 2.暂时性死区&#xff1a;变量声明之前变量不可用称为暂时性死区。var不存在&#xff0c;let和const存在暂时性死区 3.typeof 不再是百分百不会报错&#xff1a;let声…...

03、MySQL-------数据库中间件MyCat实现读写分离

目录 八、数据库中间件MyCat实现读写分离1、克隆&#xff1a;2、配置分析&#xff1a;1、schema.xml2、启动mycat&#xff1a;3、关闭防火墙&#xff1a;4、代码测试&#xff1a;测试写入&#xff1a;测试读&#xff1a;强制读Master 八、数据库中间件MyCat实现读写分离 作用&…...

虹科活动 | 探索全新AR应用时代,虹科AR VIP研讨会广州场回顾!

文章来源&#xff1a;虹科数字化AR 阅读原文&#xff1a;https://mp.weixin.qq.com/s/7tmYR42Tw5XLn70fm8Nnew 主题演讲 本次研讨会&#xff0c;虹科特邀 “工业AR鼻祖” 美国Vuzix公司的首席应用工程师郑慎方先生进行主题演讲&#xff0c;并邀请到了各界的专业人士和企业代表参…...

非科班,补基础

大家好&#xff0c;我是大彬~ 今天跟大家分享知识星球小伙伴关于【非科班转码如何补基础】的提问。 往期星球提问整理&#xff1a; 读博&#xff1f;找工作&#xff1f; 性格测试真的很重要 想找一份实习工作&#xff0c;需要准备什么 球友提问&#xff1a; 大彬大佬&#xf…...

安全性与合规性:IT运维的双重守护

在当今数字化时代&#xff0c;信息技术&#xff08;IT&#xff09;已深入渗透到企业的各个层面。随着数据和技术的不断发展&#xff0c;IT运维安全性和合规性逐渐成为了企业运营的两大核心要素。它们不仅保障了企业数据的安全&#xff0c;更维护了公司的声誉和客户信任。本文将…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...