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.

[参考译文] MSPM0G1106:相同工程中的不同二进制文件在单独的计算机上构建

Guru**** 2837210 points

Other Parts Discussed in Thread: SYSCONFIG, MSPM0G1106

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1577360/mspm0g1106-different-binary-files-from-identical-project-builds-on-separate-machines

器件型号:MSPM0G1106
主题中讨论的其他器件:SysConfig

描述:两个开发人员从同一个 Git 存储库构建了同一个包含最新更改的 CCS 项目。 但是、生成的.bin 文件不同。  

环境:

IDE:Code Composer Studio(版本:12.7.1.00001)
SDK:MSPM0 SDK(版本:2.1.0.03)
编译器:TI Clang v4.0.0.LTS
SysConfig:1.19.0
目标器件:MSPM0G1106

重现步骤:

两个开发人员都从同一个存储库中提取了最新的更改(Git log 确认了相同的提交)。
在两台机器上清洁和重建项目。
使用 CMP 比较生成的.bin 文件;发现差异。
文件名相同;结果仍然不同。

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

    尊敬的 Laurie:

    您能否确认两个开发人员使用相同版本的 SDK 和 SysConfig? 如果工程没有配置的可用版本、CCS 将拉取同一 SDK 或 SysConfig 的其他可用版本。

    可通过“Project Properties“->"Products"查看“查看。“。

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

    您好 Luke、

    两个开发人员拥有相同版本的 SDK 和 SysConfig。 两个开发人员的屏幕截图附在下面。  

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

    尊敬的 Laurie:

    我不希望根据这些信息出现任何差异。 开发人员对器件进行编程时、它的工作原理是什么?

    我假设两个开发人员具有相同的优化设置、编译器设置、链接器设置等?

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

    您好 Luke、  

    感谢您的跟进。

    这个项目已经过多次清理和重建,两个开发人员都提交了同一个 Git。  

    我们尝试了以下测试:  

    • 比较的配置和链接器文件(device_linker.cmd、.syscfg、ti_msp_dl_config.c/h 等)—所有这些都是相同的。  
    • 已验证两个编译是否使用相同的 SDK、SysConfig 和编译器版本。  
    • 向 Properties→Build→Linker→Advanced Options→Miscellaneous path 中添加了--fidential 函数、结果仍然不同。  

    但是、我们发现、在比较由链接器生成的.map 文件时、这些文件不同、特别是在 driverlib 函数的放置方面(例如,DL_CRC_calculateBlock16 等函数和其他 DL_例程出现在不同的闪存地址)。  

    两个生成的二进制文件都可以在硬件上正常运行、但由于 driverlib 部分的顺序更改、闪存布局有所不同。  

    在此帖子中、我将两个.map 文件作为.txt 文件包含、以供参考。  

    谢谢您、  

    Laurie

    e2e.ti.com/.../battery_5F00_management_5F00_system1.map.txte2e.ti.com/.../battery_5F00_management_5F00_system2.map.txt

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

    尊敬的 Laurie:

    左侧是 map1、右侧是 map2。 2 个文件之间的.o 差异很大、I2C 差别最大、并且 map1 文件具有无符号整数除法的 ARM 库、而右侧没有'。 我建议查看这些方面、因为 Map2 上的编译函数明显较多、所以 2 个文件之间必须有一些区别。

    我专门对 i2c.o 进行了一些过滤、发现了这些与 map2 中包含的橙色的差异、而不是 map1。

    在我看来、它们的构建方式不同、如果您具有相同的 include 和 SDK 版本、我认为这两个选项之间的优化设置是不同的

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

    您好 Luke、

    我们确认优化设置相同。  

    但是、经过进一步调查、我们发现 SDK 中的 driverlib.a 文件差别很大。

    我们都下载了  

    MSPM0 软件开发套件 (SDK)  版本:2.01.00.03

    从 TI 网站 (https://www.ti.com/tool/download/MSPM0-SDK/2.01.00.03)

    但是、如下图所示、两个  driverlib.a 文件差别很大(大小分别为 459 和 152KB)。  我无法 在此线程中插入 driverlib.a 文件。  

    此外、我们还比较了哈希值:

     

    请告诉我们您对此的想法。  

    谢谢您、

    Laurie  

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

    尊敬的 Laurie:

    使用 152KB 的用户能否重新安装库?

    我目前没有安装 2.01、但查看我最旧的版本 (2.02)、我的文件大小为 476KB。