This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM5726:AM5726

Guru**** 2553800 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/947127/am5726-am5726

器件型号:AM5726

我们系统中的 EXT_EN 位设置为0 (通过从 SL_MACCONTROL 寄存器读取原始存储器来检查该位、值为0x000000A1)。

 在您指定的路径中找不到 EMAC_RX_ISR_PER_msec_default。 我们使用的是 RTLinux。

无论如何、我希望代表 GMAC 端口启用自动池将是 MDIO 控制寄存器 MDIO_CONTROL 中的位。

所以... 是否可以关闭自动池,但保持用户的 SMI 访问?   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅问题

    e2e.ti.com/.../921657

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ioan、

    在另一篇 e2e 文章中、我们使用 PDK 示例进行了寻址。 对于 Linux、您能否尝试利用"固定链路"配置来删除自动协商步骤?

    请参阅 https://e2e.ti.com/support/processors/f/791/p/883618/3276983中的一些详细信息和指针

    我将检查在 AM57上禁用自动轮询是否有任何特定的指导。 根据 http://e2e.ti.com/support/processors/f/791/t/461714、 没有。

    此致、

    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dave、

    我想这一实现方案在几代 TI CPU 之间没有变化、因此无法禁用自动池并仍然使用 MDIO 来发出用户驱动的操作。

    最好记录这一点、并在 TRMS 中为自动和用户 MDIO 事务提供详细的事务波形。

    MDIO (GMAC 和 PRU)软件是否在 PRU 中"实现"? 是否可以升级?

    MDC (GMAC 和 PRU)的最大时钟频率为2.5MHz。 与其他器件(PHYS/switches/CPU)相比,这一数值非常低,并且在需要访问大量寄存器时会对用户软件响应产生影响(例如... 从具有16/24端口交换机的中读取所有32位统计计数器)。 有什么需要如此缓慢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ioan、

    GMAC 和 PRU-ICSS 的 MDIO 模块在硬件中实现。

    我在 AM57中看不到禁用自动轮询的机制。 在 Linux 下有位 bang 驱动程序可供考虑、但这些驱动程序不是由 TI 开发或测试的。

    此致、

    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MDC (GMAC 和 PRU)为2.5MHz。 与其它具有 MDIO 接口(PHYS/switches/CPU)的器件相比,这种情况非常慢,并且在需要访问大量寄存器时会对用户软件响应产生影响(例如... 从具有16/24端口交换机的中读取所有32位统计计数器)。 有什么需要如此缓慢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ioan、

    MDIO 硬件模块并不专门限于2.5MHz 运行频率、尽管我们的表征或测试不超过数据表中指定的值。 数据表值与 IEEE 标准第22条和第45条中定义的值匹配、其中最大 MDIO 速度为2.5MHz。 请参阅22.2.2.11 MDC (管理数据时钟)。

    此致、

    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    使用示波器、无论前导码位的值如何(寄存器 MDIO_CONTROL)、我都会看到32个空闲时钟。 在极少数情况下、当我使用 MDIO_useraccess 寄存器触发用户访问时、我可以看到前导码仅针对该事务被抑制。

    您能否详细描述有关前导码和前导码抑制的预期行为? 它适用于哪些交易?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ioan、

    设置启用时、MDIO 将初始化链接、如果您切换启用、则每次设置它时都会发出32周期初始化序列。
    如果不切换使能、32位前导码将根据前导码位被抑制。

    此致、

    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面是按照建议更改 MDIO 位的一系列命令、但我始终看到 MDIO 事务连续起始位之间有65个时钟(与前导码状态无关)。 前导码=1时不应该是33个时钟,前导码=0时不应该是65个时钟?

    BIST:/root# memtool md -l 0x48485004
    48485004:81100031 00000003 00000002 00000003 1..........
    48485014:00000000 00000000 00000000 00000001……
    48485024:00000000 00000000 00000000 00000000…
    48485034:00000000 00000000 00000000 00000000…
    48485044:00000000 00000000 00000000 00000000…
    48485054:00000000 00000000 00000000 00000000…
    48485064:00000000 00000000 00000000 00000000…
    48485074:00000000 00000000 00000000 6200016d M.b.
    48485084:00000000 00000000 00000000 00000000…
    48485094:00000000 00000000 00000000 00000000…
    484850a4:00000000 00000000 00000000 00000000…
    484850b4:00000000 00000000 00000000 00000000…
    484850c4:00000000 00000000 00000000 00000000…
    484850d4:00000000 00000000 00000000 00000000…
    484850e4:00000000 00000000 00000000 00000000…
    484850f4:00000000 00000000 00000000 00000000…
    BIST:/root# memtool mw -l 0x48485004 0x41100031

    BIST:/root# memtool md -l 0x48485004

    48485004:41100031 00000003 00000002 00000003 1..A.
    48485014:00000000 00000000 00000000 00000001……
    48485024:00000000 00000000 00000000 00000000…
    48485034:00000000 00000000 00000000 00000000…
    48485044:00000000 00000000 00000000 00000000…
    48485054:00000000 00000000 00000000 00000000…
    48485064:00000000 00000000 00000000 00000000…
    48485074:00000000 00000000 00000000 6200016d M.b.
    48485084:00000000 00000000 00000000 00000000…
    48485094:00000000 00000000 00000000 00000000…
    484850a4:00000000 00000000 00000000 00000000…
    484850b4:00000000 00000000 00000000 00000000…
    484850c4:00000000 00000000 00000000 00000000…
    484850d4:00000000 00000000 00000000 00000000…
    484850e4:00000000 00000000 00000000 00000000…
    484850f4:00000000 00000000 00000000 00000000…

    (此时、我用示波器检查并在 MDIO 硬件启动的连续 MDIO 读取之间看到65个时钟、期望33个时钟)

    BIST:/root# memtool mw -l 0x48485004 0x01100031
    BIST:/root# memtool md -l 0x48485004
    48485004:81100031 00000003 00000002 00000003 1..........
    48485014:00000000 00000000 00000000 00000001……
    48485024:00000000 00000000 00000000 00000000…
    48485034:00000000 00000000 00000000 00000000…
    48485044:00000000 00000000 00000000 00000000…
    48485054:00000000 00000000 00000000 00000000…
    48485064:00000000 00000000 00000000 00000000…
    48485074:00000000 00000000 00000000 6200016d M.b.
    48485084:00000000 00000000 00000000 00000000…
    48485094:00000000 00000000 00000000 00000000…
    484850a4:00000000 00000000 00000000 00000000…
    484850b4:00000000 00000000 00000000 00000000…
    484850c4:00000000 00000000 00000000 00000000…
    484850d4:00000000 00000000 00000000 00000000…
    484850e4:00000000 00000000 00000000 00000000…
    484850f4:00000000 00000000 00000000 00000000…
    BIST:/root# memtool mw -l 0x48485004 0x41000031
    BIST:/root# memtool md -l 0x48485004
    48485004:41000031 00000003 00000002 00000003 1..A.
    48485014:00000000 00000000 00000000 00000001……
    48485024:00000000 00000000 00000000 00000000…
    48485034:00000000 00000000 00000000 00000000…
    48485044:00000000 00000000 00000000 00000000…
    48485054:00000000 00000000 00000000 00000000…
    48485064:00000000 00000000 00000000 00000000…
    48485074:00000000 00000000 00000000 6200016d M.b.
    48485084:00000000 00000000 00000000 00000000…
    48485094:00000000 00000000 00000000 00000000…
    484850a4:00000000 00000000 00000000 00000000…
    484850b4:00000000 00000000 00000000 00000000…
    484850c4:00000000 00000000 00000000 00000000…
    484850d4:00000000 00000000 00000000 00000000…
    484850e4:00000000 00000000 00000000 00000000…
    484850f4:00000000 00000000 00000000 00000000…
    BIST:/root#

    (此时、我用示波器检查并在 MDIO 硬件发起的连续 MDIO 读取之间看到65个时钟)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ioan、

    PREAMBLE 位启用智能前导码功能。 但 PHY 可以指定前导码要求、即 PHY 状态寄存器(1)的位6可以要求完整的前导码。

    如果智能前导码已设置,且所有 PHY 的位6均为‘1’,则前导码将被抑制。

    但是、如果 PHY Ack 发生变化、即具有前导码的 PHY ACK、并且不响应下一个请求、则会启用前导码、直到轮询所有 PHY。
    即每次 PHY 更改其活动状态时、将为轮询周期启用前导码。

    前导码自动启用
    •任何 PHY 的抑制状态为.帧 头(1.6)=0
    o 如果其中一个已轮询 PHY 的 STATUS.PREAMBLE (1.6)=0、则不会抑制前导码。
    •轮询寄存器为‘0’
    o 如果轮询寄存器中没有任何 PHY、则将始终发送预 ambles。
    •启用为‘0’
    o 如果禁用 MDIO、则前32个轮询周期将启用前导码。
    •任何 PHY 活动状态都将更改。
    o 也就是说、如果 PHY 占用一个轮询周期、然后不会再占用下一个轮询周期、则会为下一个轮询周期发送前导码。

    我们确实发现 、您必须轮询 PHY 31才能使短前导码有效。 如果不轮询 PHY 31、MDIO 逻辑将从不评估 USE_PREAMBLE 信号。 但是:

    1) 1)     如果 PHY 不支持抑制的前导码或

    2)     2)每当 PHY 更改其活动状态时、即带有前导码的栈和不在抑制的前导码上的栈

    作为 IEEE 规范第22条状态寄存器的参考:

    1.6 MF 前导码抑制

    1 = PHY 将接受前导码被抑制的管理帧

    0 = PHY 不接受前导码抑制 RO 的管理帧

    此致、

    Dave