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:以太网固件更新

Guru**** 2188815 points
Other Parts Discussed in Thread: UNIFLASH, EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1360396/tm4c1294ncpdt-ethernet-firmware-update

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:UNIFLASHEK-TM4C1294XL

我烧录了 boot_emac_flash、即以太网引导加载程序、然后使用 LM Flasher 烧录引导演示 EMAC、再使用 LM Flasher 烧录 LED 闪烁代码、但没有发生任何情况、尽管 LM Flasher 在使用以太网烧录代码时显示进度为什么代码不运行? 有人有任何想法吗?   

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

    您好!

    Unknown said:
    我已经烧录了 boot_emac_flash、即以太网引导加载程序、然后使用 LM Flasher 烧录引导演示 EMAC、接着

    我想我看到了一些问题。

    问题1:如果这是您在 LM 闪存编程器中执行的序列、那么您很可能会在加载 boot_demo_EMAC_flash 时擦除引导加载程序。 首次加载 BOOT_EMAC_FLASH 时、应该会运行、因为这与加载 hello 或闪烁等程序没有区别。 但是、当您加载 boot_demo_EMAC_flash 时、LM 闪存编程器将首先擦除整个闪存、然后再加载下一个程序。 为了避免该问题、您需要使用 Uniflash 工具来同时加载引导加载程序和应用程序。 请参见下方的。  

     

    问题2:我不确定您为什么要通过 JTAG 同时加载引导加载程序和应用程序。 如果这仅用于调试、则没有问题。 这些示例的实际用法是首先通过 JTAG 加载引导加载程序。 加载引导加载程序(BOOT_EMAC_FLASH)后、它将运行并设置以太网模块、然后通过以太网端口而不是 JTAG 端口下载应用程序示例(BOOT_DEMO_EMAC_FLASH)。 应用程序下载到闪存后、应用程序将运行并使 LED 闪烁。 应用程序还可以再次跳回引导加载程序、以便更新新的应用程序映像。  

    如果您要使用引导加载程序通过以太网下载应用固件、则需要执行以下步骤。  

    步骤1:运行 enet_lwip 或 enet_io 以获取 IP 地址。  在终端窗口中、您应该会看到打印出来的 IP 地址。 记录此地址。  

     步骤2:使用 CCS 通过 JTAG 接口加载 BOOT_EMAC_FLASH。 这是在0x0处加载的引导加载程序。  

     步骤3. 启动 LM Flash Programmer。 请参见下图。 提供您刚刚在步骤1中记录的 IP 地址、并输入 IP 地址以及 MAC 地址。 如果您使用的是 LaunchPad、则 MAC 地址显示在电路板背面的标签上。  

    您的 PC 将作为 TFTP 服务器以及 BootP 服务器、用于将程序映像传输到 MCU (客户端)。 您需要通知 BootP 服务器 MCU 的 IP 地址及其 MAC 地址。 这是 BootP 服务器的工作方式。 与 DHCP 服务器不同、MAC 地址及其关联的 IP 地址必须提前手动输入和已知、因为 BootP 本质上是静态的。 这就是我们在配置选项卡中输入它们的原因。 但是、我们不知道要输入哪个 IP 地址。 我们不能输入任何可能干扰网络中其他 IP 地址的任意地址。

    这就是我们必须首先运行另一个以太网示例的原因、例如 enet_lwip。 enet_lwip 将发送 DHCP 请求。 获取 IP 地址后、我们将仅记录 IP 地址值以在 BOOT_EMAC_FLASH 中重复使用。 在我的镜像中、通过运行 enet_lwip 获取的 IP 地址显示为10.219.14.138。 请注意、您的地址将与我的地址不同。 我们可以使用此地址的原因是 DHCP IP 地址被租用了几个小时。 我们通过运行 enet_lwip 获取的地址会保留几个小时。

    步骤4. 转到"Program"选项卡。 提供应用程序映像的路径、即 boot_demo_EMAC_flash.bin。 此 TvaWare 示例已链接到0x4000。 请勿更改它。 在未来、您可以随时随地更改。 但是、在您使示例正常工作之前、请勿更改任何内容。  

     步骤5. 如果步骤2中的 BOOT_EMAC_FLASH 在 CCS 中仍然停止、则可以立即运行它。  

     步骤6. 运行 boot_emac_flash 后、可以点击上面映像中的"Program"按钮。

     步骤7. 假设一切都顺利进行了编程、并且 boot_demo_EMAC_flash 应用程序已进行编程、如果您要对其进行调试、则可以转到"Run"->"Load"->"Load Symbols"来加载符号。 该符号包含在 boot_demo_EMAC_flash.out 中。 请注意、这是.out 文件。 请加载符号、不要与加载程序相混淆。  

    我将建议您使用 Wireshark 来查看 MCU 和 TFTP/BOOTP 服务器之间的流量。 您应该看到以下内容。 MCU 将向 PC 发送 BOOTP 请求、并在握手之后、TFTP 服务器通过以太网接口将程序映像(boot_demo_emac_flash.bin)发送至 MCU。

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

    我通过以太网而不是 J-tag 使用 lm 刷写 boot_demo_emac  

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

    如果通过以太网下载了 boot_demo_EMAC_flash、那么您面临的问题是什么? 您是否对电路板进行了重置? boot_demo_emac_flash 是常用示例还是您修改了它? BOOT_DEMO_EMAC_FLASH 应使 LED 闪烁、直到它从以太网接收到一条命令以跳回引导加载程序以进行另一个固件更新。  

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

    boot_demo_EMAC_FLASH 我从 Tiva 文件夹中获取.bin 文件、我单独从 UNIFLASH 刻录引导加载程序、然后我 使用 LM Flasher 通过以太网刻录 BOOT_demo_EMAC_FLASH、并且没有 LED 闪烁。  
    如果我需要刻录另一个代码,我应该怎么做?

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

    在 CCS 中、查看存储器内容。 您是否看到0x0处的 BOOT_EMAC_FLASH 引导加载程序以及0x4000处的固件 BOOT_DEMO_EMAC_FLASH? 如果您在这些区域中看到所有0xF、则表示固件未进行编程。  

    如果运行 boot_demo_EMAC_flash 示例固件、如果在 LM 闪存编程器中再次点击"Program"按钮、则它会跳回引导加载程序以烧录另一个代码。

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

    在 UNIFLASH 中、我看到了 UNIFLASH 中的两个代码都在闪烁中、有一个代码从0x0开始、我认为这是 BOOT_EMAC_FLASH、还有一个代码位于0x4000、即 BOOT_DEMO_EMAC、并且没有 LED  

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

    使用我在 https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1361118/tm4c1294ncpdt-loading-program 上的最后一个回复 来调试程序。  

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

    我尝试过它、但仍然没有闪烁  

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

    您是否还有其他电路板要尝试?

    当您使用调试器进行连接时、代码从何处停止?

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

    它在引脚分配处停止  

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

    我运行调试器时仅使用 boot_demo_emac_flash、它会在 Pinoutest ()行停止

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

    而且我没有另一个板

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

    Pinoutest ()函数位于 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\drivers\pinout.c 文件中。 请确保在编译代码时使用的是正确的文件。 当你说它停止在 Pinoutput(),它实际上意味着什么? 此函数没有 while 循环。 它只是初始化 pinux 并退出。 它应该不会卡住。 如果它卡住、那是哪条线卡住?

    我还尝试使用 Uniflash 加载 boot_emac_flash.bin 和 boot_demo_emac_flash.bin。 您是否确保 BOOT_demo_EMAC_FLASH 从0x4000开始。 请参见下方的。 成功加载两个程序后、我按板上的复位按钮、可以看到 LED 以1秒的速率闪烁。  我不能重复你的问题。 我建议您单步执行并找出卡住的确切部位? 确保加载 bin 文件后、您需要在 CCS 中加载符号以便进行调试。