CN109614147B - 一种phy寄存器读写方法和装置 - Google Patents

一种phy寄存器读写方法和装置 Download PDF

Info

Publication number
CN109614147B
CN109614147B CN201811463740.3A CN201811463740A CN109614147B CN 109614147 B CN109614147 B CN 109614147B CN 201811463740 A CN201811463740 A CN 201811463740A CN 109614147 B CN109614147 B CN 109614147B
Authority
CN
China
Prior art keywords
function
processing function
phy
parameter
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811463740.3A
Other languages
English (en)
Other versions
CN109614147A (zh
Inventor
王鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201811463740.3A priority Critical patent/CN109614147B/zh
Publication of CN109614147A publication Critical patent/CN109614147A/zh
Application granted granted Critical
Publication of CN109614147B publication Critical patent/CN109614147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种PHY寄存器读写方法,包括以下步骤:绑定Applet操作函数集以定义辅助函数;解析用户输入的第一命令行参数,以获知用户的访问行为;根据访问行为,调用相应的第一处理函数;通过第一处理函数调用所述辅助函数来解析用户输入的第二命令行参数以获取全部物理访问途径,并将解析后的数据保存到结构体变量中;以及调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入第二处理函数,通过第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作。本发明实现了一种通用的、适配所有应用场景的PHY寄存器读写方法,具有良好的可扩展性。

Description

一种PHY寄存器读写方法和装置
技术领域
本发明总体上涉及计算机领域,并且更具体地,涉及一种PHY寄存器读写方法和装置。
背景技术
以太网设备是服务器、交互机等产品必备的核心硬件资源。当底层研发人员遇到比如数据包收发不一致、大数据量时丢包等类似异常问题时,不仅需要读写监测MAC(MediaAccess Control,局域网中数据链路层的下层部分)的寄存器,而且需要读写监测PHY(Physical Layer,OSI模型中的物理层)的寄存器。而PHY寄存器的访问和MAC寄存器的访问是不同的,MAC设备一般会作为platform device被注册进内核,其寄存器也会被动态映射(ioremap)到内核地址空间。这样一来,如果用户空间要读取MAC寄存器,直接读取寄存器映射后的在内存中的虚拟地址即可。用户空间编程的话,可以借助/dev/mem设备节点,操作逻辑一般如图1所示:首先,打开/dev/mem设备节点,拿到访问内核地址空间的文件描述符;然后,调用mmap函数将要读写的MAC寄存器的内核空间虚拟地址映射到当前进程空间;之后,就可调用read/write(读取/写入)函数读写MAC寄存器了;最后,当访问结束后,关闭/dev/mem设备节点。
但PHY寄存器是没有ioremap到内核地址空间的,它的寄存器读写操作只能由MAC经MDIO(Management Data Input/Output,管理数据输入输出)总线间接访问的方式来实现,所以上述读写底层硬件寄存器的常规做法是行不通的。如果希望在用户空间访问PHY的任意寄存器,那只能从如何操作MAC驱动暴露给上层空间的函数接口来入手。
大多数的消费类产品往往只需要一组网络接口,即只配备一个MAC和一个PHY,即使有更多网络资源的需要,它的MAC和PHY也是一一对应的。但像服务器和交换机这类企业类设备,它会有一个MAC外接多个PHY芯片的需求场景。开源社区存在的PHY寄存器读写工具都是针对一个MAC外接一个PHY的应用场景。而又因为PHY读写工具本身功能单一,没有太多商业价值,因此市面上也没有可付费使用的PHY读写工具供我们选择。
发明内容
鉴于此,本发明实施例的目的在于提出一种通用的、适用于多场景的PHY寄存器读写工具,用于解决PHY芯片的寄存器无法通过/dev/mem读取的问题以及一个MAC外接多个PHY芯片的需求场景下没有PHY读写寄存器工具可用的问题,并且还能够针对寄存器个数超出32的复杂PHY芯片,实现对扩展寄存器读写功能的支持。
基于上述目的,本发明实施例的一方面提供了一种PHY寄存器读写方法,包括以下步骤:
绑定Applet操作函数集以定义辅助函数;
解析用户输入的第一命令行参数,以获知用户的访问行为;
根据所述访问行为,调用相应的第一处理函数;
通过所述第一处理函数调用所述辅助函数来解析用户输入的第二命令行参数以获取全部物理访问途径,并将解析后的数据保存到结构体变量中;以及
调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作。
在一些实施方式中,所述绑定Applet操作函数集以定义辅助函数包括:将所述Applet操作函数集绑定给本地定义的Applet结构体变量;和
通过第一处理函数调用辅助函数来解析第二命令行参数以获取全部物理访问途径包括:将所述Applet结构体变量以参数形式传递给所述第一处理函数。
在一些实施方式中,所述第一处理函数包括第一读操作函数、第一写操作函数以及第一批量打印操作函数,所述第二处理函数包括第二读操作函数、第二写操作函数以及第二批量打印操作函数。
在一些实施方式中,用户输入的所述第二命令行参数包括PHY名称、符合IEEE802.3条款22或45格式的PHY芯片地址、具体要访问的PHY寄存器地址。
在一些实施方式中,所述调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作包括:
调用运行函数,所述运行函数创建一个无障碍的面对消息的套接字,并解析传入的所述结构体变量,将其初始化到本地定义的另一个结构体变量中。
在一些实施方式中,所述调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作还包括:
将所述另一个结构体变量作为输入参数调用驱动程序设备控制接口函数,所述驱动程序设备控制接口函数根据基于用户输入系统自动分配的命令码来通过所述第二处理函数发起面向PHY寄存器的访问。
在一些实施方式中,所述调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作还包括:
所述第二处理函数最终调用MDIO总线下的相应的操作函数,来完成对PHY寄存器的实际操作。
在一些实施方式中,所述批量打印操作函数用于批量打印多组寄存器的值,所述批量打印操作函数内部通过一个循环逻辑多次调用所述读操作函数实现所述多组寄存器的值的打印。
在一些实施方式中,所述方法还包括:在MAC芯片的驱动器没有合并到内核主线的情况下,添加MAC驱动器对PHY抽象层的支撑,包括以下步骤:
将PHY抽象层配置进内核;以及
修改MAC驱动器源码,添加对所述PHY抽象层的驱动程序设备控制接口函数的调用。
本发明实施例的另一方面提供了一种PHY寄存器读写装置,包括:
至少一个处理器;和
存储器,所述存储器存储有处理器可运行的程序代码,所述程序代码在被处理器运行时实施如上任一项所述的方法。
本发明具有以下有益技术效果:本发明实施例提供的一种PHY寄存器读写方法和装置能够解决PHY芯片的寄存器无法通过/dev/mem读取的问题,并且还适用于一个MDIO总线下挂接多个PHY芯片的硬件设计,从而实现对任意PHY寄存器的读写操作,而且针对寄存器个数超出32的复杂PHY芯片,能够实现对扩展寄存器读写功能的支持。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1是现有技术中一般用来读取MAC寄存器的操作逻辑示意图;
图2是根据本发明实施例的一种PHY寄存器读写方法的软件框架逻辑示意图;
图3是根据本发明实施例的运行函数的代码逻辑示意图;
图4是根据本发明实施例的调用驱动程序设备控制接口函数进入内核后的逻辑示意图;
图5是根据本发明实施例的一种PHY寄存器读写装置的硬件结构示意图。
具体实施方式
以下描述了本公开的实施例。然而,应该理解,所公开的实施例仅仅是示例,并且其他实施例可以采取各种替代形式。附图不一定按比例绘制;某些功能可能被夸大或最小化以显示特定部件的细节。因此,本文公开的具体结构和功能细节不应被解释为限制性的,而仅仅是作为用于教导本领域技术人员以各种方式使用本发明的代表性基础。如本领域普通技术人员将理解的,参考任何一个附图所示出和描述的各种特征可以与一个或多个其他附图中所示的特征组合以产生没有明确示出或描述的实施例。所示特征的组合为典型应用提供了代表性实施例。然而,与本公开的教导相一致的特征的各种组合和修改对于某些特定应用或实施方式可能是期望的。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明实施例提供了一种PHY寄存器读写方法,包括以下步骤:
绑定Applet操作函数集以定义辅助函数;
解析用户输入的第一命令行参数,以获知用户的访问行为;
根据所述访问行为,调用相应的第一处理函数;
通过所述第一处理函数调用所述辅助函数来解析用户输入的第二命令行参数以获取全部物理访问途径,并将解析后的数据保存到结构体变量中;以及
调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作。
在一些实施例中,上述方法可以通过软件工具来实现,所述软件工具命名为phytool,其软件框架的逻辑示意图如图2所示。首先,绑定Applet操作函数集,Applets操作函数集定义了一些辅助函数,用于读写过程中控制逻辑的实现,它在phytool最开始执行时绑定给本地定义的struct applet结构体变量,后续会以参数形式传递给第一处理函数,例如phytool_read()、phytool_write()等函数,具体如下:
static struct applet applets[]={
{
.name="phytool",
.usage=phytool_usage,
.parse_loc=phytool_parse_loc,
.print=phytol_dump
},
{.name=NULL}
};
其中,phytool_usage函数用于打印phytool工具的使用方法,当用户的命令行参数输入有误时,该函数就会被调用;phytool_parse_loc用于解析phytool的第二命令行参数IFACE/ADDR/REG<0-0xffff>,IFACE指代物理PHY(比如eth2)、ADDR表示符合IEEE 802.3条款22(C22)或45(C45)格式的地址空间(用来标识要访问的是挂接在MAC上的哪个PHY)、REG表示要读写的寄存器地址(如果是写寄存器操作,则后面还要跟要写入的寄存器值<0-0xffff>)。ADDR地址格式定义如下:
ADDR:=C22|C45
C22:=<0-0x1f>
C45:=<0-0x1f>:<0-0x1f>
REG:=<0-0x1f>
要注意的是,并不是所有的MDIO驱动器都支持“port:device”45款地址格式。phytol_dump函数可以看作是一个批量快捷操作,有时候我们在监测有相关性的若干寄存器时,往往希望把它们一次性都打印出来,以便于分析,该函数就是把用户命令行指定了起始地址及个数的寄存器全部打印出来。
在一些实施例中,phytool工具面向上层实现了3个功能性接口,即第一处理函数,包括第一读操作函数phytool_read()、第一写操作函数phytool_write()、第一批量打印操作函数phytool_dump()。用户在命令行输入的第一命令行参数用于指定希望的访问行为,如果是“read”,则表示是读操作,phytool_read()函数会被调用;如果是“write”,则表示是写操作,phytool_write()函数会被调用;如果是“dump”,则表示是批量打印操作,phytool_dump()函数会被调用。
其中在一个实施例中,phytool_read()函数,首先判断输入参数个数是否满足,如果不符合,则直接返回异常,接着调用之前绑定的函数集中的phytool_parse_loc函数,用来解析用户输入的第二命令行参数“IFACE/ADDR/REG<0-0xffff>”,解析后的信息保存到struct loc结构体变量中,该结构体定义如下:
struct loc{
char ifnam[IFNAMSIZ];
uint16_t phy_id;
uint16_t reg;
};
其中,ifnam用来保存PHY的名称,比如“eth2”;phy_id用来保存PHY的C22或C45格式的芯片地址,表示要访问的是MAC上的哪个PHY;reg表示具体要访问的寄存器地址。有了这三组数据信息,phytool就知道了全部的物理访问路径。最后phytool_read()函数将解析后获得的struct loc结构体变量指针作为参数传递给第二读操作函数phy_read(),该函数会发起最终面向PHY硬件的访问行为,返回读取到的寄存器值,并将其打印到显示终端。phytool_write()函数,同样首先判断输入参数个数是否满足,不满足则返回异常,随后调用phytool_parse_loc函数来解析命令行输入的“IFACE/ADDR/REG<0-0xffff>”参数,将解析后的数据保存到一个struct loc结构体变量中。最后调用第二写操作函数phy_write(),把包含待写入value值的struct loc结构体变量指针作为参数传入,函数内部会依据这个参数找到要改写的寄存器,将value值写入。phytool_dump()函数,用于批量打印多组寄存器的value值,该函数实际是对phytool_read()函数的再封装,内部通过一个循环逻辑多次调用phytool_read()函数实现多组寄存器值的打印,循环的次数通过函数入参获取。
在一些实施例中,在调用到的phy_read()、phyl_write()、phy_dump()等函数后,其经过若干代码逻辑之后,最终都会调用到运行函数_phy_op()。该函数是phytool工具的核心软件实现,它采用socket套接字配合ioctl(其是设备驱动程序中对设备的I/O通道进行管理的函数)系统调用,实现了对PHY寄存器的实际访问,其代码逻辑如图3所示。其中,_phy_op()函数首先调用socket()创建一个套接字,套接字类型采用基于UDP的SOCK_DGRAM,表示是无保障的面向消息的套接字,主要用于网络上发送广播消息,MAC和多个PHY之间的控制传输适合采用该套接字类型,其符合我们的传输要求。struct mii_ioctl_data结构体作为输入参数用于SIOCxMIIxxx相关的ioctl系统调用,定义如下:
Figure BDA0001889218510000081
其中,phy_id表示MAC的MDIO总线下的PHY地址、reg_num表示要访问的物理寄存器的地址、val_in用于保存要写入寄存器的value值、val_out则用于存放读出的寄存器value值。
_phy_op()函数解析传入的struct loc结构体变量之后将其初始化到一个本地定义的struct mii_ioctl_data结构体变量中,最后以其为输入参数调用驱动程序设备控制接口函数ioctl(),发起最终的面向PHY物理寄存器的访问。另外,ioctl()函数还需要传入一个基于用户命令的命令码,用来告诉内核其访问行为,相关命令码定义在include/linux/sockios.h,如下所示:
Figure BDA0001889218510000091
内核中,对上述命令码的处理逻辑由/drivers/net/phy/phy.c定义的phy_mii_ioctl()函数负责执行。
在一些实施例中,phytool工具调用ioctl()函数进入内核后的调用关系如图4所示。系统调用ioctl()函数进入内核,经过虚拟文件系统层的传递后,首先调用到MAC驱动器实例化的net_device_ops函数集中的ndo_do_ioctl函数,该函数的实现很简单,就是直接调用PHY抽象层的phy_mii_ioctl()函数,该函数再根据用户空间传下来的命令码识别访问行为。例如,如果命令码是SIOCGMIIREG,则调用phy_read()函数,如果命令码是SIOCSMIIREG,则调用phy_write()函数,两函数最终会分别调用MDIO总线下的读写函数mdiobus_read()和mdiobus_write(),完成实际的PHY寄存器读写访问。
在一些实施例中,phytool工具支持原生内核下的所有PHY芯片的寄存器读写,但如果MAC的驱动器源码没有合并到内核主线下,那就不能保证驱动器源码一定支持内核的PHY抽象层提供的接口,因为PHY抽象层是作为一个功能辅助添加到内核的,并不是必需。针对这种情况,我们就需要修改MAC的驱动器源码,让其适配PHY抽象层,这样才能使用本专利设计的phytool工具来正确访问PHY寄存器。首先,将PHY抽象层配置进内核,执行菜单配置make menuconfig,添加CONFIG_PHYLIB配置项,其在Makefile中对应“obj-$(CONFIG_PHYLIB)+=libphy.o”,这个配置项的打开,会导致phy.c、phy-c45.c、phy-core.c、phy_device.c、mdio_bus.c、mdio_device.c这几个相关的源文件加入内核编译。然后,修改MACdriver源码,添加对PHY抽象层phy_mii_ioctl()函数的调用。先找到net_device_ops结构体实例,把要实现的xxx_mgmt_ioctl()函数赋值给ndo_do_ioctl成员函数指针。接着对xxx_mgmt_ioctl()函数进行实际封装,函数内部核心工作是接收上层传下来的ioctl请求,解析参数后,调用phy_mii_ioctl()函数并将解析后的参数传递进去,当phy_mii_ioctl()函数执行结束返回时,判断其执行是否有异常,如果没有异常则将获取到的正确数据返回给用户空间,否则返回异常信息给用户空间。以上工作完成之后,重新编译内核,将生成的镜像替换到操作系统中,这样用户空间就可以使用本发明实现的phytool工具访问PHY寄存器了。
在根据本发明的一个实施例中,本发明实现的phytool工具已在实际项目中通过验证,具有可用性,具体使用方法所示如下:
phytool read IFACE/ADDR/REG
phytool write IFACE/ADDR/REG<0-0xffff>
phytool dump IFACE/ADDR[/REG]
其中,
ADDR:=C22|C45
C22:=<0-0x1f>
C45:=<0-0x1f>:<0-0x1f>
REG:=<0-0x1f>
例如,在应用中用户可以输入以下命令行参数:
~#phytool write eth0/0x23/4 0x0de1
~#phytool read eth0/0x23/40x0de1
在技术上可行的情况下,以上针对不同实施例所列举的技术特征可以相互组合,或者改变、添加以及省略等等,从而形成本发明范围内的另外实施例。
从上述实施例可以看出,本发明实施例提供的一种PHY寄存器读写方法和装置能够解决PHY芯片的寄存器无法通过/dev/mem读取的问题,并且还适用于一个MDIO总线下挂接多个PHY芯片的硬件设计,从而实现对任意PHY寄存器的读写操作,而且针对寄存器个数超出32的复杂PHY芯片,能够实现对扩展寄存器读写功能的支持。
基于上述目的,本发明实施例的第二个方面,提出了一种PHY寄存器读写装置的一个实施例。
所述PHY寄存器读写装置包括至少一个处理器和存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行上述任意一种方法。
如图5所示,为本发明提供的PHY寄存器读写装置的一个实施例的硬件结构示意图。
以如图5为例,在该装置中包括处理器501以及存储器502,并还可以包括:输入装置503和输出装置504。
处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述PHY寄存器读写方法对应的程序指令/模块。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行各种功能应用以及数据处理,即实现上述方法实施例的PHY寄存器读写方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据PHY寄存器读写装置的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置503可接收输入的数字或字符信息,以及产生与PHY寄存器读写装置的用户设置以及功能控制有关的键信号输入。输出装置504可包括显示屏等显示设备。
所述一个或者多个PHY寄存器读写方法对应的程序指令/模块存储在所述存储器502中,当被所述处理器501执行时,执行上述任意方法实施例中的PHY寄存器读写方法。
所述执行所述PHY寄存器读写装置的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
此外,典型地,本发明实施例公开所述的装置、设备等可为各种电子终端设备,例如手机、个人数字助理(PDA)、平板电脑(PAD)、智能电视等,也可以是大型终端设备,如服务器等,因此本发明实施例公开的保护范围不应限定为某种特定类型的装置、设备。本发明实施例公开所述的客户端可以是以电子硬件、计算机软件或两者的组合形式应用于上述任意一种电子终端设备中。
此外,根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。
此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
此外,应该明白的是,本文所述的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
在一个或多个示例性设计中,所述功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、DSL或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器、磁盘或光盘等。
上述实施例是实施方式的可能示例,并且仅仅为了清楚理解本发明的原理而提出。所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些示例;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (9)

1.一种PHY寄存器读写方法,其特征在于,包括以下步骤:
绑定Applet操作函数集以定义辅助函数;
解析用户输入的第一命令行参数,以获知用户的访问行为;
根据所述访问行为,调用相应的第一处理函数;
通过所述第一处理函数调用所述辅助函数来解析用户输入的第二命令行参数以获取全部物理访问途径,并将解析后的数据保存到结构体变量中;以及
调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作,
其中,所述绑定Applet操作函数集以定义辅助函数包括:将所述Applet操作函数集绑定给本地定义的Applet结构体变量;和
通过所述第一处理函数调用所述辅助函数来解析第二命令行参数以获取全部物理访问途径包括:将所述Applet结构体变量以参数形式传递给所述第一处理函数。
2.根据权利要求1所述的方法,其特征在于,所述第一处理函数包括第一读操作函数、第一写操作函数以及第一批量打印操作函数,所述第二处理函数包括第二读操作函数、第二写操作函数以及第二批量打印操作函数。
3.根据权利要求1所述的方法,其特征在于,用户输入的所述第二命令行参数包括PHY名称、符合IEEE 802.3条款22或45格式的PHY芯片地址、具体要访问的PHY寄存器地址。
4.根据权利要求1所述的方法,其特征在于,所述调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作包括:
调用运行函数,所述运行函数创建一个无障碍的面对消息的套接字,并解析传入的所述结构体变量,将其初始化到本地定义的另一个结构体变量中。
5.根据权利要求4所述的方法,其特征在于,所述调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作还包括:
将所述另一个结构体变量作为输入参数调用驱动程序设备控制接口函数,所述驱动程序设备控制接口函数根据基于用户输入系统自动分配的命令码来通过所述第二处理函数发起面向PHY寄存器的访问。
6.根据权利要求5所述的方法,其特征在于,所述调用与第一处理函数对应的第二处理函数并将所述结构体变量作为参数传入所述第二处理函数,通过所述第二处理函数根据所述参数找到相应的PHY寄存器以进行读写操作还包括:
所述第二处理函数最终调用MDIO总线下的相应的操作函数,来完成对PHY寄存器的实际操作。
7.根据权利要求2所述的方法,其特征在于,所述批量打印操作函数用于批量打印多组寄存器的值,所述批量打印操作函数内部通过一个循环逻辑多次调用所述读操作函数实现所述多组寄存器的值的打印。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:在MAC芯片的驱动器没有合并到内核主线的情况下,添加MAC驱动器对PHY抽象层的支撑,包括以下步骤:
将PHY抽象层配置进内核;以及
修改MAC驱动器源码,添加对所述PHY抽象层的驱动程序设备控制接口函数的调用。
9.一种PHY寄存器读写装置,其特征在于,包括:
至少一个处理器;和
存储器,所述存储器存储有处理器可运行的程序代码,所述程序代码在被处理器运行时实施如权利要求1-8中任一项所述的方法。
CN201811463740.3A 2018-12-03 2018-12-03 一种phy寄存器读写方法和装置 Active CN109614147B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811463740.3A CN109614147B (zh) 2018-12-03 2018-12-03 一种phy寄存器读写方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811463740.3A CN109614147B (zh) 2018-12-03 2018-12-03 一种phy寄存器读写方法和装置

Publications (2)

Publication Number Publication Date
CN109614147A CN109614147A (zh) 2019-04-12
CN109614147B true CN109614147B (zh) 2022-02-22

Family

ID=66006108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811463740.3A Active CN109614147B (zh) 2018-12-03 2018-12-03 一种phy寄存器读写方法和装置

Country Status (1)

Country Link
CN (1) CN109614147B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111897632B (zh) * 2019-05-05 2023-10-20 兆易创新科技集团股份有限公司 一种中断处理方法、装置、电子设备及存储介质
CN111143820B (zh) * 2019-12-20 2022-08-02 苏州浪潮智能科技有限公司 一种光模块访问方法、设备以及存储介质
CN111338997B (zh) * 2020-03-05 2021-07-20 苏州浪潮智能科技有限公司 一种arm服务器bios支持tcm通信的方法、装置、设备和介质
CN112464303B (zh) * 2020-11-27 2022-07-12 苏州浪潮智能科技有限公司 一种过滤驱动实现方法、系统、设备以及介质
CN114024871B (zh) * 2022-01-04 2022-03-22 苏州浪潮智能科技有限公司 一种芯片验证方法、系统、计算机设备及可读存储介质
CN115378921B (zh) * 2022-08-05 2023-07-07 科东(广州)软件科技有限公司 基于raw的网络构架及数据传输方法
CN117313431B (zh) * 2023-11-28 2024-01-30 常州楠菲微电子有限公司 一种mdio接口验证的激励封装方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107409125A (zh) * 2015-02-24 2017-11-28 高通股份有限公司 用于服务‑用户平面方法的使用网络令牌的高效策略实施
CN108519947A (zh) * 2018-04-02 2018-09-11 郑州云海信息技术有限公司 一种Linux下读写寄存器的方法及工具

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US8929398B2 (en) * 2011-06-20 2015-01-06 Texas Instruments Incorporated Data frame for PLC having destination address in the PHY header

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107409125A (zh) * 2015-02-24 2017-11-28 高通股份有限公司 用于服务‑用户平面方法的使用网络令牌的高效策略实施
CN108519947A (zh) * 2018-04-02 2018-09-11 郑州云海信息技术有限公司 一种Linux下读写寄存器的方法及工具

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PCI总线多功能扩展卡IP核的设计与实现;徐继彬;《中国优秀硕士学位论文全文数据库(电子期刊)》;20180315(第3期);I137-69页 *
Serial interface engine asic with usb physical transceiver based on fpga development board;Guo-Ming Sung等;《 2017 IEEE International Conference on Systems, Man, and Cybernetics (SMC)》;IEEE;20171201;第410-413页 *

Also Published As

Publication number Publication date
CN109614147A (zh) 2019-04-12

Similar Documents

Publication Publication Date Title
CN109614147B (zh) 一种phy寄存器读写方法和装置
WO2020228449A1 (zh) 一种节点选择方法和装置
US20230300030A1 (en) K8s-based service deployment method and apparatus, device, and medium
CN109656844B (zh) 一种AT24xx EEPROM驱动方法和装置
CN110187986B (zh) 一种命令管理方法、系统、装置及计算机可读存储介质
CN109492181A (zh) 页面跳转方法、装置、计算机设备和存储介质
US10499311B2 (en) Method and apparatus for implementing network sharing
CN113946602A (zh) 数据查找方法、装置、设备和介质
CN109343983B (zh) 功能模块间的信息交互方法、装置、设备及存储介质
US10579366B2 (en) Data upgrade framework for distributed systems
CN114997101A (zh) 基于芯片验证系统的信号控制方法、系统、介质及设备
TWI828306B (zh) 一種電子設備
US10547334B2 (en) Method and terminal device for executing radio application
CN109343970B (zh) 基于应用程序的操作方法、装置、电子设备及计算机介质
WO2022217759A1 (zh) 一种eSIM码号管理方法及装置
CN109388388B (zh) 功能模块间的信息交互方法、装置、设备及存储介质
CN109298852B (zh) 简化虚拟现实应用程序开发的方法及可读存储介质
CN114979303A (zh) 网络数据包的服务质量处理方法、装置、设备和可读介质
CN104570967B (zh) 基于Android系统的远程控制方法及系统
CN111176628B (zh) 组件化架构下的前端接入方法、存储介质
WO2021097683A1 (zh) 安卓系统启动的方法、装置、设备及存储介质
CN105550050A (zh) 硬件通信的方法及装置
EP1977338B1 (en) External configuration of processing content for script
CN115391396A (zh) 基于接口的查询方法、装置以及存储介质
CN110333914B (zh) 一种用于执行目标操作的方法与设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant