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.

每次编译生成的.OUT 文件的CRC都不一样

1. 使用相同的源代码,同样的编译器和编译选项。每次重新编译后生成的.OUT 都是不一样的。这是为什么?

2. 在刚刚生成的工程里,直接删除.out 文件,然后直接在CCS 工具里点击 编译,生成出来的.out 和之前的内容也是不一样的?

请问有什么办法能让使用相同的源文件和相同的编译器,使得生成出来的.out 文件的CRC 保持不变。

  • user6413985 说:
    每次重新编译后生成的.OUT 都是不一样的。

    请问能否具体说明一下?

    user6413985 说:
    请问有什么办法能让使用相同的源文件和相同的编译器,使得生成出来的.out 文件的CRC 保持不变。

    请问您是如何生成CRC的?在 TMS320C28x Assembly Language Tools v20.2.0.LTS User's Guide  的8.9 Linker-Generated CRC Tables中

    给出实现的方法。理论上的话,如果两个部分的内容相同,并且两个部分的大小相同并且在字节的边界上对齐,则它们的CRC值将相同。

  • 我查看CRC 的方法就是把 .out 把打包成 .zip 文件。然后直接打开zip 文件, 有一个属性就是CRC的。 我也比对了前后编译生成的两个.OUT 文件,里面的内容也有不一样的地方,用的是beyond compare 工具做的比较。我在网上查过一些资料,有人说会把时间戳信息加到.OUT 里面,所以每次编译时间都不一样,导致.OUT 也不一样。但是找不到相关的资料,也没有解决方案。
  • 关于“每次重新编译后生成的.OUT 都是不一样的” 我再举例子说明一下:
    1. 使用CCS 创建一个新项目TEST,这个项目就一个main 函数。
    2. 编译生成TEST.OUT。
    3. 手动重命名 TEST.OUT 为 TEST_v1.out(相当于把TEST.OUT 删除了).
    4. 在CCS 工具中点击编译,新的TEST.out 生成。
    5. 使用beyondcompare比较TEST.OUT 和 TEST_V1.out 发现第一行有不一样的地方,其他行都一样。
    6. 手动重命名 TEST.OUT 为 TEST_v2.out.(相当于把TEST.OUT 删除了).
    7. 在CCS 工具中点击重新编译所有,新的TEST.out 生成。
    8. 使用beyondcompare比较TEST.OUT 和 TEST_V2.out 发现有很多行都不一样。

    在整个过程中源码,编译器,编译选项都没有改变,但是结果就是不一样。是不是CCS 工具有什么选项或者编译选项的问题?
  • 我按照您的上述8个步骤测试了一下TI例程,两个out文件发现了不同的地方。

    我会在之后给您回复

  • 我认为您的猜想是正确的。

    目前TI的工程都是COFF的,而在下面文档说明中

    链接: https://www.ti.com/lit/an/spraao8/spraao8.pdf 

  • 首先,谢谢你回复。
    1. 这个回答解答了我所举例的第5步的疑问。生成.OUT 的时候会把时间信息加进去。
    2. 但是怎么解释 第7,8步的时候,rebuild project 之后,.OUT 文件有那么多的差异。理论上也应该是第一行不同,其他行相同。但是实际上除了第一行,还有其他行也有不同。这个怎么解释呢?
  • 我这边测试TI例程的话是只有第一行不同的。

    请私信下您的工程,我来测试一下,谢谢
  • 您好,已经私信你了。 这个工程非常简单。选择Rebuild Project 的话,.OUT 会有两行不一样的地方。第一行是时间导致的,那么另一个中间行不同是什么原因导致的。
  • 我将工程build和rebuild生成hex文件对比了一下,发现hex文件是完全相同的

    也就是说,这基本是在build和rebuild时CCS底层编译链接时的不同,导致了out文件不一致

    建议您去英文CCS论坛去咨询在专门的CCS工程师

    e2e.ti.com/.../81
  • 好的, 非常感谢!
  • 很高兴能帮到您!