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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4104|回复: 0
打印 上一主题 下一主题

如何修复数据存储器段的“unable to fit section”(不能分配...

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-18 15:55:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如何修复数据存储器段的“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)
    ;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 04:45 , Processed in 0.048367 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表