PIC18的RAM奇怪问题

2020-02-10 08:52发布

请教各位:我用的PIC18F4550,怎么ram有2k,而我数据还不到512byte就出现了如下错误:MPLINK 4.14, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.udata_Main0.o' can not fit the section. Section '.udata_Main0.o' length=0x00000104
Errors    : 1
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zsy_zsy
1楼-- · 2020-02-10 13:56
是不是我的软件问题啊
MPLAB C18 v3.14 (feature limited)
Copyright 1999-2005 Microchip Technology Inc.
This version of MPLAB C18 does not support the extended mode
and will not perform all optimizations.  To purchase a full
copy of MPLAB C18, please contact your local distributor or
visit buy.microchip.com.

Executing: "C:MCC18inmplink.exe" /l"C:MCC18lib" "d:My DocumentsProgramPrpject_TTADF702018f4550.lkr" "d:My DocumentsProgramPrpject_TTADF7020Main0.o" /m"RF_ADF7020.map" /w /o"RF_ADF7020.cof"
MPLINK 4.14, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.udata_Main0.o' can not fit the section. Section '.udata_Main0.o' length=0x00000104
Errors    : 1

Link step failed.
BUILD FAILED: Mon Apr 21 11:49:16 2008
chuyu111
2楼-- · 2020-02-10 18:11
是你程序的问题   c18里大数据对象有专门的要求
摘自手册 DS51288J_CN


默认情况下, 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
zsy_zsy
3楼-- · 2020-02-10 19:57
谢谢!你,现在可以了,
zsy_zsy
4楼-- · 2020-02-10 22:19
很精通啊!对了,可以要一下你的QQ吗!我的邮箱是zsyjacky@126.com.谢谢!
chuyu111
5楼-- · 2020-02-11 01:29
 精彩回答 2  元偷偷看……

一周热门 更多>