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:LM 闪存编程器在尝试连接时卡住

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/753481/tm4c1294ncpdt-lm-flash-programmer-stuck-attempting-to-connect

器件型号:TM4C1294NCPDT

我将 BOOT_EMAC_FLASH 项目与我自己的应用程序一起使用。  我在0x0加载 BOOT_EMAC_FLASH、我的应用程序在0x4000加载。  我的应用程序中的软件命令会调用一个例程、该例程复制 boot_demo_emac_flash 文件中的代码、并且我已将其跟踪到函数 SoftwareUpdateBegin 中调用引导加载程序的位置。  我在 Wireshark 中看到的是包含 MAC 地址的72字节的常量 UDP 数据包。  引导加载程序位于 UpdateBOOTP 主应用程序循环中。

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

    您好、Robert、

     包含 boot_emac_flash (作为引导加载程序)和 boot_demo_emac_flash (作为应用固件)的原始示例是否正常工作?

     如果引导加载程序正在执行 UpdateBOOTP,则应向服务器发送 BOOTP 请求。 您在服务器端做了什么? 如果您使用的是 LM 闪存编程器、您是否转到"Program"选项卡并指定您的应用程序文件、然后单击"Program"按钮? 请参见下面的。

    您能显示 Wireshark 捕获吗?

    请首先使用 boot_demo_emac_flash 应用程序运行原始示例? 您应该看到如下所示的内容吗?

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

    已尝试使引导演示闪存运行、但它从未通过 BOOTP

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

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

    无法添加屏幕快照

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

    您好、Robert、

     我想知道您是如何设置服务器端的。 我假设您已经这样做了、但只是想确保。  

     1.完全擦除闪存。

     2.通过 JTAG 将引导加载程序(BOOT_EMAC_FLASH)编程到闪存中。 引导加载程序将从0x0开始编程。 运行程序。

     3.在 LM Flash 程序员中指定客户端 IP 地址和 MAC 地址。 在运行步骤2后,您应该在终端窗口中获得 IP 地址。

    4.指定 boot_demo_emac_flash.bin 并按"Program"按钮。

    查看实际的 TFTP 传输可能需要一段时间。 原因是,在步骤2中运行引导加载程序后,客户端立即发送 BOOTP 请求。 但是、您还必须在步骤4中单击"Program"按钮。 如果客户机没有收到服务器的回复,它将等待1秒钟,然后再发送下一个 BOOTP 请求。 如果服务器没有进一步响应,则它将持续2秒,4秒,8秒,16秒,32…… 因此,在客户机发送下一个 BOOTP 请求之前,您等待按下“程序”按钮的时间越长(即等待32秒)。 一旦您按下"Program"按钮、TFTP 就会启动。 如果这不是您所看到的问题、那么它将是其他问题。 该示例始终有效。 如果示例在您的一方不起作用、则它不是客户端的软件方面问题。  

     请按照以下两个步骤附加图像。  

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

    e2e.ti.com/.../screen1.docxCharles、

    计算机、开发板和网络服务器都连接到网络交换机。  我已禁用 计算机上的防火墙。

    我擦除了整个闪存。

    2.在0x0处对引导加载程序进行了编程。  开发板屏幕不显示 IP 地址或 MAC。  我认为屏幕信息由演示应用程序而非引导加载程序显示。

    3.我在 Wireshark 中看到 BOOTP 消息。

    4.按下 LM Flash Programmer 上的编程按钮

    5. Wireshark 继续显示 BOOTP 请求。  LM Flash Programmer 状态行显示"Attempting to Connect"

    如果我还在0x4000处对引导演示应用程序进行编程、我将看到以下内容:

    1.开发板屏幕显示“等待信号”,显示 IP 和 MAC。  没有 BOOTP 消息。

    2.按下编程按钮,“正在等待信号”信息更改为“正在更新...” 和 BOOTP 消息将启动并继续而不结束

    在 bl_config.h 中定义了以下内容:

    #define ENET_BOOTP_SERVER   "TiVo"

    是这样吗?

    我仍然无法将屏幕截图粘贴到帖子中、因此我将其粘贴到 Word doc 中并附加它。

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

    您好、Robert、

     很抱歉,我的错。 我还需要添加步骤0。

    0。运行 enet_lwip 或 enet_io 示例以从 DHCP 服务器获取 IP 地址。 请参阅下面的屏幕截图。 首次运行此示例的原因是只需获取 IP 地址。 使用 BOOTP 协议,引导加载程序的大小应该非常紧凑。 但是,BOOTP 本质上是静态的,与 DHCP 不同,DHCP 根据请求为客户端提供动态 IP 地址。 通常、您的 DHCP 会在特定的时间段(可能是小时或一天)内将 IP 地址租赁给您的客户端(MCU)。 通过运行 enet_lwip 获取 IP 地址后、IP 地址将在一段时间内仍然有效。 这是您要在 LM 闪存编程器中输入的 IP 地址。 如果您使用 launchpad、则在电路板背面会有一个贴纸显示 MAC 地址。 LM 闪存编程器充当 BOOTP 和 TFTP 服务器。 它必须在其系统中预先记录的 IP 地址和 MAC 地址之间建立关联。  请注意、您必须在 LM 闪存编程器中输入正确的 IP 地址和 MAC 地址。 如果没有它们,服务器将无法接受来自客户机的 BOOTP 请求。  

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

    查尔斯

    boot_demo_emac_flash 确实会在开发板的 LCD 上显示 IP 和 MAC。  这是否不是正确的 IP 和 MAC?

    我的 Wireshark 日志显示了 BOOTP 请求和 ARP 广播、其中的 IP 地址分配给通过交换机连接到开发板的计算机。  我看到您发送的屏幕截图与我的屏幕截图之间的区别在于、我的 ARP 广播要求告知255.255.255.255、而您的广播要求告知运行引导加载程序的器件分配的 IP 地址。  

    e2e.ti.com/.../screen2.docx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert、
    BOOT_DEMO_EMAC_FLASH 和 Enet_lwip 应提供相同的 IP 和 MAC 地址。 您可以运行 enet_lwip 进行检查。

    在我看来、您通过 JTAG 将 boot_demo_emac_flash 应用程序加载到闪存中。 是这样吗?

    您能否按照我列出的步骤操作、即通过 JTAG 将 boot_emac_flash (引导加载程序)编程到闪存中。 运行引导加载程序、然后通过以太网加载 boot_demo_emac_flash。 我还想看看您在 LM 闪存编程器上输入的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯

    我确实通过 JTAG 加载 BOOT_DEMO_EMAC_FLASH。

    我似乎没有收到对 ARP 广播的响应。

    e2e.ti.com/.../screen3.docx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert、
    您可以尝试 Enet_lwip 吗? 这是一个 Web 服务器示例? 运行后、您可以转到浏览器并在 URL 定位器中键入 IP 地址。 如果您在运行 Web 服务器的 ARP 问题上也遇到问题,那么我们至少知道您遇到的 ARP 问题与任何示例无关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查尔斯

    Enet_lwip 已加载,并显示 IP 172.16.2.137的网页。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Robert、
    这不是我的问题。 我询问您是否可以在浏览器上成功看到 Web 服务器内容。 还可以使用 Wireshark 查看 enet_lwip 是否也卡在 ARP 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯

    我可以看到 Web 服务器。

    第一个屏幕快照是在按下开发板上的复位按钮之后。  第二个屏幕快照是在 Web 浏览器中输入 IP 之后。

    e2e.ti.com/.../screen4.docx

    Robert

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

    Robert、

     好的。 因此 ARP 数据包没有任何问题。 这是一个很好的起点。

     我刚刚在评估板上重复了相同的测试。 我之前在 LaunchPad 上进行测试。 它在评估板中仍对我有效。 请参见下图。 请注意、我的客户目标地址和 MAC 地址将与您的目标地址不同。 事实上、您的客户端地址应该是 172.16.2.137和00-1A-B6-02-96-78、我认为您已将其正确输入 LM 闪存编程器。

    完成后、您应该会看到55704字节被传输。  

    我真的不知道为什么它不能在你身边工作。 您的客户端似乎会发出 BOOTP 数据包。 但是、您说它卡在 ARP 中。 当您运行 enet_lwip 时、您的 PC 可以回复其 MAC 地址、但在您运行引导加载程序时不能回复。 这也是我迷路的地方。

    您可以重新运行该示例吗? 现在、请执行我先前所说的操作。 我重复一遍、请勿通过 JTAG 加载 BOOT_DEMO_EMAC_FLASH。 您过去一直在这样做。 只需将 boot_emac_flash (引导加载程序)加载到闪存中并运行即可。 在服务器端(LM 闪存编程器)上、输入您已经完成的 IP 和 MAC 地址。 您只需转到"Program"选项卡并点击"Program"按钮即可。 也许您希望在看到客户端发出的 BOOTP 后按编程按钮。 让我们看看您是否可以在尝试更新新应用固件之前完成此工作、此时闪存已运行应用固件。  

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

    查尔斯

    我执行了以下操作并在附加的文件中添加了屏幕截图;

    1.将 LM Flash Programmer Quick Set 设置为 TM4C129X 开发板。

    2.擦除整个闪存。

    3.已编程 boot_emac_flash.bin

    4.将 LM Flash Programmer Quick Set 设为 Manual Configuration。

    5.方案 boot_demo_emac_flash.bin

    6. Wireshark

    您之前说过 LM Flash Programmer 充当 BOOTP 和 TFTP 服务器。  单步执行引导加载程序、我看到它处理 BOOTP 应答、但它会超时地发送 TPTP 读取请求。

    我之前问过、bl_config.h 中的 ENET_BOOTP_Server 设置应该是什么?

    e2e.ti.com/.../screen5.docx

    Robert

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

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

    我从运行 LM Flash Programmer 的计算机上删除了防火墙、ARP 握手现在可以正常工作。
    感谢您的参与和帮助。 祝你度过一个愉快的假期。

    Robert