c - 链接器无法将块放入空闲内存范围
问题描述
我使用具有 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
亚历克斯。
解决方案
可以通过将--map MyMapFile.txt
字符串传递给 ilinkarm 来生成映射文件。生成映射文件并检查在正确的内存范围内是否有大小 >= 0x795的连续空闲内存块。
推荐阅读
- typescript - 是否可以让 TS Vite 使用 ESM 并让 TS Gulp 在同一个项目中使用 Common JS?
- javascript - 在没有数据库的情况下,在 JavaScript 中存储和处理数据的最佳解决方案是什么?
- amazon-web-services - 通过 API 创建 AWS 安全组的问题
- c# - Linux/MacOS 上的 C# 绝对文件路径
- html - 单击播放按钮时歌曲未播放
- python - 如何使用 sqlite3 删除数据库中的关键字及其旁边的所有内容
- datastage - 我如何将昨天的值设置为 datastage 中数字参数的默认值?
- react-native - 世博会相机暂停和恢复视频录制
- r - 连接到 Google Analytics API 时 R 中的错误(curl 中的错误,已达到超时)
- amazon-web-services - (InvalidParameterValueException) 调用 CreateFunction 操作时:为函数定义的角色不能由 Lambda 承担