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.

TMS320F28377D: HEX文件生成, Data is being written to auto-generated file

Part Number: TMS320F28377D

Code Composer Studio Version: 11.1.0.00011

在CCS中配置HEX文件生成Motorola S M3格式,程序段数据可正常生成,数据段数据会自动生成一个扩展名为.m10,文件格式类似HEX的文件。查看改文件中地址信息为程序中Page1的 .econst段和自定义的const常量数据存储段。

1.是否有哪里我设置的不对,是否有什么方法可以生成一份合并的Hex文件,还是必须通过第三方工具来进行Hex文件的merge.

2.CCS 中C2000 Hex Utility文件生成的字节对齐和填充是否可以配置,应该如何操作。

  • 搜索了一下中英文论坛,找了一些关于这些问题的帖子,你可以参考一下:

    1、关于warning:https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/761417/compiler-tms320f28377s-warning-data-is-being-written-to-auto-generated-file

    2、关于hex文件的生成,一般在CCS中右键工程名,properties - build - C2000 Hex Utility中可以设置,这个wiki6.1.3.1.2. Build Properties也有说明。但是我记得生成的应该是intel格式的hex文件,不知道你生成的Motorola S M3格式是怎么设置的?

    另外,关于生成了两个hex文件,可以试试这里的小程序:e2echina.ti.com/.../hex2000-hex

    3、关于hex文件的merge:https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/199617/hex-mergehex

    4、关于字节对齐,编译器的说明中有介绍,比如3.15.2章节中有数据对齐,7.17中有域/结构体对齐

  • 感谢您的的答复。

    1.这个帖子我之前已经看到了,我也知道原因是在Page1中有初始化的const数据,所以hex将程序段和数据段生成了两份hex文件。我想问的是这是必须的吗,还是可以通过在CCS中做哪些配置生成一份合并程序段和数据段的hex文件。

    2.hex文件我已经正确生成了,文件生成的正确性也没有问题。properties - build - C2000 Hex Utility-Output format options中可以设置输出文件类型,如intel,motorola,ASCII

    3.Merge有很多工具可以完成的,无论是APP和Boot的hex Merge,还是程序段和数据段的Merge。回到第一个问题,这个CCS中是否可以通过配置完成程序段和数据段合并的Hex文件,还是必须通过编译后处理,调用工具来完成。

    4.对齐我理解的,我也可以设置的。这里想问的是生成的Hex文件的对齐,如128字节对齐,填充0xFF,重新计算CRC等,第三方工具都可以完成。问题同上,CCS中是否可以自动完成,还是必须编译后第三方工具来完成。

  • 收到,我会去咨询一下其他工程师后回复你

  • 你好,

    关于生成两个hex文件的问题,可以通过更改链接器命令文件来实现,具体的可以看一下这个帖子:https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/550845/why-lost-data-in-flash-during-converter-out-to-hex-use-lab5b/2014744#2014744

    关于对齐和填充的问题对方提到可以对齐并填充cmd文件中的输出部分来实现,不过他没有具体解释,我还在追问。

  • 谢谢,通过强行将const数据段放入Page0可以生成合并的Hex文件,就是调试的时候在Memory Broswer串口中要切换到程序段来看数据对应名称。

  • 感谢反馈!

  • 另外,关于对齐,工程师确实提到可以删除MEMORY分区中的“PAGE 1

    将“PAGE=1”的所有其他实例更改为“PAGE=0”

    可以看一下TI Linker Command File Primer,了解链接器命令文件的一般背景。

  • 不好意思,因为论坛里没有找到添加附件的位置,所以直接邮箱回复了,添加了Hex文件及相关说明,不知道您是否可以收到

  • 我看了一下我的邮箱,没有收到邮件,不知道你是发送到哪个邮箱地址了?

    另外,编辑框下面的“插入”种可以选择插入图像/视频/文件,有些格式的文件直接拖进编辑框里也可以。

  • HexFiles.rar

    工程师您好:
         1)TI Linker Command File Primer这个链接内的内容,我之前大致浏览过。可能我的问题没有表述清楚。
        2)论坛回复没有找到添加附件的地方,所以直接邮件回复,请您查看附件。
        3)附件中的HEX文件共四个如下:
                1.Boot HEX 分配到FLASHA-FLASHD
                2.App Hex 分配到剩余FLASH,其中Page0 和Page1的Hex 已经通过更改CMD文件,强行切换到Page0完成合并
                3.Merge文件,通过第三方工具将Boot和APP的Hex合并的文件。
                4.MergeAndAlign,最终的所需文件,将Merge后的Hex文件进行了128字节对齐,并填充了0xFF.
                5.各文件比较结果见Res1-3,已经通过开源软件转换为html文件,方便您查看。
                Note:因Dsp的每地址数据为16bit,第三方工具处理时会发生报错,所以生成的Boot Hex和App Hex中都将地址信息通过C2000Hex utility -General Options-Output as bytes rather than target addressing(--byte,-byte)选项扩展了两倍。
        4)可否不通过步骤3-4,通过在CCS Hex工具中进行配置,或编译后通过C2000Hex utility工具的脚本处理,直接生成所需文件4,不需要经过第三方工具:
                1.可以通过软件在App中增加Boot程序段数组,实现Boot和Hex的合并操作(无需第三方软件Merge操作),这个现在是可以实现的。
                2.通过配置可以更改对齐的话,无需第三方工具完成对齐,Bootloader时候文件可以直接使用(无需第三方软件Align操作)
                3.地址信息无需更改,Bootloader使用时代码段无需对地址进行乘除2的操作
  • 工程师您好,请问有C2000 Hex Utility相关的用户手册之类的吗,我去找找看对齐和填充指令之类的。