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.

[参考译文] TMS320F28P650DK:TMS320F28P650DK8 CAN 引导模式固件升级无法正常工作(DCAN 闪存内核)

Guru**** 2860250 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1635532/tms320f28p650dk-tms320f28p650dk8-can-boot-mode-firmware-upgrade-not-working-dcan-flash-kernel

器件型号: TMS320F28P650DK
主题: C2000WARE 中讨论的其他器件

我正在使用 TMS320F28P650DK8 控制器、并尝试使用器件上可用的基于 CAN 的引导模式执行固件升级。

我已经按照 TI 应用手册“应用手册:C2000 微控制器的 CAN 闪存编程“中概述的过程进行了操作。 具体来说:

  • 我下载并编译了 DCAN 闪存内核 (dcan_flash_kernel)。

  • 已将引导引脚配置为 CAN 引导模式。

  • 根据文档、我首先以 100kbps 的速率传输内核。

  • 经过大约 5 秒的延迟后、我以 1Mbps 的速率传输实际固件。

尽管执行了这些步骤、但固件升级未成功完成。

我希望得到以下方面的指导:

  • 是否有其他任何可能缺少的配置步骤或时序注意事项?

  • 是否有建议的方法来验证是否正确接收和执行内核?

  • 该过程在 TMS320F28P650DK8 上是否存在已知问题或限制?

任何建议或故障排除技巧都将非常有帮助。

谢谢你。

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

    您好:

    您是否使用 C2000Ware 中提供的主机编程器? 如果没有、我会引用 C2000Ware 中的源文件、该源文件包含在: “C2000Ware_26_00_00_00\utilities\flash_programmers\dcan_flash_programmer\dcan_flash_programmer “

     我还将确认 DCAN 闪存内核正在配置 Rx 与引导配置相同的 CAN Tx/GPIO 分配。 此外、SPRUJH3 的第 4.2.3 节: https://www.ti.com/lit/ug/sprujh3/sprujh3.pdf 中还介绍了有关如何使用 DCAN 闪存内核的步骤

    此致、
    马特

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

    尊敬的 Matt:

    感谢您的答复。

    我的主要目标是从 Linux 主机升级**TMS320F28P650DK8**的固件。 我按照以下步骤操作:

    1.从 Flash_Kernel 下载*dcan_flash_kernel_f28p65x*  并生成`.txt`格式的输出。
    `创建了一个简单的 GPIO 切换应用程序作为测试固件、并以`.txt 格式生成其输出。
    3.在 Linux 主机中、将引导引脚配置为:

    * GPIO72 = 1
    * GPIO84 = 0
    (GPIO4 和 GPIO5 用于 CAN TX 和 RX。)
    4.执行了下电上电复位。
    5.最初将 CAN 比特率设置为**100kbp**、每帧** 2 字节**、然后发送内核文件。
    6.等待~5 秒、然后切换为**1 Mbps**、每帧** 8 字节**以发送应用程序固件。
    7.重置引导模式并再次执行下电上电。

    但是、完成这些步骤后、我未观察到器件上的固件行为发生任何变化。

    此外、我使用分析仪监控 CAN 总线。 可以看到 Linux 主机正在按预期传输数据。 根据文件、应从 CAN ID **0x02**收到确认、但我没有观察到任何此类答复。

    我还尝试使用 C2000Ware_26_00_00\utilities\flash_programmers\dcan_flash_programmer\dcan_flash_programmer。 它报告应用程序已成功加载、但我仍然看不到硬件行为有任何变化。


    您能否帮助我确定出可能出现的问题或建议进行任何其他检查?

    谢谢你。

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

    您好:

    根据文档、应从 CAN ID **0x02**收到确认、但我没有观察到任何此类响应。

    CAN ID 0x02 的缺失确认强烈表示器件根本没有进入 CAN 引导模式。

    在使用默认引导选择时、选择 CAN 引导时、您的引导引脚配置 (GPIO72=1、GPIO84=0) 是正确的。 但是、引导 ROM 将默认的 CAN 引脚 GPIO59 (TX) 和 GPIO58 (RX) 用于 CAN 引导选项 0。 您的设置使用 GPIO4/GPIO5、这对应于 CAN 引导选项 1 — 这需要将 BOOTDEF 配置为 0x22(首先通过仿真引导进行测试,然后考虑 OTP 编程)。

    如果没有这种配置、器件会进入 CAN 引导模式、但会侦听错误的引脚、从而解释它永远不会确认传输的原因。

    ]我还尝试使用 C2000Ware_26_00_00_00\utilities\flash_programmers\dcan_flash_programmer\dcan_flash_programmer。 它报告应用程序已成功加载、但我仍然看不到硬件行为的任何变化。

    主机编程器期望手动修改闪存内核.txt 的字节 3 和 4 以反映位时序变化。 请确认您已完成以下操作:

    来源:CAN 闪存编程应用手册

    此致、
    马特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在使用默认引导选项时、选择 CAN 引导时、您的引导引脚配置 (GPIO72=1、GPIO84=0) 是正确的。 但是、引导 ROM 将默认的 CAN 引脚 GPIO59 (TX) 和 GPIO58 (RX) 用于 CAN 引导选项 0。 您的设置使用 GPIO4/GPIO5、这对应于 CAN 引导选项 1 — 这需要将 BOOTDEF 配置为 0x22(首先通过仿真引导进行测试,然后考虑 OTP 编程)。

    尊敬的 Matt:

    boot_modes.h 文件中  

    #ifndef Brom_boot_modes_H
    define BROM_BOOT_MODES_H

    #define CAN_BOOT 0x22U          // 0x02U //GPIO59;GPIO58
    #define CAN_BOOT_ALT1 0x02U   // 0x22U // GPIO04;GPIO05
    #define CAN_BOOT_alt2 0x42U   //GPIO19;GPIO18
    #define CAN_BOOT_ALT3 0x62U   //GPIO37、GPIO36
    #define CAN_BOOT_ALT4 0x82U    //GPIO63、GPIO62
    #define CAN_BOOT_SENDTEST 0xA2U //GPIO59;GPIO58
    #define CAN_BOOT_ALT1_SENDTEST 0xC2U //GPIO04;GPIO05
    #define CAN_BOOT_ALT2_SENDTEST 0xE2U //GPIO19;GPIO18

    我已经将 CAN_BOOT 值从 0x02 更改为 0x22。 不过、我还是面临着同样的问题。


    主机编程器期望手动修改闪存内核.txt 的字节 3 和 4 以反映位时序变化。 请确认您已完成此操作:

    是的、我已经手动更改了字节 3 和 4 的值 0xC0 和 0x7A。 所以内核文件是 这样的  


    AA 08 C0 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00
    00 00 00 00 41 00 42 16
    0A 00 00 00 D0 01 00 00 00 00 26 00 00 B3 19 01 00 D0 00 00 B4 22
    02 00
    1E 00 00 00 B2 01 D0 05 01 00 F3 05 01 00 D5 05 01 00 DA 05 01 00 DF 05 05.
    01 00 E4 05 01 00 E9 05 01 00 C6 05 01 00 EE 05 01 00 AD 05 01 00 B2 05
    01 00 B7 05 01 00 C1 05 01 00 BC 05 01 00 CB 05 01 00 CB 05 01 00

    更改后 、我尝试运行.\dcan_flash_programr.exe -d f28p65x -k can_flash.txt -a gpio_ex2_toggle.txt -v
    现在我遇到了错误发送 CAN 帧问题。  

    70 发送 CAN 帧时出错?

    0
    69
    0
    6f
    0
    2E
    0
    68 发送 CAN 帧时出错?

    0
    0
    0
    0
    0 发送 CAN 帧时出错?

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

    您好:

    要确认:您还为 CAN 引导 0x22 配置了器件的仿真引导配置寄存器? 如果您尚未并且正在使用默认引导选择表、则器件将使用 GPIO 58/59 进行引导。

    此主题可能相关:  LAUNCHXL-F28P65X:使 CAN 闪存编程示例工作 

    此致、

    马特