C 链接器可以';t将块放入可用内存范围
我使用带有256KB RAM内存的微控制器CC3220,内存放置有一些问题 用于ARM的IAR ELF连接器V7.80.1.28/LNX 版权所有2007-2016 IAR Systems AB 错误[Lp011]:节放置失败 无法将块P3-P4-1(最小尺寸0x795,对齐0x8)放入: 计算范围内的自由空间等于0x111B,这肯定大于块P3-P4-1最小大小0x795。因此,尽管总体内存利用率约为99%(262144中的259963个),但仍然有足够的可用空间来分配额外的块P3-P4-1 我没有在TI和IAR文档中找到任何特定信息,因此如果有人能帮助我澄清细节或向我指出以下问题的资源,我将不胜感激: 即使内存似乎足够,放置P3-P4-1的问题的根本原因是什么 @很遗憾,我无法共享整个文件,但这里是其中的一部分C 链接器可以';t将块放入可用内存范围,c,linker,iar,C,Linker,Iar,我使用带有256KB RAM内存的微控制器CC3220,内存放置有一些问题 用于ARM的IAR ELF连接器V7.80.1.28/LNX 版权所有2007-2016 IAR Systems AB 错误[Lp011]:节放置失败 无法将块P3-P4-1(最小尺寸0x795,对齐0x8)放入: 计算范围内的自由空间等于0x111B,这肯定大于块P3-P4-1最小大小0x795。因此,尽管总体内存利用率约为99%(262144中的259963个),但仍然有足够的可用空间来分配额外的块P3-P4-1 我
"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
“P3-P4”,第1部分,共3部分:0x2bf40
.text ro代码0x200004040 0x2ef4 ds_网络.o
.rodata常量0x2002e6b0 0x4cc d_网络.o
初始值设定项字节常量0x2002eb7c 0x39f(使用:0x38b)
-0x2002ff80 0x2bf40
“P3-P4”,第2部分,共3部分:0xe85c
.bss零0x2002ff80 0x6d78堆_4.o
.bss零0x2003e7d9 0x1中断事件.o
0x2003e7da 0xe85a
“A0”:0x800
CSTACK 0x2003f7f0 0x800
.stack uninit 0x2003f7f0 0x800启动\u cc32xx\u iar.o
-0x2003fff0 0x800
“P3-P4”,第3部分,共3部分(***失败***):0x795
P3-P4-1 0x795
.数据初始化0x78诊断.o
.数据初始化0x1 d_als.o
0x795
B.R.Alex.可以通过将
--map MyMapFile.txt
字符串传递给ilinkarm来生成映射文件。
生成映射文件,并检查在正确的内存范围内是否有大小>=0x795的连续可用内存块。将
--map MyMapFile.txt
字符串传递到ilinkarm,即可生成映射文件。
生成映射文件并检查在正确的内存范围内是否有大小>=0x795的连续可用内存块。感谢大家的响应。
我解决了我的问题,强制链接器放置大的对齐块,这有助于组织空闲内存并避免此类奇怪的问题。感谢大家的响应。
我解决了我的问题,强制链接器放置大的对齐块,这有助于组织可用内存并避免此类奇怪的问题。总内存中的可用空间小于0x111B范围。这不符合逻辑。也许已经有其他东西放在这个范围内。谢谢评论。我已经检查过与另一个块重叠的MAP文件,但是在提到的范围内没有明显的位置。为什么在你的0x03E6D4-0x03F7EF范围中间有“代码>中断Twitter事件?O</CODE(0x033E7D9)?我不熟悉CC3220,但是这个位置看起来很不连贯。到处都有巨大的缺口,打破了自由空间。我认为在不知道放置声明(在链接器脚本和源文件中)的情况下,我们无法解决这个问题。总内存中的可用空间小于0x111B范围。这不符合逻辑。也许已经有其他东西放在这个范围内。谢谢评论。我已经检查过与另一个块重叠的MAP文件,但是在提到的范围内没有明显的位置。为什么在你的0x03E6D4-0x03F7EF范围中间有“代码>中断Twitter事件?O</CODE(0x033E7D9)?我不熟悉CC3220,但是这个位置看起来很不连贯。到处都有巨大的缺口,打破了自由空间。我认为在不知道位置声明(在链接器脚本和源文件中)的情况下,我们无法解决这个问题。感谢您的评论。我已经这样做了,但是没有明显的位置在提及范围内。你能分享你的地图文件吗?我不能分享整个文件。谢谢你的评论。我已经这样做了,但是没有明显的位置在提及范围内。你能分享你的地图文件吗?我不能分享整个文件。