【问题标题】:Powering down an ethernet PHY关闭以太网 PHY
【发布时间】:2011-02-04 05:19:45
【问题描述】:

我在 OMAP ARM (OMAP-L138) 上运行嵌入式 linux。其上的以太网控制器连接到外部 PHY 芯片。一切正常,除了在某些情况下,我想节省电源并关闭 PHY(但不暂停整个系统)。

我知道 Linux 可以轻松挂起 PHY,因为当我将整个系统置于挂起状态时,PHY 确实会掉电。

但是,我想做的是通过用户空间应用程序打开和关闭 PHY,按照我的意愿打开和关闭它。

我如何实现这一目标?我是 linux 的新手,我可以用 C 编写用户空间应用程序来打开设备驱动程序并访问它们。

PHY 通过 MII 接口连接,但我在 /dev/ 下没有看到 mii? (即为了访问 i2c 驱动程序,我一直在做 fd = open("/dev/i2c-0", O_RDWR);) mii 驱动程序保存在哪里?我怎样才能访问它?如果我能通过mii驱动读写几个寄存器到PHY芯片,我想应该很容易实现。

谢谢。

【问题讨论】:

  • 我没有具体的答案,但 ethtool 可能会做你想做的事(虽然我找不到合适的选项。)据我所知,这取决于设备驱动程序是否它在暂停到 RAM 中断电。你可能会很幸运,发现有一个 ioctl 可以做你想做的事,但同样,这取决于设备驱动程序。

标签: embedded-linux


【解决方案1】:

在运行 PHY 的任何驱动程序中查找源代码(通过查看活动内核配置、查看内核消息、猜测或 grepping)并通读它。

看看它是否支持这个。看看它是否支持告诉它的方法。如果是这样,请学习使用它。

如果不是,并且您从数据表中知道硬件支持它,请添加一种机制,作为现有电源控制方案的一部分,或者只是自行编写。 sysfs 中的一个节点似乎是当前流行的通用接口,用于告诉内核简单的开/关选项设置,在 /proc 中以稍旧的方式进行。

这也是有一个(或几个)“正确”解决方案可以让您的代码上传到上游的领域之一,以及许多更具争议性的解决方案,您可能会为自己的目的而工作很快,特别是如果他们使用您已经熟悉的机制。这是基于您工作的目的和未来的判断。

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2015-08-15
    • 2018-06-10
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多