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.

[参考译文] TMS320F28075:hex2000 16位生成

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1016057/tms320f28075-hex2000-16bit-generation

器件型号:TMS320F28075

您好!
客户使用 CCS 10.3.1.00003和 CTG 20.2.5。

客户在使用具有以下配置的 HEX2000工具生成引导加载程序以生成 S 记录文件时遇到一些问题:

1。 生成 S-Record 文件

在当前状态下,可以将 S-Record 文件写入闪存,但当跳转到应用程序时,它会跳转到非法的 ISR()。 为了确定可能的差异、我们创建并比较了2个内存转储文件。 从原始 blinky 工程中删除一次、并在刷写 S-Record 文件后从引导加载程序中删除一次。 存储器转储可设置为多种设置、包括8位和16位。 8位显示屏缺少高字节


原始 Blinky 16位存储器

原始 Blinky 8位存储器

8位存储器转储比较相同、但16位存储器转储比较不同。 但是、S-Record 文件仅返回8位内存转储的数据。

是否需要使用其他任何 HEX2000选项/设置?

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

    我无法测试此解决方案以确定它是否正常工作。  但我有足够的信心让你尝试一下。

    添加十六进制实用程序选项--romwidth=16

    要了解原因、 请在 C28x 汇编工具手册中搜索 标题 为将数据分区到输出文件的子章节。  了解--romwidth 的影响,对于 Motorola 输出格式,默认值为--romwidth=8。  因为--memwidth=16--romwidth=8,这意味着有两个输出文件,一个用于偶数字节,另一个用于奇数字节。  我怀疑您的系统是否正确。

    请告诉我此建议是否解决了问题。

    谢谢、此致、

    乔治

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

    您好!

    客户在生成 S-Record 文件时仍有问题。 如果她设置-romwidth=8、她将获得两个 S-Record 文件、如您所述。 但是、终端客户的 PC 固件仅允许一个 S-Record 文件。 她尝试使用 srec_cat srecord.sourceforge.net 工具将这两个文件合并为一个文件、但-unsplit 选项添加了这两个文件的地址。

    如果她生成一个 S-Record 文件、且-romwidth=16、则该文件的内容似乎不正常。 她的客户的固件和 srec_cat 或 srec_info 都报告错误。

    她使用 driver_support 示例中的 blinky 项目来测试构建。 您是否知道将两个文件合并为一个文件的不同方法?

    此致、Holger

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

    我不熟悉实用程序 srec_info。  我怀疑它假定存储器是8位字节可寻址的。  使用--Motorola=3时,C28x CPU 或 hex2000生成的记录的地址部分不是这种情况。  在这种情况下、每个地址对应一个16位宽字。  srec_info 中是否有可配置为解决此差异的设置?

    谢谢、此致、

    乔治

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

    您好、George、

    是的、此工具的选项中有设置(srec_cat、srec_info、srec_cmp)。 她在"srec_cat -unsplit"中使用此选项、通过 hex2000 -romwidth=8 S-Record 文件从两个文件中生成一个。 该工具会生成一个 S-Record 文件、其中正确汇编了16位字、但遗憾的是、这两个文件的地址都添加到了一个地址中。

    (带有 srec_cat unsplit 的 S-Record 文件(添加了地址但正确汇编了16位字))

    她以最不同的态度尝试,但不幸的是没有成功。 她猜、hex2000 --romwidth=16生成的 S-Record 文件的行长度会导致问题。 这是奇数。

    (具有 hex2000的 S-Record 文件--romwidth=16)

    行长度为直线后、srec_info 将不再返回任何错误消息、她的客户端工具也会读取该文件。

    但遗憾的是、她没有找到将此 S-Record 文件转换为不同行长度的方法。

    SRec_cat 原则上可以执行此操作、但它会给她一条错误消息、使用 hex2000工具、她找不到设置行长度的方法。

    此致、Holger

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

    我必须承认、我对客户想要做什么感到困惑。  我还没有看到任何东西表明 hex2000所做的事情与它的工作记录方式不同。

    指定 hex2000输出的许多详细信息。  其中一个细节是一行上的数据量。  事实证明、大多数线路具有15个16位字(30 8位字节)的数据。  在一条 S3 Motorola 格式记录中、字节计数是线路上8位字节的数量、不计算 S3和字节计数本身。  在典型的线路上有...

    • 4字节地址
    • 30字节数据
    • 校验和的1个字节

    这总计为35个字节、或十进制为0x23。  这就是为什么有许多线路以 S323开头。  我不明白为什么0x23字节会导致问题、但显然确实如此。   

    [引用 userid="8038" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1016057/tms320f28075-hex2000-16bit-generation/3758905 #3758905"]使用 hex2000工具时,她找不到设置行长度的方法。

    遗憾的是、没有方法可以控制一条输出线路中的数据量。

    如何说明 S3记录中的地址对应于16位字的位置、而不是8位字节?

    以下是一个完全不同的建议。  我认为 srec_info 或其他相关工具之一可以读取二进制文件并将其转换为 Motorola 格式的十六进制文件。  如果正确、请使用带有--binary 选项的 hex2000创建二进制文件、然后将其转换为 Motorola hex 文件。  然后、您可以根据需要使用 srec_info 来格式化地址、字节计数、行长度等。

    谢谢、此致、

    乔治