关于PIC 编译错误 Error - section \'.***.o\' can not fit the section 的解决方案

关于PIC 编译错误 Error - section \'.***.o\' can not fit the section  的解决方案

出处:http://www.pic16.com/bbs/TopicOther.asp?t=5&BoardID=10&id=33539

    默认情况下, MPLAB C18 假定对象不跨越存储区边界。可以创建长度大于 256 字节
的对象,但要遵循下面的步骤来创建一个多存储区对象:


1. 必须使用#pragma idata或#pragma udata伪指令将对象分配到自己的段中。
    #pragma udata buffer_scn
    static char buffer[0x180];
    #pragma udata


2. 对对象的访问必须通过指针来进行。
    char * buf_ptr = &buffer[0];
    ...
    // examples of use
    buf_ptr[5] = 10;
    if (buf_ptr[275] > 127)
    ...


3. 必须在链接描述文件中创建一个跨越多个存储区的新区域。
修改前的链接描述文件:
    DATABANK NAME=gpr2 START=0x200 END=0x2FF
    DATABANK NAME=gpr3 START=0x300 END=0x3FF
修改后的链接描述文件:
    DATABANK NAME=big  START=0x200 END=0x37F PROTECTED
    DATABANK NAME=gpr3 START=0x380 END=0x3FF


4. 必须将对象所在的段(步骤 1 中创建)分配到这个新区域(步骤3 中创建)。添
加一条 SECTION 伪指令到链接描述文件。
SECTION NAME=buffer_scn RAM=big

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值