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:使用 LM 闪存编程器通过以太网进行远程编程

Guru**** 2914580 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/1276545/tm4c129encpdt-remote-programming-over-ethernet-using-lm-flash-programmer

器件型号:TM4C129ENCPDT
主题中讨论的其他器件:EK-TM4C1294XL

您好!

我们在本地网络上安装了一堆设备。 我们使用了使用 LM 闪存编程器的远程编程方法并且它运行良好。 不过我们注意到的一点是、编程人员在找到远程器件后将需要5-8分钟的时间来发现远程器件编程仅需不到1分钟。 网络中有几个开关。 不过、我们还尝试了一个小型本地网络、在该网络中仅连接了 TM4C 微控制器、但 LM 闪存编程器仍需要大约4-5分钟来发现它。

我有以下问题:

  1. 这是一个已知问题吗? 有什么想法可能会导致它? 或者、如何加快速度以更快地发现远程器件
  2. 由于我们在网络上安装了一堆设备、因此为每个设备输入 MAC 地址是非常乏味和手动的工作。 我是否有办法写一个 python 脚本来保存一组将被馈送给 LM Flash Programmer 的 MAC 地址并且程序员将一个接一个地开始对器件进行编程?
  3. LM Flash Programmer 是否有 Linux 版本(Redhat)?

谢谢

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

    您好!

    • 这是一个已知问题吗? 有什么想法可能会导致它? 或者、如何加快速度以更快地发现远程器件
    [/报价]

    我在论坛上没有遇到这样的报告、在这些报告中、我需要5-8分钟的时间来发现远程器件。

    您是否有机会运行库存的 boot_emac_flash 和 boot_demo_emac_flash?

    您可以重复相同的长发现时间吗?

    我刚才按原样运行示例。 首次加载 BOOT_DEMO_EMAC_FLASH 后、应用程序开始运行。 每次在 LM 闪存编程器中单击编程按钮时、只需几秒钟即可一次又一次地更新应用。 示例应用 boot_demo_emac_flash 将等待来自 TFTP 服务器的魔术包。 收到魔术包后、它将跳转到引导加载程序以重新加载应用程序。  

    • 由于我们在网络上安装了一堆设备、因此为每个设备输入 MAC 地址是非常乏味和手动的工作。 我是否有办法写一个 python 脚本来保存一组将被馈送给 LM Flash Programmer 的 MAC 地址并且程序员将一个接一个地开始对器件进行编程?
    • LM Flash Programmer 是否有 Linux 版本(Redhat)?
    [/报价]

    有一个 LM 闪存编程器命令行版本可用于以太网下载。 可执行文件位于 C:\ti\TivaWare_C_Series-2.2.0.295\tools\bin\eflash.exe 中。  源代码位于 C:\ti\TivaWare_C_Series-2.2.0.295\tools\eflash 目录中。 您可以将其移植到 Linux。 没有用于 LM Flash 程序员的 Linux 版本、只有 Windows。  

    LM 闪存编程器中存在一个已知问题、即如果您的 PC 上有两个 NIC、LM 编程器可能会错误地将魔术包发送到错误的 NIC、而不是连接到与您的客户端设备相同网络的 NIC。 我不认为这是你现在所面临的问题,但想提请你注意,以防你遇到同样的问题。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/675608/tm4c1294kcpdt-lmflash-ethernet-update-bug---magic-packet-sent-on-wrong-interface

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

    您好、可以分享文档吗、您有以太网 Flash Downloader 的屏幕截图。 因为我需要研究细节来转换源代码使其在 Linux 机器上运行。 谢谢

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

    描述 eflash.exe 的用户指南可以在 C:\ti\TivaWare_C_Series-2.2.0.295\docs\SW-TM4C-TOOLS-UG-2.2.0.295.pdf 中找到

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

     

    我发现此问题与 PC 上的防火墙有关。 但是、我能够对器件进行远程编程、器件不会在开启时复位、我必须在编程后重启电源。  

    此处是触发远程编程事件的代码部分。

    HWREG(NVIC_DIS0) = 0xFFFFFFFF;
    HWREG(NVIC_DIS1) = 0xFFFFFFFF;
    HWREG(NVIC_DIS2) = 0xFFFFFFFF;
    HWREG(NVIC_DIS3) = 0xFFFFFFFF;
    HWREG(NVIC_DIS4) = 0xFFFFFFFF;
    ROM_SysTickIntDisable();
    ROM_SysTickDisable();
    SysCtlDelay(5000);
    ROM_UpdateEMAC(sys_clock);

    有什么可能是错误的?

    此外,请分享任何参考项目,我可以比较我的代码,如果我有一些不同的矢量表等?

    谢谢

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

    您好!

     我目前在度假。 当我回来的时候、我会仔细研究您的问题。 很抱歉响应延迟。  

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

    您好!

    您是否有机会调查此问题?

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

    内容。 我们还有一个问题、一些器件在进入引导加载程序后会卡住、程序进度(程序在 Windows 电源外壳终端中以百分比形式打印进度)将卡在零。 当我们通过 Ctr+C 终止程序时。 远程设备将丢失且不会启动。 要恢复器件、我们必须使用 JTAG 端口在本地对其进行编程。

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

    大家好、Sahil:

    但是、器件不会在开启时复位、我必须在编程后重启电源。  

    此处是触发远程编程事件的代码部分。

    全屏
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HWREG (NVIC_DIS0)= 0xFFFFFFFF
    HWREG (NVIC_DIS1)= 0xFFFFFFFF
    HWREG (NVIC_DIS2)= 0xFFFFFFFF
    HWREG (NVIC_DIS3)= 0xFFFFFFFF
    HWREG (NVIC_DIS4)= 0xFFFFFFFF
    ROM_SysTickIntDisable ()
    ROM_SysTickDisable ()
    SysCtlDelay (5000)
    ROM_UpdateEMAC (sys_clock)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    有什么可能是错误的?

    [/报价]

     虽然我对您的问题没有很好的答案、但我发现此帖子可能很有用。 虽然此帖子调用 ROM_UpdateUART()而不是 ROM_UpdateEMAC(),但似乎有类似的问题。 本文提到 加载新固件后、必须执行手动复位才能正确启动固件。  我认为值得尝试建议的解决方案来了解它是否对您的项目有所帮助。 转到 POST 的末尾、John 替换了 HWREG (NVIC_DIS0)= 0xffffffff、 HWREG (NVIC_DIS1)= 0xffffffff、 禁用了单独的外设中断。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1025914/tm4c123gh6pm-invoke-rom_updateuart-programmatically

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

    谢谢 Charles。 链路似乎很有用、但正如我前面提到的、我们较高优先级的问题是器件卡住、而我们完全松开了器件。 我们必须将器件恢复到实验室、并通过 JTAG 对其进行编程以便恢复它。 请记住、我们编程的几乎每第三个器件都会发生这种情况。  

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

    您好!

     当您说处理器卡滞时、您知道处理器卡滞在哪里吗? 之前、您似乎提示问题是器件在引导加载后不会复位、您需要手动复位器件、但现在出现了卡滞、这是完全不同的行为。 什么更改了?  

     在任何情况下,请参考我刚才提到的帖子。 该帖子提到它在调用 ROM_UpdateXXX 之前收到了一个例外、从某种意义上说、该内容会滞留在硬故障处理程序中。 我想知道这是否也是你们看到的。  

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

    让我来跟进 您分享的帖子、看看它是否相关并解决问题。

    "我不会骗你的。" 谢谢、你度过了美好的一天。

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

    尊敬的 Charles:

    我点击链接并进行相应更改、解决了处理器卡住、器件松动的问题、不得不使用 JTAG 在本地对器件重新编程的问题。 现在这个问题已经解决了。

    但是、我仍在努力解决之前的问题、即设备在远程编程后无法自行重置、因此必须对设备进行下电上电。 一旦我们对下电上电、它就可以正常运行新编程的固件。

    我尝试进行调试、看看器件是否通过以太网成功编程、确切地说是在哪里挂起。

    我看到它会挂起到  

    memcpy(outbuf, (const unsigned char*)count_p, count);

    位于 copy_decompress_non.c 文件中。 您还可以在以下图片中看到"Disassembly"视图和"Core Registers"状态;

    有任何想法或提示吗?

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我遵循此链接并进行了相应更改,该链接解决了处理器卡滞和断开设备的问题,而且我们不得不使用 JTAG 在本地对设备重新编程。 现在,此问题已解决。

    很高兴取得了一些进展。  

    但是、我仍在努力解决之前的问题、即设备在远程编程后无法自行重置、因此必须对设备进行下电上电。 一旦我们对下电上电、它就可以正常运行新编程的固件。

    我尝试进行调试、看看器件是否通过以太网成功编程、确切地说是在哪里挂起。

    我看到它会挂起到  

    全屏
    1
    memcpy (outbuf(const unsigned char*) count_pcount)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    位于 copy_decompress_non.c 文件中。 您还可以在以下图片中看到"Disassembly"视图和"Core Registers"状态;

    [/报价]

    我不清楚为什么它停留在器件启动中的_TI_decompress_none。

     链接库中是否有-llibc.a?

    如果运行 TivaWare 示例 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo_emac_rom、您是否会看到 sane 问题? 此 TivaWare 示例会调用 ROM_UpdateEMAC 以跳转到 ROM 引导加载程序。 如果该示例在没有卡住的情况下可以正常工作、那么可以将它与您的应用程序和启动文件以及构建配置进行比较吗?

    如果在 LaunchPad 上运行应用程序、是否会看到同样的问题?

    不确定此帖子是否有用或者与 _TI_decompress_none 无关。

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1012140/rm57l843-__ti_decompress_lzss-and-__ti_decompress_none-functions?ReplyFilter=Answers&ReplySortBy=Answers&ReplySortOrder=Descending

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

    尊敬的 Charles:

    我已经包含了 libc.a。 不过、我在工程的链接器配置与  boot_demo_EMAC_rom 中确实看到了一些差异。 我不确定 whatchange 是否准确解决了问题、但我试图使链接器配置尽可能接近演示项目、结果成功。

    现在、我可以远程编程、而且也能够成功复位。

    谢谢你的帮助,你有一个美好的周末。

    此致、

    萨希尔