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.

[参考译文] CODECOMPOSER:hex2000二进制选项出现意外行为

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1472074/codecomposer-unexpected-behavior-of-hex2000-binary-option

器件型号:CODECOMPOSER
主题中讨论的其他器件:TMS320F280049C

工具与软件:

大家好!

我们目前在为 TMS320F280049C 微控制器固件生成二进制映像时遇到问题。 当生成具有二进制选项的映像时、它似乎会输出一个不包含任何填充字节的二进制、这使得二进制本身基本上是无用的。 我已经找到了一些关于此问题的帖子、其中包含了一些可能的解决方案、但这些帖子都没有按预期运行、或者我无法像描述的那样运行。

一种建议的解决方案是使用  tiobj2bin、我在代码生成工具中将其作为.bat 文件找到。 当我尝试使用固件的 out 文件运行时、显示"c28x files built with --abi=eabi are not supported (不支持使用--abi=eabi 构建的 C28x 文件)"、因为我们使用的是 eabi 构建。  在我们的情况下、是否有其他方法可以使用它、或者 eabi 构建是否不可能实现?

另一个建议的解决方案是使用 hex2000和--binary 和--image 选项。 首先,它抱怨,因为它需要 ROMS 指令在-映像模式,所以我试图找出我必须在这里添加什么。 浏览过一些帖子后、我似乎必须在 hex2000命令末尾添加一个单独的文件、该文件随后包含一个 ROMS 部分、其中说明起始地址和映像的长度。 在其他帖子中找到一些建议后、我的文件看起来是这样的:

Fullscreen
1
2
3
4
ROMS
{
ALL_MEM : origin = 0x83040, length = 0x8000
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

用于生成的命令为:

Fullscreen
1
hex2000 --memwidth=16 --romwidth=16 --diag_wrap=off --binary --image -o "image.bin" "image.out" ROMS.hex
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

很遗憾、由于语法错误、它无法使用这种方法

Fullscreen
1
2
3
ROMS
^
error: syntax error
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

由于我没有找到合适的文档来生成二进制映像、因此我想 在此试一下。 有人能告诉我 在构建有填充孔洞的过程中、生成一致的二进制映像的最简单方法吗? 即使是 hex2000的-阵列模式,它似乎是像它应该的工作方式。  可能使用另一个外部工具从 hex 文件生成二进制文件也更容易。  我知道、由于可能在开头填充、有必要为转换提供一个起始地址、但对我来说、定义固定长度(就像在 ROMS 指令中一样)没有什么意义。 当需要在 ROMS 文件中定义长度时、这会使编译变得更复杂、以将二进制大小减少到可能的最小长度。

此致

沃尔夫冈

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

    请按照 此论坛帖子中显示的说明进行操作。  要了解周围的环境、请阅读整个线程。

    要了解有关在 CCS 工程中使用十六进 制实用程序的详细信息、请参阅文章 CCS 中的十六进制实用程序。  最后一部分重点介绍了如何将十六进制实用程序命令文件集成到工程中。

    谢谢。此致、

    -George.

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

    您好、George:  

    我通过线程,试图调整一切相应的,并尝试相同的命令和相同的排列的参数,但行为仍然是相同的。 它始终输出消息  

    Fullscreen
    1
    2
    3
    ROMS {
    ^
    error: syntax error
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我还附上了用于 ROMS 指令的文件。

    e2e.ti.com/.../ROMS.txt

    我从 CCS 12.2.0 (ti-cgt-C2000_22.6.0.LTS)和10.2.0 (ti-cgt-C2000_20.2.LTS)尝试了 hex2000工具。 我没有想到有任何差异,但我甚至从 Windows cmd 和 PowerShell 执行该工具,但两个都输出相同的语法错误消息。

    我缺少什么吗?

    此致

    沃尔夫冈

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

    的问题 ROMS.txt 最后一个是行。  这里有一种方法可以看到它...

    Fullscreen
    1
    2
    3
    4
    % od -c ROMS.txt
    0000000 R O M S { \r A L L _ M E
    0000020 M : o = 0 x 8 3 0 4 0 ,
    0000040 l = 0 x 8 0 0 0 \r } \r
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    后面的字中 输出漏极 在大多数 Unix 系统上可用。  它一次转储一个字节的文件。  。 -c 选项显示字符、如果该字节不是可打印字符、则显示转义序列。  注\r 表示回车、\n 表示换行。  关注\r 个字符。  这不是典型情况。  在 Windows 文本文件中、每一行以...结尾。

    \r\n

    在 Unix 文本文件中、每一行以...结尾。

    \n

    ROMS.txt 、每一行以...结束。

    \r

    我不知道这是怎么发生的。  但这是需要修复的问题。  最好更改行尾以匹配系统中的其余文本文件。  也就是说、十六进制实用程序可以处理任一行的结尾。

    谢谢。此致、

    -George.

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

    您好、George:

    哇,这是真的很奇怪的文件最终只回车作为行尾,但我修复它,它现在工作.  它最初仅生成具有填充值的文件、但将地址调整为字节寻址在这里有所帮助。

    感谢您的帮助!

    现在、我只需找到一种更简单的方法来自动生成 ROM 文件、该文件末尾没有不必要的填充 似乎没有比从映射文件中提取信息更简单的方法了。

    此致

    沃尔夫冈