我使用具有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
B.R。亚历克斯。
答案 0 :(得分:1)
可以通过将--map MyMapFile.txt
字符串传递给ilinkarm来生成映射文件。
生成地图文件,并检查在正确的内存范围内是否有连续个空闲的内存块,其大小> = 0x795。
答案 1 :(得分:1)
感谢大家的响应。 我通过强制链接器放置大的对齐块来解决我的问题,这有助于组织空闲内存并避免此类奇怪的问题。