[英]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.