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.

[参考译文] CC2640R2F:simple_peripheral_oad_onchip 示例链接器错误(程序不适用)

Guru**** 2553610 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/582377/cc2640r2f-simple_peripheral_oad_onchip-example-linker-error-program-will-not-fit

器件型号:CC2640R2F
Thread 中讨论的其他器件:SYSBIOS

您好!

我正在尝试从 simple_peripheral_oad_onchip 示例构建 oad_target_cc2640r2lp_app 项目。 链接器给出了错误"C:/ti/simplelink_cc2640r2_sdk_1_30_00_25/source/ti/blestack/common/cc26xx/ccs/cc26xx_app_oad_onchip.cmd、第255行:错误#10099-D:程序将无法放入可用存储器。  ".text"大小0x5b36"段的对齐方式放置失败

我的设置:

全新安装的 CCS 7.1.0.00015和 simplelink_cc2640r2_sdk_1_30_00_25 SDK。
TI ARM 编译器16.9.0
XDC 工具3.50.00.10

为了进行测试、我已将 cc26xx_app_oad_onchip.cmd 中的图像 A 的大小增加到8个闪存页面:

#define FLASH_IMG_A_END         (FLASH_START +(PAGE_SIZE * 8))

现在、构建成功。 查看我看到的映射文件



00001328   00001328   00000004  00000004   r-.const:ti_SysBIOS_ROM_ROM_XDC_RUNTIME_System_SupportProxy_abort__E
0000132c   0000132c   00000004  00000004   r-.const:ti_sysbios_rom_rom_xdc_runtime_System_SupportProxy_Exit_E_E
00001330   00001330   00005cf8  00005cf8   r-x .text

因此.text 段的起始地址为1330、结束地址为7028、比原始7个闪存页的限制多29个字节。

一件奇怪的事情是、在映射文件的开头、我看到:

00000010   00000010   00000704  00000704   r--
 00000010   00000010 0000003c     0000003c   r-.Vecresets
 0000004c   0000004c   0000037c  0000037c   r-.const
 000003c8   000003c8   0000034c  0000034c   r-.cinit
00001000   00001000   00006028  00006028   r-x
 00001000   00001000   00000028  00000028   r-.const:ti_sysbios_bst_HeapMem_Module_Fxns__C
 00001028   00001028   00000024  00000024   r-.const:ti_sysbios_gates_GateHwi_Module_Fxns__C

cinit 和 ti_sysbios_堆_HeapMem_Module_Fxns__C 之间有一个未使用的空洞 看起来 ti_sysbios_b堆_HeapMem_Module_Fxns__C 与闪存边界对齐、但我找不到命令的位置。

有什么想法出错了吗?

请查找构建日志和映射文件 attached.e2e.ti.com/.../0167.build.loge2e.ti.com/.../oad_5F00_target_5F00_cc2640r2lp_5F00_app_5F00_map.txt

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

    此问题似乎是由于链接器命令文件告诉链接器仅将.text 放置在可以包含所有.text 的连续空间中。

    这就是为什么它完全忽略您指出的空间(以及其他间隙)

    解决此问题的方法是修改链接器命令文件、以告诉链接器可以拆分.text 块以使其适合:

    这意味着更改:

    .text :>闪存

    更改为

    .text :>>闪存

    希望这对您有所帮助、
    反叛分子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Rebel,

    是更改命令文件解决了问题。 谢谢!

    这不应该开箱即用? 这是一个未经修改的 TI 示例!

    此致

    Christian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的! 应该、最初的目的似乎是为 cc2640r2应用使用默认的链接器命令文件、其中包含.text 段的">>"。

    无论通过哪种方式、我都会将其添加到 wiki/guide 中。

    谢谢!
    反叛分子