TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

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

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

Susan Yang:

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

请问能否具体说明一下?

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

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

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

user6413985:

回复 Susan Yang:

我查看CRC 的方法就是把 .out 把打包成 .zip 文件。然后直接打开zip 文件, 有一个属性就是CRC的。 我也比对了前后编译生成的两个.OUT 文件,里面的内容也有不一样的地方,用的是beyond compare 工具做的比较。我在网上查过一些资料,有人说会把时间戳信息加到.OUT 里面,所以每次编译时间都不一样,导致.OUT 也不一样。但是找不到相关的资料,也没有解决方案。

user6413985:

回复 Susan Yang:

关于“每次重新编译后生成的.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 工具有什么选项或者编译选项的问题?

Susan Yang:

回复 user6413985:

我按照您的上述8个步骤测试了一下TI例程,两个out文件发现了不同的地方。

我会在之后给您回复

user6413985:

回复 Susan Yang:

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

Susan Yang:

回复 user6413985:

我这边测试TI例程的话是只有第一行不同的。

请私信下您的工程,我来测试一下,谢谢

user6413985:

回复 Susan Yang:

您好,已经私信你了。 这个工程非常简单。选择Rebuild Project 的话,.OUT 会有两行不一样的地方。第一行是时间导致的,那么另一个中间行不同是什么原因导致的。

Susan Yang:

回复 user6413985:

我将工程build和rebuild生成hex文件对比了一下,发现hex文件是完全相同的

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

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

e2e.ti.com/…/81

user6413985:

回复 Susan Yang:

好的, 非常感谢!

赞(0)
未经允许不得转载:TI中文支持网 » 每次编译生成的.OUT 文件的CRC都不一样
分享到: 更多 (0)