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.

[参考译文] TM4C129ENCPDT:以太网无法重新启动

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/997811/tm4c129encpdt-ethernet-failing-to-re-start

器件型号:TM4C129ENCPDT

您好!

从硬复位开始、以太网在引导加载程序中正常启动、然后由引导加载程序将其关闭。  然后、应用程序使用引导加载程序中使用的相同代码重新启用和重置以太网;此时启动不可靠。  

其他:

EMACTxDisable (EMAC0_BASE);
EMACRxDisable (EMAC0_BASE);
SysCtlPeripheralDisable (SYSCTL_Periph_EMAC0);
SysCtlPeripheralDisable (SYSCTL_Periph_EPHY0);

是否需要调用其他任何函数来将其关闭?

谢谢、

HL

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

    嗨、Hairy、

     是否是导致问题的关机、还是在以太网关机后重新启用?

    我不确定下面的勘误表是否会影响您的工作。  

    重新启用以太网后、您可以执行以下操作:

    向 FPFOFF 位写入1以禁用预取缓冲器
    2.初始化 EMAC 和 PHY
    3.向 FPFON 位写入1以启用预取缓冲器

      

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

    您好、Charles、

    我之所以暂停关闭过程、是因为引导加载程序在闪存中运行、但应用程序从 RAM 中运行。 很抱歉、我应该提到这一点、但由于某种原因、当我首次发布问题时、我在访问论坛时遇到问题。 当我回来的时候,已经很晚了,而且是漫长的一天。

    建议的修复 方法是不在 引导加载程序中初始化以太网。 这一情况已经得到实施,但情况更糟。 似乎是导致问题的执行速度、因为将延迟添加到 TIvaware init 例程中似乎可以解决问题。 您能否提供有关这种情况的原因的任何见解?

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

    嗨、Hairy、

    [引用 userid="478240" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/997811/tm4c129encpdt-ethernet-failing-to-re-start/3686620 #3686620"]似乎是执行速度导致了问题、因为在 TIvAware init 例程中添加了延迟似乎可以解决问题。 [/报价]

    您能否详细说明您为解决该问题而添加的延迟是什么以及在何处。 我想与社区分享、以防将来其他人面临相同的问题(迄今为止我没有听到除您以外的其他人)。 我也不清楚为什么执行速度会导致这个问题、除非它与我在上次答复中提到的勘误表相关、并建议了一个变通办法。  

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

    您好、Charles、

    搜索 DelayMs()。 这绝不是正确的、但它似乎已经解决了我们的问题(目前是吗?)。 它从 RAM 运行以及提供的额外速度可能会导致问题、从而需要延迟?   

    e2e.ti.com/.../emac.c

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

    嗨、Hairy、

     我真的不明白为什么在多次写入 MAC 寄存器后需要 delayMs()。 也许我不理解您所面临的问题。 请您再次详细说明以下陈述。  

    [引用 userid="478240" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/997811/tm4c129encpdt-ethernet-failing-to-re-start ]然后、应用程序使用引导加载程序中使用的相同代码重新启用并重置以太网;此时启动不可靠。  [/报价]

    当您使用 TivaWare boot_emac_flash (引导加载程序)和 boot_demo_emac_flash (应用程序)时、您是否遇到了与现在相同的问题?

    如果您看一下 boot_emac_flash bootloader、我认为它不会关闭以太网。 引导加载程序将配置 EMAC、并确定它是否会跳转到应用程序、或者在没有应用程序映像时开始引导加载。 请查看 bl_startup_css.s 文件。 无论应用程序是否已存在、都将配置 EMAC、并且就我所能知、没有关闭 EMAC。 假设应用程序已存在、引导加载程序将跳转到要启动的应用程序。 一旦进入应用程序(以 boot_demo_emac_flash 为例),它只需调用 LwIPInit()来启动 EMAC 配置并启动堆栈。 我想说的是、EMAC 没有关闭。 是否有任何原因需要关闭引导加载程序中的 EMAC? 如果您没有在引导加载程序中关闭 EMAC、会怎么样?

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

    您好、Charles、

    否、我们没有使用 TivaWare 引导加载程序示例、因为我们已经有一个实现(尽管针对已移植到 TM4C129的不同平台)。 在正常运行期间关闭以太网并不少见、在从引导加载程序转换到应用程序时也不例外。 然后、该应用程序完全控制已启用的外设、因为它负责将它们置于已知状态。

    关于上述勘误表、是否提供了覆盖执行速度或副作用的工作、因为这不清楚?

    谢谢  

    HL

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

    嗨、Hairy、

     如果它是您自己的引导加载程序、那么我们无法真正支持它、因为我们对此一无所知。 但如果您已经证明了 delayMS(),您添加的解决方案将解决不稳定的问题,那么我建议您继续使用该解决方案。  

     就勘误表而言、我认为它在某种程度上类似于您的问题描述。 您是否会在引导加载程序中尝试一下、在初始化以太网之前、首先关闭闪存预取缓冲器。 它会产生什么影响吗?

     还想放弃一个抬头。 我将在本周剩余时间内不能就职,也无法对论坛作出答复。  

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

    您好、Charles、

    当然、很感谢您在我们的引导加载程序方面提供帮助。 我们已尝试使用勘误表中的解决方法、它没有任何影响。

    谢谢、

    HL