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.

[参考译文] TM4C1294NCPDT:BOOTP 固件更新后以太网不能正常工作

Guru**** 2609925 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1166515/tm4c1294ncpdt-ethernet-doesn-t-work-after-bootp-firmware-update

器件型号:TM4C1294NCPDT

我具有以下设置:  CCS 6.1.2、TIRTOS 2.16.0.08、编译器5.2.7、 XDC 3.31.1333、 TM4C1294NCPDT

我有一个项目正在做我需要的事情、并且在一个例外情况下工作。

我使用工具链中内置的网络堆栈、电路板可以 ping 通、使用插座等  

*如果我 从关闭电源启动,一切都按预期工作,它会 ping,并且插槽工作等等

*如果我使用 ROM_SysCtlReset()进行软复位 ,一切都按预期工作,则 ping 和套接字工作等等

* 如果我连接 JTAG 探头探头并使用调试器 、则一切都按预期工作、它会执行 ping 操作、并且套接字也会工作

*如果我使用 ROM_UpdateEMAC()跳回引导代码并使用 BOOTP 执行 DFU / fimware 更新,则新固件会运行,但主板不会 ping,并且插座 不起作用。  如果我重置主板,网络 将再次工作,因此我知道使用 BOOTP 放入闪存的固件是有效的固件。  

我尝试使用  SysCtlResetCauseGet ()来获得复位原因,我注意到在使用 ROM_UpdateEMAC ()和 BOOTP 后,这是唯一没有设置复位原因位的情况,所以如果 没有设置原因位,只需尝试一些东西, 我调用函数  ROM_SysCtlReset(),之后以太网始终工作。  我认为这不是任何我会长期坚持的解决方案、但这 是一个有趣的实验。

真正的问题 是、导致这种情况的原因是什么?  我想引导代码/BOOTP 正在更改 CPU 中的某些默认设置,而我的代码未设置,这就是需要重置 CPU 以使网络正常工作的原因。   

有什么建议和 遗漏了什么

谢谢、

道格

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

    Doug、您好!

    查看提供的 BOOTP/eFLASH 应用程序、我看不到任何指示它被编码以触发 ROM 引导加载程序在加载后执行应用程序的指示。

    [引用 userid="51915" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1166515/tm4c1294ncpdt-ethernet-doesn-t-work-after-bootp-firmware-update "]如果 没有设置原因位,我调用函数  ROM_SysCtlReset(),之后以太网始终工作。 [/报价]

    考虑到我在 BOOTP 源代码中看到的内容,这是有道理的。 如果您希望 BOOTP 在多个项目中像这样工作,则还可以将其添加到 BOOTP 源代码中,而不是在应用程序级别执行此操作。

    此致、

    Ralph Jacobi