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.

[参考译文] TMS320F28377D:该程序仅使用 DFU 以64位的间隔对存储器进行写入。

Guru**** 2614265 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/683544/tms320f28377d-the-program-only-wrote-the-memory-at-64-bits-intervals-using-dfu

器件型号:TMS320F28377D
Thread 中讨论的其他器件:controlSUITEC2000WARE

我们按照之前的问题检查:e2e.ti.com/.../678896

我们使用 CCS 片上闪存检查扇区 F 以擦除存储器、这是可以的。

我们 通过 DFU (内核190)分步调试应用程序、发现该程序只以64位的间隔写入存储器。

我们认为这是关键问题。

然后、我们使用 CCS 将 txt 文件直接写入闪存、写入的存储器如下所示:

为什么会出现此问题?

我们使用 C:\ti\controlSUITE\device_support\F2837xD\v190下的内核文件

您能提供一些建议吗?

非常感谢!

此致

祝你好运

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

    F2837x 上的闪存 API 始终一次对64位进行编程。 这是器件上的技术和闪存包装程序固有的。

    由于您能够在连接仿真器的情况下进行调试、因此您应该能够了解它为什么会跳过其他64位内存。

    我想它与您的十六进制文件有关。 确保将其放入正确的十六进制文件中。 您可以看到内核的 CCS 工程编译后处理步骤、以查看将闪存应用.out 文件转换为正确的十六进制文件所需的条件。

    由于您显示的存储器正在一起更新且是连续的、因此应将其存储在十六进制文件中、并作为单个数据块与 USB 器件进行通信。

    十六进制格式包含以下内容:块地址、块大小和块数据。 您可以在内核以及描述十六进制文件数据格式的 TRM 中看到这一点。 请在调试时参考此内容。

    希望这对您有所帮助!

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

    尊敬的 Sal:
    感谢您的建议、我们将检查 hex 文件。
    BTW、我们使用 hex2000将.out 文件变为.txt 文件。 后缀文件是否错误?
    请 请给出一些建议。
    非常感谢!

    此致
    祝你好运

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

    文件扩展名无关紧要。 .txt 完全可以接受。

    此致、
    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Sal:
    材料是关于十六进制格式文件吗?
    www.ti.com/.../spru513p.pdf (器件为12.2-1)

    非常感谢!
    此致
    祝你好运
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    祝你好运、

    是的。 第12节介绍了十六进制实用程序。 在 sci 闪存内核中、我们调用 hex2000实用程序作为编译后处理步骤。 您可以在 CCS 工程属性中看到这一点。

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

    您好 Sal:

    我们检查 txt 文件的格式、但没有发现任何内容。 下面是我们的分析和 txt 文件。

    e2e.ti.com/.../Copy-of-TI_E7709951EE9598986E78A48B_.xlsx

    您能帮您提供有关该问题的一些建议吗?

    非常感谢!

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

    这很好奇。 我不知道为什么内核只对其他块进行编程。

    您能否将内核加载到 RAM 中、然后开始发送闪存应用并开始对此进行调试? 在连接调试器的情况下将内核加载到 RAM 中。 您可以通过 Visual Studio 项目发送数据、并在内核和 Visual Studio 项目中设置断点以逐步完成该过程。 如果内核在十六进制文件中格式正确、我不确定为什么内核会跳过要编程的数据。

    请告诉我您看到的内容。

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

    您好 Sal:

    好的、明白了、我将拜访客户以调试它、并参考了您的建议。

    BTW、hex2000版本和以下版本是否有要求?

    非常感谢!

    此致

    祝你好运

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

    hex2000中不应有任何影响这一点的变化。

    我建议使用 C2000Ware 中提供的最新版本。

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

    您好 Sal:

    但是、当我们使用闪存编程器进行通信时、我们需要逐步调试内核、代码始终位于下图的行中。 请帮您提供调试内核的建议吗?

    我们使用以下程序。

    ..\ti\controlSUITE\device_support\~Utilities\serial_flash_programmer

    ..\ti\controlSUITE\device_support\F2837xD\v180\F2837xD_Examples_Dual\F2837xD_sci_flash_kernels

    此致

    祝你好运

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是因为、当你单步执行时、你还需要单步执行串行闪存编程器。 如果 PC 已完成发送一个字节并正在等待响应、并且如果器件错过了该字符、它将处于无限循环中。

    您需要同时调试主机和器件以正确推进程序。

    此外、您是否正在使用 C2000Ware 的最新版本? 您可能希望尝试此操作。 如果这是内核的问题、则可能已经更正了。

    此致、
    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否正在使用 C2000Ware 中的最新内核? 我不知道您看到的错误、但它可能已在较新版本中修复。

    此致、
    SAL