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.

[参考译文] TMS320F28379D:EEPROM 仿真-如何避免擦除包含校准数据的闪存扇区...

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/986878/tms320f28379d-eeprom-emulation---how-to-avoid-erasing-of-flash-sector-containing-calibration-data

器件型号:TMS320F28379D

大家好、

我正在尝试为 EEPROM 仿真开发一个基于 MATLAB/Simulink 的参考示例。

我使用了闪存的扇区 N 来保存校准数据。 我在系统初始化期间将这些校准值复制到 RAM、允许用户修改/更新它们、然后将更新后的参数值保存到闪存(扇区 N)。 现在一切正常。

但存在一个小问题。 当我们构建代码并下次将其加载到闪存中时(从 MATLAB/Simulink)、我们将擦除整个闪存并加载.out 文件。

因此、之前在扇区"N"中更新的校准参数现在将被擦除并再次加载默认值。

每次我们构建模型并从  MATLAB/Simulink 下载代码时、我们都会看到这个问题。

我的问题是:

如何避免擦除包含校准数据的闪存扇区?

现在、作为构建和加载过程的一部分、我们正在调用 runProgram.js 文件、我认为该文件负责加载操作。

在脚本内部、以下代码行可能正在执行擦除操作。

//加载程序-------------------------------------------------------
打印("\n***正在将程序加载到目标...")
debugSession.memory.loadProgram (programName);

那么、我们如何确保下次用户想要下载模型文件时、他不会接触校准扇区。

在 CCS 中、我们可以取消选中要擦除的扇区。  如何使用 runProgram.js 脚本实现相同的目标?

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

    Venkatesh、

    我们还应该能够为脚本复制"取消选中扇区"。

    我们将在一天或两天内返回给您、并提供详细信息。

    谢谢、此致、
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="140900" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/986878/tms320f28379d-eeprom-emulation---how-to-avoid-erasing-of-flash-sector-containing-calibration-data ]CCS 中、我们可以取消选中要擦除的扇区。  如何使用 runProgram.js 脚本实现相同的目标?[/quot]

    您可以使用 DSS 闪存选项 API。

    请参阅:

    /ccs/ccs_base/scripting/docs/DS_API/com/ti/debug/engine/scripting/Flash.html

    /ccs/ccs_base/scripting/docs/DS_API/com/ti/debug/engine/scripting/Options.html

    DSS 示例使用了以下中的一些 API:

    /ccs/ccs_base/scripting/examples/DebugServerExamples/f28335_flash.js

    例如、如果您希望调整闪存设置、以便仅擦除扇区 N、则可以执行以下操作:

    session.flash.options.setString("FlashEraseSelection","Selected sectors only (仅限扇区);

    session.flash.options.setBoolean("FlashC28Bank0Sector13",false);
    上面的第一行将把闪存选项更改为只擦除所选扇区。 由于默认情况下选择了所有扇区、因此上面的第二行将取消选择(取消选中)扇区 N (将其设置为"false")。
    请注意、我使用 F28377D 对上述内容进行了测试。 我不确定 F28379D 的 ID 名称会有多不同。 我猜它们是相似的(您可以通过运行  Session.flash.options.printOptions (".*")来确认它们是相似的、以获得完整的选项/ID 列表)。
    谢谢
    Ki