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:DCAN 闪存 Kenel + ROM 引导加载程序问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1591420/tms320f28p650dk-dcan-flash-kenel-rom-bootloader-issues

器件型号: TMS320F28P650DK

尊敬的 TI E2E 支持:

在过去几周中、我一直在尝试使用 P65x 上的 DCAN 内核来使用 DFU。 我已使用 PCAN 和以下文档通过 CAN 成功刷写了内核和自定义应用程序。

  1. 应用手册 C2000 微控制器的 CAN 闪存编程  
  2. C2000Tm 软件控制的固件更新流程

我构建并测试了示例闪存内核 dcan_flash_kernel_c28x_dual_ex5、并修改了应用程序、以在后处理构建步骤中输出特定的 sci-8 格式.txt 文件。 在运行闪存内核示例工程时、我能够使用 0x7FC0 的 BTR 更新到我的应用程序。 在调试模式下运行示例程序时没有问题。

此时、我相信我的内核和应用程序已经成功构建。 我现在尝试使用类似于 (2) 的过程转到远程固件更新、在我的应用中、我切换 GPIO 来为 BOOT 引脚上的电容器充电、并触发复位以使器件进入 CAN 引导加载程序以进行更新。 不幸的是,在这一点,即使我发送内核/应用程序没有任何反应。 我已经验证了以下每一项

  • BMSP OTP 编程为-> 0x5AFF4854 (GPIO 84 索引 0 GPIO72 索引 1)、用于引导表
  • BOOTDEF OTP 编程为-> 0x00066203(引导顺序为闪存 ALT 0、CAN ALT 3(与我的 CAN 引脚匹配)、SPIA ALT 0(未来开发)
  • 我的应用会根据收到的消息触发相应的引脚、复位器件并将其导入引导加载程序

我相信这是一个错误的时机问题。 在继续调试之前、我有几个后续问题、我找不到的答案。

  1. ROM 引导加载程序是否需要任何特定的时序要求? 我在 P65 TRM 的第 1074 页上看到、ROM 引导加载程序以 100kbps 的速率加载内核、但如果我错了、内核将以硬编码的速率加载到 RAM 中、无论我在中更改了 bitTimingReg 值(见下文)、一旦内核编译完毕、它就会重新同步到我的应用程序加载过程中指定的该 BTR 的值的位时序。 请参见下图。
  2. 我附加了构建闪存内核的前几个字节。 修改了 BTR、以匹配我在 dcan 示例工程第一张图片中置于 DCAN 引导中的内容。 如果 ROM 引导加载程序需要匹配时序(TRM 的第 1074 页)、我的 DCAN 内核中的前几个字节是否需要与 ROM 的这个 BTR 匹配?

image.png

image.png

感谢您的帮助。 如果您需要更多信息、请告诉我。

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

    您好、Ayden、

    该主题已分配给专家以供进一步审查和采取行动。 请注意、由于假日季节的原因、我们团队的响应时间可能会比平时慢。 我们将尽快回复您、感谢您对此事的理解。
    感谢您的查询,我们期待尽快为您提供帮助。

    此致、
    Zackary Fleenor

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

    尊敬的 Ayden:

    ROM 引导加载程序是否需要任何特定的时序要求? 我在 P65 TRM 的第 1074 页上看到、ROM 引导加载程序以 100kbps 的速率加载内核、但如果我错了、内核将以硬编码的速率加载到 RAM 中、无论我在中更改了 bitTimingReg 值(见下文)、一旦内核编译完毕、它就会重新同步到我的应用程序加载过程中指定的该 BTR 的值的位时序。 请查看下图。

    ROM 引导加载程序默认以 100kbps 运行。 主机编程器应以此速率发送应用程序、直到发送位计时值、然后它应以较高的比特率重新初始化并继续发送内核映像。

    我附加了我的构建闪存内核的前几个字节。 修改了 BTR、以匹配我在 dcan 示例工程第一张图片中置于 DCAN 引导中的内容。 如果 ROM 引导加载程序需要匹配时序(TRM 的第 1074 页)、我的 DCAN 内核中的前几个字节是否需要与 ROM 的此 BTR 匹配?

    不要将比特率直接传递到 DCAN_Boot 函数、而是调整 ex_5_bootloader_can_timing.h 中的 CAN_CALC_bitrate、CAN_CALC_CANCLK 和 CAN_CALC_BITTIME 参数、并将 0 传递给函数。 这将自动计算正确的时序值并将其分配给寄存器。

    此致、

    Alex