edustudy 发表于 2024-3-29 10:37

如何在LINUX中获取以太网PHY寄存器数据

可以用一下两种方法来获取 Linux 中的以太网 PHY 寄存器数据
方法 1: 使用ETHTOOL
如果 ethtool 在内核中不可用,则通过配置用户空间package,增加ethtool工具并重新编译;
安装该工具后,使用以下命令配置和显示以太网接口参数的
ethtooldevname
ethtool -s eth0 speed 100 duplex full autoneg off
方法 2: 使用MDIOTOOL
如果 Ethtool 不起作用,也则可以使用构建的 mdio-tool 单独读取数据表中的寄存器。 mdio-tool的安装、编译和使用说明如下:
1.        访问 https://github.com/PieVo/mdio-tool
2.        创建一个目录来放置这些文件
3.        检查ubuntu平台是否有arm-linux-gnueabihf-gcc:
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
4.        运行命令
arm-linux-gnueabihf-gcc mdio-tool.c -o mdio-tool
安装该工具后,使用以下命令读取/写入内部 PHY 寄存器
mdio-tool
./mdio-tool w eth0 0x10 0x0
./mdio-tool r eth0 0x0

dongnanxibei 发表于 2024-3-29 19:59

这个方法真棒,可以读取底层数据。

ex7s4 发表于 2024-5-16 16:01

在Linux中,您可以使用ethtool工具来获取以太网PHY寄存器数据

cen9ce 发表于 2024-5-16 17:09

ethtool是一个用于配置和显示网络接口参数的命令行工具,可以用于获取以太网PHY寄存器的数据

y1n9an 发表于 2024-5-16 18:12

通过ethtool工具,您可以方便地在Linux中获取以太网PHY寄存器的数据

tax2r6c 发表于 2024-5-16 20:17

感觉不错,这种逻辑来操作的话,直接能读到底层数据

su1yirg 发表于 2024-5-16 21:25

话说,这种方法2一般是比方法1还OK么

b5z1giu 发表于 2024-5-17 08:23

还有别的方式直接获取PHY寄存器吗?

t1ngus4 发表于 2024-5-17 10:11

一般不都是可以直接读取吗,但是我们都是用MCU来操作,你是linux可能不一样

d1ng2x 发表于 2024-5-17 11:20

感觉第二种虽然麻烦,但是更靠谱一些哦

bmbm546 发表于 2025-7-24 16:11

这个方法挺好的,挺方便读取底层寄存器

xixi2017 发表于 2025-7-26 11:54

底层代码要支持才行,否则无法实现吧

灰色与青 发表于 2025-9-22 17:16

在 Linux 中获取以太网 PHY 寄存器数据:先通过 ethtool 查看网卡对应的 PHY 地址,如 ethtool -i eth0;再用 phytool 工具,如 phytool read eth0 0x00 读取寄存器 0x00 的值;或直接操作 /sys/class/mdio_bus 下的设备文件,需 root 权限,具体路径依硬件而定。
页: [1]
查看完整版本: 如何在LINUX中获取以太网PHY寄存器数据