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.
您好!
我目前正在以下环境中进行开发、但我有一些问题。
Code Composer Studio:12.5.0.00007
编译器: ti-cgt-armllvm_3.2.0.LTS
使用的 MCU:MSMPM0G3507、CC234R05
如果您在该环境中构建以下代码①(NG case)、它将像这样嵌入在映射文件中。
.rodata 0 000001a8 00000018
000001a8 00000009 empty.o (.rodata.str1.117413490714450581041)
000001b1 00000009 empty.o (.rodata.str1.57731210584388587101)
此外、如果您在不同的文件夹中创建完全相同的工程、请在不同的工作区中导入和编译每个工程、
差异将出现、差异也将出现在.txt/.hex 文件中。
这有什么解决方案吗?
顺便说一下、如果您使用 ti-cgt-armllvm_2.1.3.LTS、则差异不会出现。
或者、如果您在下面的代码中像②(OK case)那样对其进行更改、差异将消失、
我正在寻找另一种方法、因为更改量和代码的可见性会受到影响。
项目设置(.project)和源代码已略有改动、因此请检查随附的 zip 文件。
更改的来源是 MSMPM0G3507 (mspm0_SDK_1_20_00_05)的示例工程(empty_LP_MSPM0G3507_nortos_ticlang)。
在 workspace1中的 empty_test1中导入和编译工程而生成的映射文件,
如果在 workspace2中的 empty_test2中导入工程、生成它、并比较生成的映射文件、您将看到不同之处。
①NG ć 案
#define STR "ABCDEFGH" int main(void) { char str1[7]; char str2[7]; SYSCFG_DL_init(); strcpy(str1, STR); strcpy(str2, "IJKLMNOP"); while (1) { } }
②OK ć 案
static const char STR[] = "ABCDEFGH"; int main(void) { char str1[7]; char str2[7]; static const char str3[] = "IJKLMNOP"; SYSCFG_DL_init(); strcpy(str1, STR); strcpy(str2, str3); while (1) { } }
此致、
您好!
我已将此主题提请编译器专家注意。 请注意,许多人因假期外出,因此回复可能会延迟。
谢谢
小
我可以重现名称错误 .rodata 部分是不同的。 但它们的长度和内容相同 .rodata 段是相同的。 是您看到的吗? 为什么必须 .rodata 段具有相同的名称?
谢谢。此致、
-乔治
您好!
由于这种差异、差异也会出现在.txt/.hex 文件中、如下图所示。
即使我在不同的环境中构建相同的源代码、我也希望生成的.txt/.hex 文件相同。
这是因为、即使在构建相同的源代码时也存在差异、管理也会变得复杂。
可以在 CCS 上进行设置吗? 或者是否有任何其他解决方案?
此致、
我现在明白了这个问题。 我不知道编译器为什么会这样。 似乎没有任何方法可以更改此行为。 我提交了条目 EXT_EP-11620 对此进行调查。 我们欢迎您通过这个链接来了解这一点。
谢谢。此致、
-乔治
指示编译器不要将数字添加到 .rodata 像这样的节名称...
[报价 userid="571405" url="~/support/processors-group/processors/f/processors-forum/1307058/ccstudio-about-ti-clang-3-2-0lts "] 000001a8 00000009 empty.o (.rodata.str1.117413490714450581041)...构建与选项 -fno-unique-string-section-names 。
谢谢。此致、
-乔治