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.

[参考译文] Linux/EK-TM4C123GXL:远程固件更新工具

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/587767/linux-ek-tm4c123gxl-remote-firmware-update-tool

器件型号:EK-TM4C123GXL
主题中讨论的其他器件:UNIFLASHTM4C123

工具/软件:Linux

我们将从 TM4C123 Launchpad 开始设计器件。 我可以通过 code composer 连接到 Launchpad 并通过 ICDI 刷写二进制文件。 TM4C123 MCU 最终将集成到其自己的 PCB 中、该 PCB 将与 Linux 主机连接、所有主机都将远程访问(它位于机器人上)。 我很难找到一个解决方案、使我能够对 TM4C123器件固件进行远程(理想情况下通过 ssh)更新。 TI 似乎并不能很好地支持 Linux 中的许多工具、这些工具可以在 Windows 中轻松实现这一点。 Uniflash 不支持 DFU、LM 闪存编程器不适用于 Windows。 最重要的是、我可以使用 ICDI 使演示 USB 引导加载程序闪存(做了一些小的修改、我认为我的操作是正确的) 但在 Linux 中、它不会显示为器件、因此即使我找到了工具、我也不确定如何连接它。 我想闪存会帮我解决这个问题。

我们讨论的是使用 launchpad 等其他 TM4C 器件作为 ICDI、因为远程更新是设计要求。 即使它是一种丑陋的解决方法、它也能正常工作吗?

我在 Ubuntu 16.04上、CCS 版本:6.2.0.00050。

我对此非常陌生、如果有任何帮助、我将不胜感激。 谢谢。

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

    这会起作用、但看起来太过分了。 为什么不 将在 Linux 下运行的 UniFlash 与 USB JTAG 扫描控制器结合使用?

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

    感谢 Bob、

    ICDI MCU 不仅仅是一个超大的 JTAG 控制器吗? 在 Uniflash 中选择 TM4C 器件后、唯一的选项是 ICDI 和 XDS JTAG 探针(以及 MSP430?)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不知道"超大"、但可以、Stellaris ICDI 是一款 JTAG 控制器。 它与 XDS110的 JTAG 部分非常相似。 实际上、您可以使用 EK-TM4C123G 上的 Stellaris ICDI 的输出来对其他器件进行编程。 请参阅以下文章 :e2e.ti.com/.../1221798

    我将尝试将此线程传递给 Code Composer 组、看看他们是否会评论通过 XDS110、XDS100v2或 TM4C 的其他独立仿真器在 Linux 上对 Uniflash 的支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过 Uniflash、我可以通过 CLI 和板载 ICDI 将固件更新加载到 DEV TM4C。 我不担心需要解决通过 JTAG 进行调试的问题、CCS 应与调试探针配合使用。 我需要一个可以集成到最终产品中的解决方案。 在每个机器人上使用 XDS110调试探针比添加第二个 TM4C 用作 ICDI 编程器的成本高出几倍。 当 USB DFU 应该是可行的选择时、添加一个仅用于处理固件更新的额外微控制器似乎是多余的。 我是否正确地考虑了这一点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、
    很抱歉、我被误解了。 当然、我不建议为每个机器人添加 XDS110。 您希望使用连接到位于机器人上的 Linux 主机的 TM4C USB 引导加载程序、但 TM4C USB 器件在 Linux 主机上无法识别为 DFU 器件、对吧? 当连接到 Windows 机器时、它是否被识别为 DFU 器件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不能、我无法在 Linux 或 Windows 上将其识别为 DFU 器件。 我使用了 DK-TM4C123 BOOT_USB 示例并针对 EK-TM4C123 (144引脚与64引脚封装对吗?)对其进行了修改、我更改了 bl_config.h 文件以匹配* GH6PM 的数据表。 为便于阅读、删除了下面的注释。 我还更新了 target_config.ccxml。 我在该修改中错过了什么。

    感谢你的帮助。

    #ifndef __BL_CONFIG_H__
    #define __BL_CONFIG_H__
    
    
    #define CRYSTICL_FREQ 8000000
    
    #define APP_START_ADDRESS 0x2800
    
    #define VTABLE vstart_address 0x2800
    
    #define FLASH_PAGE_SIZE 0x00000400
    
    #define STACK_SIZE 128
    
    #define buffer_size 20
    
    #define USB_ENABLE_UPDATE
    
    #define USB_VENDOOR_ID 0x1cbe
    
    #define USB_PRODUCT_ID 0x00FF
    
    #define USB_DEVICE_ID 0x0001
    
    #define USB_MAX_POWER 150
    
    #define USB_BUS_powered 1
    
    #define USB_VBUS_CONFIG
    
    #define USB_VBUS_PERIPh SYSCTL_RCGCGPIO_R1
    
    #define USB_VBUS_PORT GPIO_PORTB_BASE
    
    #define USB_VBUS_PIN 1
    
    #define USB_ID_CONFIG
    
    #define USB_ID_PERIPh SYSCTL_RCGCGPIO_R1
    
    #define USB_ID_PORT GPIO_PORTB_BASE
    
    #define USB_ID_PIN 0
    
    #define USB_DP_CONFIG
    
    #define USB_DP_PERIPh SYSCTL_RCGCGPIO_R8
    
    #define USB_DP_PORT GPIO_PORTJ_BASE
    
    #define USB_DP_PIN 1
    
    #define USB_DM_CONFIG
    
    #define USB_DM_PERIPh SYSCTL_RCGCGPIO_R8
    
    #define USB_DM_PORT GPIO_PORTJ_BASE
    
    #define USB_DM_PIN 0
    
    
    #endif //_ bl_config_H__ 

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

    擦除闪存后、您是否在 Windows PC 设备管理器上看到"Stellaris 器件固件升级"?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否、在我加载 boot_usb 后、我在 DEV MCU USB 端口上看不到任何可识别的内容。 我应该在安装 boot_usb 后擦除闪存吗?

    我在安装 boot_usb 后擦除闪存、现在它作为 DFU 出现。 太棒了! 加载后擦除闪存并不直观。

    好的、我的下一个目标是尝试获取在 Linux 中工作的 DFU 加载程序。 不过、这可能是一个新主题。 您是否有 sflash 的相关文档?

    非常感谢 Bob。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您擦除整个闪存(包括 BOOT_USB)。 ROM 中有引导加载程序固件。 如果您随后可以看到 Stellaris DFU、则我们知道 PC 上的硬件和驱动程序都工作正常。 您是否正在使用 EK-TM4C123GXL Launchpad? 您只需使用 CCS 擦除闪存、然后物理断开 USB 电缆。 将电源开关翻转至设备、然后将 USB 电缆连接至设备连接器(侧面)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、哇、我觉得傻了。 我一直在努力寻找解决方法、一直都在 ROM 上。

    非常感谢您提供有关可通过 DFU 加载器加载的任何 Linux 工具的任何信息。

    以解决下一个问题。 再次感谢。