英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: 如何修复数据存储器段的“unable to fit section”(不能分配... [打印本页]

作者: min    时间: 2012-8-18 15:55
标题: 如何修复数据存储器段的“unable to fit section”(不能分配...
如何修复数据存储器段的“unable to fit section”(不能分配到段)错误?


MPLAB C18 提供了两种不同的数据存储器段类型:
udata——包含静态分配的未初始化用户变量
idata——包含静态分配的已初始化用户变量
在MPLAB C18 中每种段类型都有默认的段(如.udata_foobar.o)。
例如,给出以下位于foobar.c 中的源代码:
unsigned char foo[255];
int bar;
void main (void)
{
    while (1)
    ;
}
该代码会导致下列错误: Error - section ‘.udata_foobar.o’ can not fit the section.
Section ‘.udata_foobar.o’ length = 0x00000101.
有两种方法可解决这个错误:
1. 将foobar.c 分成多个文件:
foo.c
unsigned char foo[255];
void main (void)
{
    while (1)
    ;
}
bar.c
int bar;
2. 使用#pragma udata 伪指令创建一个独立的段,包含foo 和bar 变量:
foobar.c
#pragma udata foo
unsigned char foo[255];
#pragma udata bar
int bar;
void main (void)
{
    while (1)
    ;
}





欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2