首页 > 解决方案 > 链接器无法将块放入空闲内存范围

问题描述

我使用具有 256KB RAM 内存的微控制器 CC3220S,但内存放置存在一些问题。

IAR ELF 链接器 V7.80.1.28/LNX for ARM

版权所有 2007-2016 IAR Systems AB。

错误[Lp011]:部分放置失败,无法将块 P3-P4-1(最小大小 0x795,对齐 0x8)放置在:<[0x2003e6d4-0x2003f7ef]>

在 <[0x2003e6d4-0x2003f7ef]> 范围内计算的可用空间等于 0x111B,它肯定大于块 P3-P4-1 的最小大小 0x795。因此,尽管整体内存利用率约为 99%(262144 中的 259963),但它仍然有足够的可用空间来分配额外的块 P3-P4-1。

我没有设法在 TI 和 IAR 文档中找到任何特定信息,因此如果有人能帮助澄清细节或将我指向有关以下问题的资源,我将不胜感激:

即使内存似乎足够,放置 P3-P4-1 问题的根本原因是什么?

@nivpeled 不幸的是,我无法共享整个文件,但这是其中的一部分

"P3-P4", part 1 of 3:                      0x2bf40
  .text               ro code  0x20004040   0x2ef4  ds_network.o
  .rodata             const    0x2002e6b0    0x4cc  d_network.o
  Initializer bytes   const    0x2002eb7c    0x39f  <for P3-P4-1> (used: 0x38b)
                             - 0x2002ff80  0x2bf40
"P3-P4", part 2 of 3:                       0xe85c
  .bss                zero     0x2002ff80   0x6d78  heap_4.o
  .bss                zero     0x2003e7d9      0x1  interrupt_event.o
                                     0x2003e7da   0xe85a
"A0":                                        0x800
  CSTACK                       0x2003f7f0    0x800  <Block>
    .stack            uninit   0x2003f7f0    0x800  startup_cc32xx_iar.o
                             - 0x2003fff0    0x800
"P3-P4", part 3 of 3 (*** FAILED ***):       0x795
  P3-P4-1                                    0x795  <Init block>
    .data             inited                  0x78  diagnostic.o
    .data             inited                   0x1  d_als.o 
                                             0x795

亚历克斯。

标签: clinkeriar

解决方案


可以通过将--map MyMapFile.txt字符串传递给 ilinkarm 来生成映射文件。生成映射文件并检查在正确的内存范围内是否有大小 >= 0x795的连续空闲内存块。


推荐阅读