主题中讨论的其他器件:MSPM0G3507、 TEST2
您好!
我目前正在以下环境中进行开发、但我有一些问题。
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) {
}
}
此致、
