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.

[参考译文] CCS/TMS570LS0432:闪存算法返回错误;数据部分未进行64位对齐- ECC 问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/843887/ccs-tms570ls0432-flash-algorithm-returned-error-data-section-not-64-bit-aligned---issue-with-ecc

器件型号:TMS570LS0432

工具/软件:Code Composer Studio

您好!

我正在使用 FreeRTOS 运行闪烁程序。 它已成功编译。 但是、我在将代码加载到 MC 时遇到以下错误。

--------------------

CortexR4:文件加载程序:存储器写入失败:闪存算法在闪存编程期间返回一个错误。 注意:自动 ECC 生成已打开、请确保数据段在您的-链接器文件中对齐64位内存;或者、在片上闪存设置中关闭自动 ECC 生成

----------------------

我已关闭"调试"下的 ECC 生成、"属性"下的链接器选项。 我可以分享任何相关的屏幕截图。 请告诉我这个问题。

此致

Navin

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

    Navin、

    您能否发送此屏幕截图:

    在调试会话中、这来自工具菜单上的"片上闪存"菜单项。

    如果不在调试会话中、您也可以通过转至 BUG 按钮旁边的向下箭头来访问这些设置。  选择 Debug Configurations。  然后在左侧选择您的项目、然后您可以导航到右侧的设置。

    此致、

    John

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

    尊敬的 John:

    PFA 所需的屏幕截图。 我取消选中了两个 ECC 生成选项、然后进行了构建和调试。 它产生了相同的误差。

    此致、

    Navin

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

    Navin、

    当段未对齐64位对齐时、无论闪存设置如何、我们似乎都会提供该完整错误消息。  我将与能够展示如何修改链接器命令文件以确保段64位对齐的人员进行循环。

    John

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

    至...

    Johes 说:
    修改链接器命令文件以确保段是64位对齐的。

    (笑声) 换行方式如下...

    .data > SRAM

    至...

    .data > SRAM、align=64

    要了解有关对齐各节的更多信息、请在 ARM 汇编工具手册 中搜索标题 为"部分分配和放置"的子章节。   

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的回复。

    我之前没有看到链接器命令文件。 我之前没有将其添加到我的项目中。 但现在、我添加了它(针对我的器件)、并使用您建议的代码更改运行代码。

    但是、我在.bss 段上收到另一个与大小相关的问题。 我尝试了"整个程序优化"以查看大小是否减小、但没有结果。

    下面是错误屏幕截图。 在加载时、是否有方法可以减小代码中未初始化的变量存储器大小或增大段大小?

    此致、

    Navin

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

    Navin、

    您是否进行了其他更改?  您将.data 标记为 align=64。  但是、.bss 被报告为大于整个 RAM 存储器范围。  因此、即使 align = 64使.data 更大、这也不能解释.bss 单独比 RAM 更大的原因。

    链接器命令文件中已经有.data 段、或者您是否根据 George 的建议添加了该段。  如果它不在那里、那么您可能要做的是添加对齐到.bss 段。

    此致、

    John

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

    尊敬的 John:

    是的、.data 已经存在于文件中。

    我将、align = 64添加到.data 并得到.bss 段大小错误。

    之后、我还尝试向.bss 段添加 align = 64。 我收到相同的错误。

    我应该增大 RAM 存储器范围并尝试吗? 请给出建议。 我只是使用 RTOS 运行闪烁的演示应用程序。

    此致、

    Navin

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

    尊敬的 John:

    pfb 没有任何 align 命令的代码的带有内存分配部分的屏幕截图。 由于某种原因、.bss 似乎超过了32KB 的 RAM。

    此致、

    Navin

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

    尊敬的 John:

    我在这里部分确定了问题。 FreeRTOS 有5个不同的 heap.c 文件。 当我使用其中很少的代码时、.bss 被分配了更大的大小、因此会引发错误。

    当我使用特定的堆文件时、它会成功构建并进入调试模式。

    如果您知道 FreeRTOS、您可以帮助我简要说明堆管理导致此问题的原因。 如果不是、您可以关闭此线程、将其标记为已解决。

    此致、

    Navin