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
|