繁体   English   中英

MpLab链接错误:无法分配部分(C30编译器)

[英]MpLab Link Error: Could Not Allocate Section (C30 Compiler)

我将这两段代码放在一起(最初在此问题中描述)。

我现在刚从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数据空间中没有足够的存储空间可用于未初始化的变量(靠近bss或短于nbss)。

您可以使用以下建议来减少数据存储器的使用:1)使用编译器优化-O3或-Os。

2)在编译器构建选项下选择大数据模型:-默认-msmall-data-大(> 8KB)-mlarge-data-小(<= 8KB)-msmall-data默认数据模型为small。

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

4)减少函数参数的大小或数量,例如,不要通过值传递结构,而是将指针传递给该参数。

5)将某些局部变量的存储类更改为static或使其全局。

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

7)使用的类型不超过所需的类型,例如,for循环中100个对象中的counter变量仅需要与char一样大。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM