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.

[参考译文] TM4C123GH6PM:通过 CAN 对 TM4C123GH6PM 进行固件升级

Guru**** 2609955 points
Other Parts Discussed in Thread: EK-TM4C123GXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/754865/tm4c123gh6pm-firmware-upgradation-of-tm4c123gh6pm-through-can

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

您好!

我使用 TI 提供的 boot_serial 示例、使用 CAN 升级固件。 您能回答以下问题吗

1.在 boot_serial 示例代码中、为了将其与 CAN 通信配合使用、我必须做哪些更改

2.如何测试引导加载程序是否使用 CAN 通信(如何使用 CAN 引导加载程序发送应用程序二进制文件)

CAN_UART_BRIDGE 的用途是什么? 我们是否需要将其用于 CAN 引导加载程序代码?

4.如何从应用程序跳转到引导加载程序以进行应用程序定向固件升级。

谢谢你

此致

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

    首先、我需要承认、我没有 CAN 引导加载程序方面的经验。 我们可能需要共同努力。

    [引用 user="Dipin P K"]为了将 boot_serial 示例代码用于 CAN 通信,我必须对其进行哪些更改[/quot]

    我对 bl_config.h 文件进行了以下编辑:

    第359行,注释掉

    //#define UART_ENABLE_UPDATE
    

    2.删除第1281行中的注释"//"、并进行编辑以匹配所使用的 CAN0 RX 引脚的 GPIO 端口

    3.删除第1294行中的注释"//"并进行编辑、以匹配所用 CAN0 RX 引脚的 GPIO 端口

    4. 删除第1306行中的注释"//"并进行编辑、以匹配所使用的 RX 引脚的引脚编号

    5.删除第1320行中的注释“//”,并进行编辑以匹配所用 CAN0 TX 引脚的 GPIO 端口

    6.删除第1333行中的注释“//”,并进行编辑,以匹配所使用的 CAN0 TX 引脚的 GPIO 端口

    7. 删除第1345行中的注释"//"并进行编辑、以匹配所用 TX 引脚的引脚编号

    8.从行中删除注释"//"

    我还必须添加两个定义(不确定它们为什么不在 BL_config.h 中)

    #define CAN_RX_PIN_PCTL 8
    #define CAN_TX_PIN_PCTL 8.
    

    该值等于使用的 CAN0 RX 和 TX 引脚的复用功能值。 在我的示例中、我将 PE4用于 RX、将 PE5用于 TX。

    [引用 user="Dipin P K"]如何测试引导加载程序是否使用 CAN 通信(如何使用 CAN 引导加载程序发送应用程序二进制文件)[/quot]

    除非您已经有一个生成必要 CAN 命令的工具、否则您可以使用"CAN_UART_BRID"构建另一个项目。 定义此参数后、工程将构建一个应用程序、将串行引导加载程序命令转换为 CAN 引导加载程序命令(反之亦然)、而不是构建引导加载程序。 在 PC 上使用 LM Flash Programmer 与用作 UART CAN 桥接器的器件通信。 然后、该器件与 CAN 总线通信、以便对 CAN 总线上的其他器件进行编程。

    [引用 user="Dipin P K"> CAN_UART_BRIDGE 的用途是什么。 我们是否需要将其用于 CAN 引导加载程序代码?[/quot]

    希望在上面的问题中解释答案。

    [引用 user="Dipin P K"]如何从应用程序跳转到引导加载程序以进行应用程序定向固件升级[/quot]

    //
    //将控制权返回给引导加载程序。 这是对 SVC 的调用
    //引导加载程序中的处理程序。
    //
    (*(void (*)(void))(*(uint32_t *) 0x2C))();
    

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

    非常感谢您的快速响应和宝贵建议 Bob。

    我已经修改了用于 CAN 通信的代码。

    我现在正在使用 eMTA CANopen Device Explorer 工具来生成 CAN 命令。 但我无法找到使用同一工具发送应用程序二进制文件(.bin)的选项。 如果您有任何建议、请帮助我。

    我们还有其他工具可以通过 CAN 通信发送二进制文件吗?

    我设计的电路板只能与外部世界进行 CAN 通信。 因此、我无法将 CAN_UART_BRIDGE 和 LM 闪存编程器用于 CAN 引导加载程序(这是我的理解)。 如果我错了、请纠正我)

    我还有一个与这个问题无关的问题。 这只是因为我的好奇心。

    在 LM Flash Programmer 中,为什么我们需要指定程序地址偏移量,因为它在引导加载程序代码中已可用为 APP_START_ADDRESS?  

    谢谢你

    此致

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

    您是否考虑将 EK-TM4C123GXL Launchpad 用作 PC UART 和定制板之间的 CAN_UART_BRIDGE?

    [引用 user="Dipin P K"]在 LM Flash Programmer 中,为什么我们需要指定程序地址偏移量,因为它在引导加载程序代码中已经可用,是 APP_START_ADDRESS?  [/报价]

    APP_START_ADDRESS 是引导加载程序检查闪存中是否存在有效应用程序的位置。 虽然它通常是要编程的第一个数据块的开始、但情况并非总是如此。 此外、还可以针对不同版本的引导加载程序更改 APP_START_ADDRESS。

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

    我有兴趣使用"CAN_UART_BRID"测试 CAN 引导加载程序。 但我不理解如何在代码中配置"CAN_UART_BRIDE"并使其与 LM 闪存编程器配合使用。 您能向我解释一下执行该操作的过程吗?

    我已经从 bl_config.h 文件中的#define CAN_UART_BRIDGE 中删除了注释"//"

    提前感谢

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我对 CAN UART 桥接器代码进行了一些深入研究、发现它不使用与 LM 闪存编程器相同的串行协议(这是一个很旧的示例)。 我将在假期中更详细地介绍这一点、并希望能够发布有效的解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有任何其他选项可测试 CAN 引导加载程序代码。 (因为 CAN UART 桥接器不能与 LM 闪存编程器配合使用)

    等待您的回复。

    提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我目前没有其他建议。 不幸的是,我无法在假日期间找到解决办法。