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.

[参考译文] TMS570LS0232:使用 F021闪存 API 擦除和写入闪存数据

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1362103/tms570ls0232-erasing-and-writing-flash-memory-data-with-f021-flash-api

器件型号:TMS570LS0232

大家好!

我需要通过引导加载程序从闪存中删除和添加数据。 我正在使用 F021 (2.01.01)闪存 API 代码(Fapi_setActiveFlashBank (Fapi_Flash))进行尝试、但代码不会每次编译、我遇到一些错误:
1) dabort.asm 中的"将寄存器和链接寄存器压入堆栈"
2-)"检查是否设置了位3、这表示 dabort.asm 中的 B0TCM 上不可纠正的 ECC 错误"
3-) sys_intvecs.asm 中的"prefetchEntry"
我无法编译任何闪存 API 代码、例如删除闪存存储器数据、添加数据或激活闪存组。
如何解决?

感谢你的帮助。

您好

法蒂赫

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

    尊敬的 Fatih:

    下面链接中有几个仅基于 F021闪存库的 CAN 引导加载程序示例。

    SafetyMCU_bootloader«引导加载程序- Hercules_examples/Hercules_examples - Hercules 处理器软件示例(TI.com)

    您能不能请参考与 TMS570LS04x 器件相关的示例?

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我查看了 TMS570LS04x 样片并发现我的配置是正确的。
    我根据闪存 API 2.01.01参考指南编辑了代码、但仍然出现相同的错误。
    我的代码正确、配置看起来正确。 我无法理解为什么我会遇到错误。

    谢谢。此致、

    法蒂赫

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

    尊敬的 Fatih:

    您能提供一个简单的项目来解决您所面临的问题吗?

    我想在结束时验证和调试该项目。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    很遗憾、我未获得共享项目的授权。

    我以前看到过3个错误、但现在我更新了代码、只看到"b prefetchEntry"错误。

    我将告诉您我使用的函数;
    Fapi_initializeFlashBanks();
    Fapi_setActiveFlashBank();
    Fapi_enableMainBankSectors ();
    Fapi_issueProgrammingCommand();

    无论我想要发送多少数据、都只发送8个字节的数据、然后出现"b prefetchEntry"错误。
    然后我在代码中添加了"_disable_interrupt_();"、但结果仍然没有变化。

    您能否提供一个将存储在 RAM 中的数据打印到 Bank0的简单示例?

    谢谢。此致、

    法蒂赫

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

    我有  CP15的指令故障地址和指令故障状态。 但我不知道在哪里使用它们。

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

    有关问题的更新:
    我在 F021闪存 API 2.01.01版参考指南中遇到了以下文章;
    "注意:F021闪存 API 库不能从与为 API 命令操作所选择的活动闪存存储体相同的存储体中执行。 在单组器件上、F021闪存 API 必须从 RAM 执行。"
    我正在尝试使用 BANK0中的闪存 API 将 RAM 中存储的数据写入 BANK0。
    这是为什么会出现 PrefetchEntry 错误吗?
    我见过关于从 RAM 运行闪存 API 的线程、但我不完全理解。 那么、您能否与我分享一个有关此主题的示例项目?

    谢谢。此致、

    法蒂赫

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

    尊敬的 Fatih:

    我正在尝试使用 BANK0中的闪存 API 将 RAM 中存储的数据写入 BANK0。
    这可能是我收到 PrefetchEntry 错误的原因吗?

    这并不意味着您不应该从 RAM 写入 BANK0。

    这意味着:

     如果 FAPI 库存储在闪存组0中、则您不应在组0上执行 FAPI 命令。

    如果您确实要执行此操作、则应将所有闪存 API 从闪存组0复制到 RAM。 一旦将闪存 API 复制到 RAM、则可以擦除和写入闪存组0中的扇区。

    请参阅下面的主题、了解更多详细信息:

    (+) TMS570LS3137:TMS570LS3137:在运行时编写闪存-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我通过使用另一个函数解决了我的问题。  

    谢谢。此致、

    法蒂赫