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.

[参考译文] TMS320F28377S:如何使用 F28377S/F280049中的二进制文件通过 SPI 对闪存进行编程?

Guru**** 2422790 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1193202/tms320f28377s-how-to-program-flash-memory-via-spi-using-binary-file-in-f28377s-f280049

器件型号:TMS320F28377S

我想通过 SPI 更新固件。

我想使用 CCS 构建一个闪存二进制文件。 有人能告诉我如何生成此文件吗?

然后、我想获取该文件、通过 SPI 对闪存进行编程。 我会按照以下步骤操作、但我不知道它是否起作用。

1.使用 RAM 函数执行闪存编程的所有步骤。

2.初始化 SPI 外设。

3.从 SPI 读取二进制文件并使用闪存 API 对全闪存进行编程。

有人能告诉我如何按照正确的步骤通过 SPI 对闪存进行编程吗?

谢谢

Cody

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

    您好 Cody、

    是的、您可以从 SPI 读取数据并使用闪存 API 将其编程到闪存中。 我的问题是:您是尝试在同一器件的闪存中并排使用两个不同的程序、还是尝试先使用 RAM 引导器件、然后再使用闪存引导器件? 如果您希望使用闪存引导程序、然后将另一个程序放置在闪存中的不同位置、则目前无法执行此操作、因为 C28x 编译器工具不支持可重定位的可执行文件。

    后一种方法应该可以正常工作--对于闪存程序构建选项,您需要启用 C2000十六进制实用程序,然后选择所需的格式。 您可以使用二进制格式或任何十六进制格式、具体取决于您的偏好。

    此致、
    Ibukun

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

    尊敬的 Lbukun:

    假设有一个新版本的工程、我使用十六进制实用程序来构建二进制文件。 我获取该文件并通过 SPI 从 PC 或其他处理器发送。 我将旧工程切换为在发送该文件之前等待并从 SPI 接收数据。 我的计划如下:

    1、跳转 RAM 中用于对闪存进行编程的自定义函数。

    2.禁用所有中断

    3.初始化 Flash()

    4.初始 SPI 外设。

    复制 CopyData()在 F2837xS_sci_flash_kernel 中,只需将 GetWordData 更改为 SPI

    关于我的上述步骤、它是否起作用?

    谢谢

    Cody

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

    Cody、

    我看不到这不起作用的原因。 本示例中的 GetWordData 旨在用作通用外设 Get 函数、因此您应该能够为 SPI 实现等效函数并使其正常工作。 SCI 函数位于 SCI_GetFunction.c 中以供参考。

    此致、
    Ibukun

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

    尊敬的 Lbukun:

    我会实现 SPI 接收函数、而不是 sciaGetWordData。 对于诸如"UINT32_t sciBoot (uint32_t BootMode)"的所有程序、我要将 sciBoot 复制到 spiFirmwareUpdate()的新函数、我只需用 spiaGetWordData 替换 sciaGetWordData 的内部函数。 执行此函数后、如果需要进行固件更新、我将使用 C2000十六进制实用程序来构建二进制文件、然后使用 USBtoSPI 发送此文件。 使用 FirmspiwareUpdate()接收此文件并执行更新闪存的过程。  那么、我想问您、这样一个流程是否正常工作?
    我的英语很差、感谢您耐心地帮助我。

    Cody

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

    Cody、

    是的、我看不到您计划的方法有问题。 它应该起作用。

    此致、
    Ibukun

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

    尊敬的 Lbukun:

    我将在 PC 基础上构建该工具、并在 C2000上创建接收函数。 在此期间、我会担心我错了。 因此,我想确保这个想法是正确和可行的。

    谢谢

    Cody