YT8531调试记录

总结

还是从设备树,mac驱动,mac驱动对mdio总线的注册,phy驱动 ,phy的datasheet,cpu的datasheet 几个方面来看来看

0.确认供电,以及phy的地址(一般会有多个地址,根据相关引脚电平可配置)

1.确认reset的有效电平

2.确认IO的有效电平

3.确认phy-mode,以及它的pinctrl的复用情况 (cat /sys/kernel/debug/pinctrl/pinctrl-handles  看current state)

4.确认rx_tx_delay的使能,和对应平台的时序

5.确认中断属性带来的影响

设备树

主要是选择pinctrl;配置reset脚;设置IO电平;设置phy的寄存器,phy-mode,中断属性等

eth0: eth@0xd4281800 {
				compatible = "eth";
				pinctrl-names = "default", "rgmii-pins";
				pinctrl-0 = <&emac_pmx_func0 &emac_pmx_func2 &emac_pmx_func3 &emac_pmx_func4>;
				pinctrl-1 = <&emac_pmx_func0 &emac_pmx_func1  &emac_pmx_func2 &emac_pmx_func3 &emac_pmx_func4>;
				reg = <0xd4281800 0x200>;
				interrupts = <10 11>;
				lpm-qos = <PM_QOS_CPUIDLE_BLOCK_AXI>;
				status = "okay";

				reset-gpio = <&gpio 34 0>;
				reset-active-low;/* 根据phy的电气属性选择这个使能电平,一般都是拉低复位,拉高正常工作 */

				reset-delays-us = <0 100000 100000>;

				clk-tuning-enable;
				
				tx-clk-config = <0x1>;
				rx-clk-config = <0x1>;
				3v3-enable = <0>; /* IO voltage, 1 - 3.3v, 0 - 1.8v 跟据phy的电气属性选择不同电平 */ 

				phy-handle = <&phy0>;

				mdio: mdio-bus {
					#address-cells = <0x1>;
					#size-cells = <0x0>;

					/* YT8531  10M/100M/1000M 3.3V RGMII PHY */
					phy0: phy@0 {
						compatible = "ethernet-phy-id4f51.e91b","ethernet-phy-ieee802.3-c22";
						device_type = "ethernet-phy";
						reg = <0x0>; /* set phy address*/
						phy-mode = "rgmii";
						//interrupts = <11>; /* 有中断属性的话,当phy的状态变为running,就不会去调用phy_read_status */
					};

				};
};

状态机

3.10.33内核版本如下 ,不同版本内核,状态机跟设备树都是不一样的操作;具体以各版本源码为准;如果设备了配了中断属性,RUNNING状态就不会自适应百兆千兆了

void phy_state_machine(struct work_struct *work)
{
......        
	case PHY_RUNNING:
			/* Only register a CHANGE if we are polling or ignoring
				* interrupts and link changed since latest checking.
				*/
			if (!phy_interrupt_is_valid(phydev)) {
					old_link = phydev->link;
					err = phy_read_status(phydev);
					if (err)
							break;

					if (old_link != phydev->link)
							phydev->state = PHY_CHANGELINK;
			}
			break;
......
}

mac驱动

up eth0时会调用emac驱动中注册的net_device的netdev_ops成员的ndo_open

net_device_ops
	ndo_open
		of_phy_connect
			phy_prepare_link
				phydev->adjust_link = handler;这个handler是mac驱动根据link状态,来调整speed和duplex

rx_tx_delay

RX和TX的delay是决定数据流是否能通的关键,因为不同平台的数据传输时序各有差异,phy驱动需要对这个delay进行调整

寄存器 

PHY是 IEEE802.3 中定义的一个标准模块。PHY 寄存器的地址空间为 5 位,因此寄存器范围是0 到31 ,最多有 32 个寄存器。IEEE802.3 定义了地址为0-15 这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义。当然不同PHY,还是以他们的datasheet为准

访问方式 

不同的phy的大体上都有这三种方式来访问phy的寄存器,扩展寄存器不同平台的差异就比较明显,因为是有phy厂家自己定义的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

青年人格测验,管理岗和管培生的招聘测评

青年人格测验是由美国心理学家高夫提出&#xff0c;并逐渐完善的一种性格测试工具。在青年人格测验中&#xff0c;人的人格特质被分为许多个维度&#xff0c;不同的维度&#xff0c;都能对我们健全自身性格&#xff0c;了解自己&#xff0c;起着至关重要的作用。 高夫曾是mmpi…

[NKCTF 2024]web解析

文章目录 my first cms全世界最简单的CTF解法一解法二 my first cms 打开题目在最下面发现是CMS Made Simple&#xff0c;版本为2.2.19 扫一下发现存在后台登陆界面&#xff0c;直接访问 用字典爆破下admin的密码为Admin123 然后直接登录&#xff0c;去漏洞库搜一下其实存在…

武汉凯迪正大—开关柜模拟装置

产品简介 产品包括断路器模拟装置,控制器和控制盒,控制盒包括盒体,控制按钮和信号装置,控制按钮和信号装置设置于盒体的表面,且均与控制器连接.控制按钮和信号装置集中安装于控制盒的盒体表面上。 由于控制盒上的控制按钮和信号装置集中安装,使开关柜模拟实验控制装置体积小,…

mysql增量备份与修复

MySQL数据库增量恢复 1.一般恢复 将所有备份的二进制日志内容全部恢复 2.基于位置恢复 数据库在某一时间点可能既有错误的操作也有正确的操作 可以基于精准的位置跳过错误的操作 发生错误节点之前的一个节点&#xff0c;上一次正确操作的位置点停止 3.基于时间点恢复 跳过…

[自动化测试]博客系统测试用报告

目录 (一) 项目介绍 (二) 测试计划 1. 功能测试 &#xff08;1&#xff09;测试环境 &#xff08;2&#xff09;测试用例 &#xff08;3&#xff09;部分的功能测试 2. 自动化测试 项目介绍 项目整体基于 HTTP 协议&#xff0c;前端使用 HTMLCSSJS 构建页面整体布局&#x…

【Unity3D小功能】Unity3D中实现点击‘文字’出现‘UI面板’

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 宠粉博主又来了&#xff0c;今天有粉丝问我如何实…

如何在VS Code上搭建 C/C++开发环境

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、什么是VScode VScode&#xff08;Visual Studio Code&#xff09;是一款由微软开发的免费开源的轻量级代码编辑器。它…

AI垃圾装满溢出识别摄像机

AI垃圾装满溢出识别摄像机是一种基于人工智能技术的创新设备&#xff0c;旨在实时监测公共场所垃圾箱的装填情况&#xff0c;及时警示相关部门进行清理或更换&#xff0c;提高城市管理效率&#xff0c;改善城市环境质量。这种AI垃圾装满溢出识别摄像机通过搭载先进的图像识别和…

大唐杯国赛解读及赛前准备分析

从参赛类别的区分到大唐杯名称由原来的“第九届‘大唐杯’全国大学生移动通信5G技术大赛”变更为“第九届‘大唐杯’全国大学生新一代信息通信技术大赛”一系列的变化。 接下来重点讲解本科A组的情况分析: 需要注意的是,和去年的比赛不同,今年并不是两人互相讨论,而是和省…

如何使用 JavaScript 导入和导出 Excel

前言 在现代的Web应用开发中&#xff0c;与Excel文件的导入和导出成为了一项常见而重要的任务。无论是数据交换、报告生成还是数据分析&#xff0c;与Excel文件的交互都扮演着至关重要的角色。本文小编将为大家介绍如何在熟悉的电子表格 UI 中轻松导入 Excel 文件&#xff0c;…

zabbix进阶

知识点补充 zabbix server在主机上运行服务&#xff0c;端口号为10050&#xff0c;zabbix agent 在被监控机器上运行&#xff08;源码下载&#xff09;主要完成对cpu&#xff0c;磁盘的信息采集&#xff0c;端口号为10051 zabbix 软件结构组成&#xff1a; 1.Zabbix Web GUI …

【Java程序设计】【C00369】基于(JavaWeb)Springboot的笔记记录分享平台(有论文)

[TOC]() 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击…

常用类四(Math类)

目录 Math 类的常用方法&#xff1a; Random 类的常用方法&#xff1a; java.lang.Math 提供了一系列静态方法用于科学计算&#xff1b;其方法的参数和返回值类型一般 为 double 型。如果需要更加强大的数学运算能力&#xff0c;计算高等数学中的相关内容&#xff0c;可以使用…

【Java程序设计】【C00343】基于Springboot的船运物流管理系统(有论文)

基于Springboot的船运物流管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及i…

libVLC 视频缩放

libvlc是一个常用的开源多媒体框架&#xff0c;它可以用来播放和处理各种类型的音频和视频文件。如果想要缩放视频&#xff0c;可以通过libvlc提供的API来实现。 //设置视频的缩放比例。 libvlc_video_set_scale() 以下是如何使用 libVLC 设置视频缩放的基本步骤&#xff1a;…

根据IP地址获取归属地

IP获取归属地&#xff0c;通过地址库获取 如果使用API接口获取&#xff0c;可能会出现服务挂了&#xff0c;或者服务地址不提供服务了等问题。而采用本地地址库就没有这些问题。 本文采用离线IP地址定位库 Ip2region&#xff0c;Ip2region是一个离线IP地址定位库&#xff0c;微…

ElasticSearch之数据建模

写在前面 本文看下es数据建模相关的内容。 1&#xff1a;什么是数据建模 数据建模是对真实数据的一种抽象&#xff0c;最终映射为计算机形式的表现。其包括如下三个阶段&#xff1a; 1&#xff1a;概念模型 2&#xff1a;逻辑模型 3&#xff1a;数据模型2&#xff1a;es数据…

案例分享:F5助力车企打造智能高效自动化应用

纵观当下的汽车市场&#xff0c;智能汽车百花齐放。自动驾驶、车载娱乐、实时3D地图等实现人机互动的出行场景&#xff0c;解锁着全新的出行方式。然而得到独特而先进的智能用车体验&#xff0c;离不开持续而深入的汽车应用变革。那么怎样打造智能高效的自动化应用呢&#xff1…

JavaWeb后端——HTTP协议/Tomcat

HTTP HTTP协议&#xff1a;无状态&#xff0c;对事务处理没有记忆能力。每次请求-响应都是独立的。后一次请求不会记录前一次请求数据。缺点&#xff1a;多次请求之间不能共享数据&#xff0c;优点&#xff1a;速度快。 HTTP协议请求报文&#xff1a; HTTP协议响应报文&#x…

(MATLAB)第二十一章 Simulink仿真设计初步

Simulink是MATLAB的重要组成部分&#xff0c;可以非常容易地实现可视化建模&#xff0c;并把理论研究和工程实践有机地结合在一起&#xff0c;不需要书写大量程序&#xff0c;只需要使用鼠标和键盘对已有模块进行简单的操作和设置。 21.1 Simulink简介 Simulink是MATLAB软件的…