打印
[学习资料]

使用 mdio-tool 访问 EVB-LAN8670-USB 设备的 MDIO 寄存器

[复制链接]
111|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
米多0036|  楼主 | 2025-3-24 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AN, IO, LAN, USB, ev
EVB-LAN8670-USB 是一款基于 LAN8670 低速以太网物理层(10BASE-T1S)的评估板。要在 Linux 下访问其 MDIO(Management Data Input/Output) 寄存器,我们可以使用 mdio-tool 命令行工具。

1. 安装 mdio-tool
如果 mdio-tool 未安装,可以使用以下方法获取:

bash
复制
编辑
sudo apt-get install mdio-tool  # Ubuntu/Debian
sudo yum install mdio-tool      # RHEL/CentOS
或者手动编译:

bash
复制
编辑
git clone https://github.com/torvalds/linux.git
cd linux/tools/net/mdio-tool
make
sudo make install
2. 识别 MDIO 设备
在修改寄存器前,先列出系统中可用的 MDIO 设备:

bash
复制
编辑
mdio-tool list
示例输出:

yaml
复制
编辑
MDIO bus 0:
  Device 0: LAN8670
  Device 1: LAN8670
这里显示了 MDIO 总线 0 上的两个 LAN8670 设备,它们的 默认地址(Node ID) 都是 0。

3. 读取 LAN8670 的寄存器
mdio-tool read 命令用于读取 MDIO 设备的寄存器。

3.1 读取单个寄存器
格式:

bash
复制
编辑
mdio-tool read <Node ID> <寄存器地址>
示例:

bash
复制
编辑
mdio-tool read 0 0x00  # 读取 Node ID 0 的寄存器 0x00
常用寄存器地址:

0x00 – 基本控制寄存器(BMCR)

0x01 – 基本状态寄存器(BMSR)

0x1F – Node ID 配置寄存器

4. 写入 LAN8670 的寄存器
mdio-tool write 命令用于写入 MDIO 设备的寄存器。

4.1 写入单个寄存器
格式:

bash
复制
编辑
mdio-tool write <Node ID> <寄存器地址> <值>
示例:

bash
复制
编辑
mdio-tool write 0 0x1F 0x1  # 将 Node ID 0 修改为 1
4.2 修改多个寄存器
假设需要:

启用自动协商(Auto-Negotiation)

设置 Node ID

复位 PHY

执行:

bash
复制
编辑
mdio-tool write 0 0x00 0x1200  # 启用 Auto-Negotiation
mdio-tool write 0 0x1F 0x1     # 修改 Node ID 为 1
mdio-tool write 0 0x00 0x8000  # 复位 PHY
5. 验证配置
修改后,使用 read 命令检查是否生效:

bash
复制
编辑
mdio-tool read 1 0x1F  # 确保 Node ID 已更新为 1
如果修改无效,可尝试 重新上电 设备或使用 reset 命令:

bash
复制
编辑
mdio-tool reset


使用特权

评论回复
沙发
米多0036|  楼主 | 2025-3-24 11:46 | 只看该作者
结论
mdio-tool 可用于 读取和修改 LAN8670 的 MDIO 寄存器。

通过 mdio-tool list 确定设备的 Node ID。

使用 mdio-tool read 读取寄存器值,使用 mdio-tool write 修改寄存器值。

修改 Node ID 以避免多个设备冲突,并检查更改是否生效。

这样,就可以在 Linux 下灵活管理 EVB-LAN8670-USB 设备的 MDIO 寄存器了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

1426

帖子

0

粉丝