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.

[参考译文] 编译器:hex2000生成具有数据间隙的 S19文件

Guru**** 2534260 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/744444/compiler-hex2000-generate-s19-file-with-gap-in-data

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

您好专家、

我的客户使用编译后建议在 CCS 中生成 S19文件:

${CG_TOOL_HEX}-m2 "${BuildArtifactFileName}"-o "${BuildArtifactFileBaseName}.S19"-order LS -memwidth 16 -romwidth 32

但它们在数据方面存在一些差距、如下所示:


您能告诉我为什么代码中有一个短行(3093行)吗? 我应该如何避免这种情况?

他们希望以某个偶数结尾的地址。

 

谢尔登

谢谢

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

    数据中没有间隙。  这些都是有效的 Motorola-S 格式记录。  格式未指定记录必须对齐或必须具有特定长度。  任何将这些记录作为输入的内容都不应考虑记录的对齐或长度。   

    回想一下、C28x 器件将存储器寻址为16位字、而不是8位字节。   

    3093行是地址0x3f4130的记录、其中包含1个16位字。  所有其他记录都包含16个16位字。  3094行是地址0x3f4131的记录、其中包含16个16位字。

    虽然这不违反 Motorola-S 格式规范、但我同意出现长度为1字的记录是不寻常的。  我不知道为什么会发生这种情况。  我将向专家咨询。   

    同时、我建议您了解为什么不管使用这些 Motorola-S 记录、都无法处理只有1个字的记录、或不对齐的记录。  这个问题需要解决。  或选择的其他格式、或类似的格式。

    谢谢、此致、

    乔治

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

    您使用的是什么版本的 C28x 编译器工具(而不是 CCS)?

    谢谢、此致、

    乔治

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

    感谢你的帮助。 我使用的是18.1.3.LTS。
    我的客户在其上部机器软件中需要一行16个字的数据进行 ECC 检查、他们希望该结构可以相同以方便处理。

    谢尔登
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有一个名为 srec_cat 的免费实用程序、它具有许多用于合并和重新生成 SRecs 记录(以及许多其他类型的十六进制记录)的功能。 它可以处理填充未使用的空间并生成所需大小的记录。 我使用它来重新定位存储器中的 SRrecords、并将多个文件合并为一个。 您 可以在以下网址找到它:srecord.sourceforge.net、您可能会发现它对您有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、我一定会再来的!