https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1487251/iwr1843boost-link-problem
器件型号:IWR1843BOOST工具与软件:
这是一个分为两部分的问题。 第一部分是了解链接器为什么要执行它所做的操作。 第二部分是我看到的问题、这似乎是由链接器放置特定函数的位置造成的。
第一个问题:
我有一个软件模块"test_module.c"、其中显示了一些函数。 该文件包含许多函数、但当前仅使用其中的一些函数。 在"良好"配置中、公开函数的链接器映射如下所示。
000138b0 00000010 TEST_MODULE.OBJ (.text:357V Module_Function
000138c0 00000010 TEST_MODULE.OBJ (.text:357V Module_Function
000138d0 00000010 TEST_MODULE.OBJ (.text:357V Module_Function
000138e0 00000010 TEST_MODULE.OBJ (.text:357V Module_Function
000138b1/21 Module_Function 301.
Module_Function 301.
000138d1/21 Module_Function 301.
000138E1 Module_Function 301.
我 Module_Function 在文件中有两个版本的26423.0310,我将交换名称以演示问题。 在上面的"好"版本中、该函数只是递增一个静态变量并返回。 在下面的"坏"版本中、函数更大、但最终执行相同的操作... 递增静态变量并返回、函数的其余部分未执行。 这里的关键在于、链接器出于某种原因会将较大版本的函数重新定位到不同的存储器区域。 这是链接器映射...
0000ff54 0000006c TEST_MODULE.obj (.text:Module_Function 3040122)
00013920 00000010 test_module.obj (.text:384211 Module_Function)
00013930 00000010 test_module.obj (.text:3842A Module_Function)
00013940 00000010 test_module.obj (.text:384211 Module_Function)
00013921 Module_Function 542.20.4
00013931 Module_Function 454.10.
00013941 Module_Function 34.
0000ff55 Module_Function 454.
第一个问题:为什么链接器搬迁 Module_Function 305240 只是因为它较大?
第二个问题: 链接器将其重新定位时、似乎在调用3842V Module_Function 时出现了问题。 即使该函数立即返回、只是调用它似乎会导致系统出现问题。 (我怀疑这是崩溃的线程、但遗憾的是、我无法将调试器连接到从闪存引导的系统。 从闪存引导是我可以使组合 MSS/DSS 运行的唯一方法。)
谢谢!
Ron

