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.

[参考译文] TMS320F28386D:将两个库链接至其中一个 DATA_SECTION

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1467491/tms320f28386d-link-two-libraries-with-a-data_section-in-it

器件型号:TMS320F28386D

工具与软件:

您好、我有两个库、我已经成功使用 C2000归档器(v22.6.1)创建了: liba.lib libb.lib

libb.lib 有一个对象 Cartridge_Public obj 其中包含一些 常量 在特定段中声明的表如下:

#pragma DATA_SECTION (cart_entry_point、"Cart_sect_entry_point")
const uint32_t cart_entry_point =(uint32_t)(&CMPCARTRIDGE_G_cart_boot_ADDR_VAL_U32);

#pragma DATA_SECTION (c_CmpCartridge G_CsciCartridge_s、"Cart_sect_identification")
const ts_CmpCartridge_G_BardgeSub c_CmpCartridge_G_CsciCartridge_s ={...};

该链接器项目中包含这两个库 liba.lib libb.lib 、我创建了一个分区:

部分中)

cart_sect:

com_bs.lib (codestart){start (_CMPCARTRIDGE_G_Cart_BOOT_ADDR_VAL_U32)}
com_bs.lib (cart_sect_CRC32)
com_bs.lib (Cart_sect_start_ADDR)
com_bs.lib (cart_sect_size)
com_bs.lib (cart_sect_entry_point)
com_bs.lib (cart_sect_identification)
}>碳粉盒、对齐(2)

...

}

但编译期间有以下警告: #10068-D no matching section

通常、我将在.map 文件中包含以下内容:

cart_sect
* 0 00080000 00000080
00080000 00000002、Boot_Code、407.obj (codestart)
00080002 00000002 C307.obj Cartridge_Public (cart_sect_CRC32)
00080004 00000002 C370.obj Cartridge_Public (cart_sect_start_ADDR)
00080006 00000002 C1007.obj Cartridge_Public (cart_sect_size)
00080008 00000002 C307.obj Cartridge_Public (cart_sect_entry_point)
0008000a 00000076 C1007.obj Cartridge_Public (cart_sect_identification)

但我得到了以下信息:

cart_sect
* 0 00080000 00000002
00080000 00000002 COM_BS.lib : Boot_Code (codestart)

我无法理解链接器为何无法获取 libB.lib 中的段吗? 它适用于 CODE_SECTION 符号、但不适用于 DATA_SECTION 符号。。。

是否有来自 TI 专家的任何线索? 我现在被卡住了两天,这是一个有点果味的地方。。。

感谢 ADVANCE 提供的答案。

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

    您好!

    应用中是否使用了这些变量? 如果没有、链接器会从最终的.out 中删除所有未使用的段

    尝试使用#pragma RETAIN 保留这些变量、以防应用程序中未引用这些变量

    此致、

    Veena.

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

    你好 Veena,我试过,但我仍然有错误。 "c_CmpCartridge G_CsciCartridge_s"常量用于我存档的代码中 libb.lib .

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

    在应用程序代码中使用这些变量的库函数是否是这样?

    尝试添加一个代码片段、该代码片段仅读取 main 中某个位置的变量、以便链接器可以看到它被引用并保留这些变量

    此致、

    Veena.

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

    感谢 Veena,我搜索并发现使用这个常数的函数没有被调用任何地方。 修补我的代码后,它工作!!