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.

[参考译文] EK-TM4C1294XL:EK-TM4C1294XL

Guru**** 2539500 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162320/ek-tm4c1294xl-ek-tm4c1294xl

器件型号:EK-TM4C1294XL

尊敬的 TI 支持:

我有 EK-TM4C1294XL 评估套件。 我下载了 SPMA072 (用于 TM4C129x 的串行转以太网转换器)。

我能够使用 CCS 11.2.0进行编译。 应用程序运行正常、我可以打开 Web 服务器。

我们的要求之一是能够使用 以太网进行固件更新。  

我尝试了 Tiva Ware 中的以下示例:

BOOT_EMAC_FLASH

BOOT_DEMO_EMAC_FLASH

使用 LM Flash Programmer、我能够安装 boot boot_demo_emac_flash 应用程序。 这种方法始终运行良好。

我尝试使用我们的应用程序执行同样的操作。 我知道 boot_demo_emac_flash 会检查魔术包。 当接收到魔术包时、它会将控制权转移到  

BOOT_EMAC_FLASH。 我通过检查 BOOT_DEMO_EMAC_FLASH 代码尝试在应用程序中执行相同的操作。 但是、我无法重复行为。

到目前为止、我已经花了几周时间、我想找到一个解决方案。 我认为问题的一部分是、当 BOOT_DEMOD_EMAC_FLASH 正在运行时、我无法运行 CC。 我想使用调试器  

验证是否检测到魔术包并调用 swupdate 函数。 基于此、我将尝试使用我的代码执行相同的操作、并找出它不起作用的原因。

您对如何在应用中实现 boot_demo_emac_flash 有什么建议吗?

在我闪存 boot_emac_flash 后、是否可以在 boot_demo_emac_flash 上运行调试器?  

感谢您的帮助、

Felix V.

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

    您好、Felix、

     引导加载程序(BOOT_EMAC_FLASH)成功加载 boot_demo_EMAC_FLASH (应用程序)后、您可以通过加载应用程序的符号来调试应用程序。 请参见下面的。 选择 Load Symbols 并提供 boot_demo_emac_flash.out、因为它包含符号。  

      

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

    您好、Charles、感谢您的回答。 我现在能够在我的应用程序代码中进行断点。 在 swupdate.c (我基本上是从 boot_demo_emac_flash 复制的)中,在按 LM Flash 中的 Program 之后,我可以看到调用了 SoftwareUpdateBegin()。 ROM_UpdateEMAC 被调用、这表示控制权已传输到 BOOT_EMAC_FLASH。 在 LM Flash 中、我看到进度条正在运行、并且传输的字节数正确。 但是、当我重启电源时、应用程序无法运行。 似乎出现了问题、但我没有收到任何错误消息。 我将使用 Wireshark 检查数据是否已发送。

    Felix

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

    您好、Felix、

    [引用 userid="523811" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162320/ek-tm4c1294xl-ek-tm4c1294xl/4372627 #4372627"]调用了 ROM_UpdateEMAC,这表示控制权已传输到 BOOT_EMAC_FLASH。[/quot]

    我不认为  BOOT_DEMO_EMAC_FLASH 调用 ROM_UpdateEMAC。 您可能已经更改了它。 将调用 ROM_UpdateEMAC 的示例是 boot_demo_EMAC_ROM。 这两个示例(BOOT_DEMO_EMAC_FLASH 和 BOOT_DEMO_EMAC_ROM)非常相似、其中一个对0x2C 进行服务调用、另一个调用 ROM_UpdateEMAC。  

    //
    //将控制权返回给引导加载程序。 这是对 SVC 的调用
    //基于闪存的引导加载程序中的处理程序,或者如果配置了,则写入 ROM。
    //
    #if ((定义的 ROM_UpdateEMAC)&&!(定义的 USE_FLASH_BOOT_LOADER))
    ROM_UpdateEMAC (ui32SysClock);
    其他
    (*(void (*)(void))(*(uint32_t *) 0x2C))();
    #endif

    请在结尾处浏览下面的帖子 我看到有问题的人说、在使用 ROM_UpdateEMAC 更新固件后、引导加载程序无法跳转到应用程序。 请确保在调用  ROM_UpdateEMAC 之前、应用程序中所有正在运行的外设都已停止生成任何中断。 我已经看到一些海报、甚至建议在调用 ROM_UpdateEMAC 之前禁用外设可以解决问题。 例如,如果您的应用程序中运行了 UART 或 SPI,请在调用 ROM_UpdateEMAC 之前禁用这些模块。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1124755/ek-tm4c129exl-rom-bootloader-image-requirements/4174309?tisearch=e2e-sitesearch&keymatch=ROM_UpdateEMAC#4174309

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

    您好、Charles、非常感谢您提供的信息。 我所做的是通过注释 ROM_UpdateEMAC()强制服务调用0x2C,它是有效的。 我不必 添加其他代码来禁用中断。 其中已经有的似乎是有效的。

    再次感谢您的大力支持!

    Felix