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.

[参考译文] AM2434:CPSW 以太网 ClockP 问题

Guru**** 2815875 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1606412/am2434-cpsw-ethernet-clockp-problem

器件型号: AM2434
主题: SysConfig 中讨论的其他器件

您好、

我正在尝试使 CPSW 运行。 我找到了一个示例、它实际上可以正常工作、但出于某种原因、它使用 ClockP 模块、如果我移除 ClockP_init、就会卡在初始化中。

我想从我的项目中移除 ClockP 模块、因为我已经在计时中使用了另一个 GPTIMER。 我可以让以太网在不需要 ClockP 模块的情况下工作吗? 我发现无法直接通过 SysConfig 完成。 那么,我需要在代码序列中更改什么?

为什么以太网模块及其周围的模块(如 I2C 和 UDMA)需要 ClockP?

提前感谢您。

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

    您好 Hatem、

    ClockP 模块用于为状态机和轮询机制计时、以保持关键任务运行。 如果没有 ClockP 模块、所有这些任务都必须使用替代的计时机制进行更新、以保持系统任务运行。 因此,除非特别需要从您的应用程序中完全删除 ClockP,我们建议您继续使用它。  

    如果您需要完全消除 ClockP 模块、请提供有关此要求背景的更多信息、以便我们更好地理解该要求、并在可能的情况下建议任何替代方案。

    谢谢。此致、
    Teja。

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

    我已经有一个运行调度器的 GPTIMER。 当 ClockP 启动时出现问题、存在冲突、导致我的系统因未知原因而失败。 经过一些调试后、我发现问题就在我使用 ClockP_init 函数时出现、如果没有它、以太网初始化肯定会卡住。

    因此、如果您要求计时器采用计时机制、它已经存在、但它根本不是 ClockP 模块。
    我现在只需要了解 CPSW 的哪些部分和 LwIP 使用的是时序、他们为什么需要(就以太网而言)、以便我可以用计时器替换它。

    请告诉我是否需要更多要求。
    提前感谢你 Hearts

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

    更新:

    我现在认为以太网需要时钟分为两部分:初始化和轮询作为接收任务。
    我达到了将 ClockP 留在初始化阶段的地步、并破坏 ClockP 并禁用其中断。
    这对我来说很好、以防我从板向外部发送数据包。

    我使用了以下行来做到这一点:

      ClockP_stop (&pollLinkClkObj);

      ClockP_析 构 (&pollLinkClkObj);

      hwip_disableInt (160);// 160 表示计时器 8



    但当然、它仍然需要轮询任务才能接收。 因此、目前我仍然无法从外部接收数据包到电路板上。
    因此、我现在需要知道我需要将哪个回调用作定期任务才能正确接收。

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

    您好、  

    如果使用任何第 2 层示例进行测试、则 Rx 和 Tx 数据包处理将通过中断完成。 因此、您可以将其用于验证用例。 除了轮询任务外、还有一个 PHY 状态处理程序任务、用于管理 PHY 状态和链路状态。 这也是一项关键任务、没有它、PHY 将无法建立链路。 您还应该处理此信息以启用数据包传输。  

    但是、如果您的用例只是要启用 GPTIMER 和 ClockP、那么我将咨询相应的专家、以确定是否可以在不移除 ClockP 模块的情况下完成该操作。 如果可能、您可以继续使用以太网驱动程序而不会出现任何问题。  

    此致、
    Teja。

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

    实际上、我想消除 ClockP、不仅仅让它能够与 GPTIMER 搭配使用。 总之、我找到了一个解决方案来解决我的问题、即在初始化后使用我在前面的注释中提到的 API 禁用 ClockP。

    这样我们就完成了处理接收和发送事件的轮询任务。 我发现轮询任务需要 TX 或 RX 的启用器。 在定期出现的情况下找到该启用。 因此、我在自己的轮询任务中使用以下两个 API 手动启用了 RX 和 TX:

    LWIPIF_LWIP_rxPktHandler (g_pNetif[ENET_SYSCFG_DEFAULT_NETIF_IDX]);
    LWIPIF_LWIP_txPktHandler (g_pNetif[ENET_SYSCFG_DEFAULT_NETIF_IDX]);

    因此、感谢您的建议、它现在可以在没有 ClockP 模块的情况下正常工作。