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/TMS320F280045:hex2000显示"01080000h 上的.out 段(.ecc#)位于未配置的存储器中

Guru**** 2528060 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/941341/ccs-tms320f280045-hex2000-says-section-x-out-ecc-at-01080000h-falls-in-unconfigured-memory

器件型号:TMS320F280045

工具/软件:Code Composer Studio

您好!

我有一个 F280045项目、我启用了闪存 ECC。  我根据 SPRS945C 表6-2 (即组0为0x01080000)使用正确的起始地址、并使用涵盖的闪存每8个字节1个字节的长度、将 ECC 存储器范围添加到链接器命令文件存储器部分。  这一切都经过测试并运行良好(编译、运行并能够检测 ECC 错误)。 我需要将输出文件转换为十六进制文件以进行刷写。

我在 CCS 编译->步骤->编译后处理步骤中使用了以下内容:

"${CG_TOOL_HEX}"-i "${BuildArtiftFileName}"-o "${BuildArtiftFileBaseName}.hex"-romwidth 16

成功编译和链接后、hex2000应用程序会向我发出以下警告:

警告:01080000h 上的 dsp.out (.ecc2)部分落在未配置的内存中

实际上、0x01080000之后的存储器地址不包含在生成的十六进制文件中。

我尝试删除了编译后处理步骤、并在工程属性上使用了 C2000十六进制实用程序选项(我认为应该是等效的)。   我启用了该实用程序、选择了 Intel 输出并将 romwidth 选项配置为16。  我在控制台中获得相同的警告、十六进制文件仍然不包含 ECC 存储器范围。  我添加了创建映射文件输出的选项、内容部分不会列出 ECC 存储器范围。

我从 SPRU513中了解到、范围定义的链接器命令文件将是"已配置的存储器"、用于创建十六进制文件、但 ECC 存储器似乎不是这样。  

我有一个用于 TMS570LS033x 的类似项目、也使用 ECC、它在使用与上述步骤相似的编译后处理步骤时没有问题(romwidth = 32)

我希望避免复制命令文件中已指定的链接器命令文件、以使用 hex2000 ROMS 指令(尚未尝试、不确定这是否有效)。  我是否可以尝试其他操作、或者这是在十六进制输出中包含 ECC 范围的唯一路径?

提前感谢、

Jose Lopez

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

    请查看您是否有 此论坛主题中描述的问题。  总之、请确保链接器命令文件中的所有内容都位于第0页。

    请告诉我这是否解决了问题。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的回复。  我的所有闪存相关范围都分配给 PAGE 0 (包括 ECC 范围)。  我将一些 RAM 范围分配给第1页。

    我尝试将它们全部分配到 PAGE 0、并得到相同的警告。

    谢谢、

    Jose Lopez

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

    我不确定正在发生什么情况。  我需要重现问题、然后进行调查。

    如果您提交了 CCS 项目、这将是理想的选择。  请按照文章 共享项目中的说明压缩项目、然后将该 zip 文件附加到您的下一篇文章中。

    如果这不实用、请压缩最终的可执行.out 文件并将其附加到下一篇文章中。  还显示了如何调用十六进制实用程序。  从 CCS Console (不是问题)视图复制并粘贴文本。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    我无法提交真实的 CCS 工程、但我创建了一个新工程并进行了类似配置、并获得了相同的结果。  查找附件。

    用于运行 HEX2000的命令及其运行结果如下:

    调用:C2000十六进制实用程序
    "C:/ti/ccs1000/ccs/tools/compiler/ti-cgt-c2000_20.2.1.LTS/bin/hex2000 --map="TestProject2.map"--romwidth=16 --intel -o "TestProject.hex""TestProject.out"
    转换为英特尔格式...
    "TestProject.out".text =>.text
    "TestProject.out".cinit =>.cinit
    "TestProject.out".ecc0 =>.ecc0
    "TestProject.out".ecc2 =>.ecc2
    "TestProject.out".ecc1 =>.ecc1
    警告:01080000h 上的 TestProject.out (.ecc0)部分落在未配置 的存储器中(已跳过)
    警告:01080001h 上的 TestProject.out (.ecc2)部分落在未配置 的存储器中(已跳过)
    警告:01082000h 上的 TestProject.out (.ecc1)部分落在未配置 的存储器中(已跳过)

    理想情况下、您应在导入后获得相同的结果。

    请注意、在链接器选项 中禁用 ECC 生成(--ecc = off)会删除警告。 生成的具有 ECC 的输出文件约为49K、而不生成 ECC 的输出文件约为17K。 这意味着 ECC 数据被添加到 OUT 中。  无论 ECC 数据如何、十六进制都不包含在内。

    e2e.ti.com/.../3157.TestProject.zip

    如果您需要其他信息、请告诉我。

    谢谢、

    Jose Lopez

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

    感谢您提交测试案例。  我可以重现问题。  它似乎是十六进制实用程序中的错误。  我提交了问题 EXT_EP-10052以进行调查。  欢迎您在我的签名中使用以下链接进行访问。

    谢谢、此致、

    乔治

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

    默认情况下、C2000十六进制转换实用程序认为 C2000二进制文件只能具有22位地址。  这以前是 true、但在 ECC 存在时不是如此。

    您可以使用十六进制转换实用程序命令文件解决此问题:
    /*
    hex2000 thisfile.cmd
    *
    ROM

       行1:origin=0x00000000 len=0x100000000