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.

[参考译文] 编译器/CC2640:对于".init_array"已忽略#1.0237万-D分割位置(>>)

Guru**** 2555630 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/582359/compiler-cc2640-10237-d-split-placement-ignored-for-init_array

部件号:CC2640

工具/软件:TI C/C++编译器

您好,

我正在使用 simile_peripheral_cc2650lp_app来构建BLE项目。  以前很好。

最近,我添加了一个C++类来支持Adafruit模块。  一旦我在全局分段中将类声明为以下:

Adafruit_FONA fona = Adafruit_FONA (FONA_RST);

我收到以下警告:

对于".init_array",#1.0237万-D分割位置(>>)被忽略:不允许对此部分进行分割放置cc26xx_app.cmd /simile_peripheral_cc2650lp_app/tools line 126 C/C++问题

章节

intvecs :> flash_app_base
text :>> flash | flash_last_page
const :>> flash | flash_last_page
constdata:>> flash | flash_last_page
.rodata:>> flash | flash_last_page
.cinit:> flash | flash_last_page
Pinit :>> FLASH | FLASH_LASH_PAGE
init_array:>> flash | flash_last_page
.EMM_TEXT:>> FLASH | FLASH_LASH_PAGE
ccfg:> flash_last_page (高)

我应该如何更改才能更正它?

感谢您的建议。

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

    链接器命令文件 cc26xx_app.cmd中存在错误。  

    Dilbert K 说:
    我应该更改什么来更正它?

    将.init_array行更改为类似于.cinit行。

    init_array:> flash | flash_last_page 

    注意>>对>的更改。

    当然,错误始终存在。  但只有添加C++代码,它才会影响任何内容。  如果使用非普通构造函数定义全局对象,则会在main启动之前调用该构造函数。  init_array部分包含指向这些构造函数的指针。  之前它是空的,这就是为什么错误无关紧要。  现在它不是空的,您将看到诊断程序。  

    语法>>说明如何在这些内存范围内拆分该输出部分。  某些部分(如.init_array)无法拆分。  处理.init_array的启动代码假定它完全包含在一个连续的内存块中。

    我假定您从TI提供的示例中获得此链接器命令文件。  我会让相关人员知道问题所在。

    另一个选项是仅忽略诊断。  链接器做了正确的事情。  您的代码将有效。

    谢谢,此致,

    -George

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

    您好,George,

    感谢您提供详细信息。  更改后,警告消失。

    是的,链接器命令文件来自TI-SDK ble SDK _2_02_01_18。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的分析。 我已将此报告提交给我们的开发团队。

    祝你一切顺利