gpt4 book ai didi

c - MpLab 链接错误 : Could Not Allocate Section (C30 Compiler)

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:15 24 4
gpt4 key购买 nike

我已将这两段代码放在一起(最初在 This Question Here 中描述)。

我现在刚从 MpLab (Microchip MPLAB C30) 遇到这个错误

 Link Error: Could not allocate section .nbss, size = 20004 bytes, attributes = bss near 

最奇怪的是,我在编译器手册(Microchip 出版物 DS51284F)中查找该消息,甚至是该消息的子字符串,但一无所获。

我什至只查找了单词 allocate,只找到了三四次,而且从未出现错误消息。

在将这两段代码放在一起之前,我在 0x8000 处定义了一个段,用于存储我们将用于从 Thing-X 交给 Thing-Y

我将我在 0x8000 处定义的数据区域缩小到 1 个单独的字节,但我仍然收到此错误。

我没有在 Microchip 的编译器手册 DS51284F 中看到这条消息。以前有人解决过这个问题吗?

链接器有不同的手册吗?

有没有一种方法可以获得内存映射以查看我的内存区域在哪里?

最佳答案

该错误表示 near 数据空间中没有足够的内存用于未初始化的变量(near bss 或简称 nbss)。

您可以使用这些建议来减少数据内存使用量:1) 使用编译器优化,-O3 或 -Os。

2) 在 Compiler build options 下选择 Large Data Model:- 默认-msmall 数据- 大 (>8KB) -mlarge-data- 小 (<=8KB) -msmall-data默认数据模型很小。

3) 在远空间中声明一些变量。这将释放附近 ram 空间中的空间。

4) 减少函数参数的大小或数量,例如,与其按值传递结构,不如传递指向相同结构的指针。

5) 将一些局部变量的存储类更改为静态或全局。

6) 尽可能重用局部变量和参数。

7) 使用不大于所需大小的类型,例如在 100 多个对象的 for 循环中的计数器变量只需要与 char 一样大。

8) 将一些初始化数据/数组放入代码空间。 -mconst-in-code

关于c - MpLab 链接错误 : Could Not Allocate Section (C30 Compiler),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15391996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com