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.

[参考译文] 编译器/LAUNCHXL-F28377S:更改闪存中的数据

Guru**** 2487425 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613419/compiler-launchxl-f28377s-altering-data-in-flash

器件型号:LAUNCHXL-F28377S

工具/软件:TI C/C++编译器

我想将一些数据存储在闪存中、而不是我的程序。  在将常量数组从闪存自动复制到 RAM 后、我的程序从 RAM 运行。  我希望能够改变闪存中的常量数组、以便下次加载程序时、它使用新刷写的数据。  我有三个问题:

1.我是否可以只刷写常量数组(在离开程序的同时,出于安全原因,我希望将它们分开)?

2.能否使用 DSS Java 例程来刷写常量数组中的数据? (如果是、如何操作?)

3.我似乎无法从映射文件中得知数据在加载到 RAM 之前在闪存中的位置。 (它仅说明数据将在 RAM 中的位置)。  在哪里可以找到此信息、以便知道在哪里加载数据?

谢谢你

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

    1.是的、可以。 使用 #pragma DATA_SECTION ()指令将常量数组分配到专用闪存扇区(不要将其用于.text 等其他段)。 这样、您就可以单独擦除该扇区、并根据需要对新数据进行编程。 为此、您可以在 TI 的 CCS 闪存插件或 UniFlash 中选择要擦除的扇区。 并使用"避让范围"功能加载更新的 COFF 文件(包含更改的数据)。 使用此功能、您可以提供不希望加载闪存工具的范围-这样、闪存工具将只擦除和编程从 COFF 文件中获取的更新数据。 或者、您可以创建一个仅包含常量数组的单独 COFF 文件并将其加载(选择擦除设置、以便闪存工具只擦除属于 COFF 文件一部分的扇区)。

    2.我会请我们的 DSS 专家在这方面为您提供帮助。

    3.通过使用 #pragma DATA_SECTION ()指令,您可以知道该位置,因为您将使用 #pragma 来告知该位置

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

    对于2)、不能使用 DSS API 直接写入 C2000上的闪存。 只能通过程序加载操作(即 debugSession.memory.loadProgram())写入闪存。

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

    感谢您提供信息。 这很有帮助。

    Ricky --如果我用数据创建 COFF 文件,我可以执行 loadProgram(),然后使用数据加载范围(正如 Vamsi 所建议的那样)?

    如果是、创建仅包含数据的 COFF 文件的最佳方法是什么?
    理想情况下、我希望通过 C 或 Java 创建它。 数组的格式是否足够简单、可以从"零开始"创建?
    如果是、该格式是什么?

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

    如果您只想将特定模式编程到闪存中、我建议创建一个二进制文件、然后使用 UniFlash 将二进制文件加载到闪存中。 您可以使用支持十六进制格式的文本编辑器创建二进制文件、并以这种方式输入模式。

    加载二进制文件时、需要在 UniFlash 中指定起始地址。 我建议先用小模式进行尝试、以确保十六进制文件中的格式/端字节序正确(您可以在加载后使用 UniFlash GUI 中的"Memory"视图检查闪存内容)。

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

    希望您能够通过使用 UniFlash 加载二进制文件在闪存中对模式进行编程。
    我现在要关闭此主题。 如果您有其他问题、可以打开新主题。

    谢谢、此致、
    Vamsi