您的位置 首页 软件

PIC C18编译器 过错can not fit the section. 解决方法

Error-section#39;.udata_main.o#39;cannotfitthesection.Section#39;.udata_main.o#39;length=0x00000606E

Error – section .udata_main.o can not fit the section. Section .udata_main.o length=0x00000606
Errors : 1

问询高人得知该过错为RAM分配超越256B

解决办法一为:

1、翻开18f452.lkr

其关于RAM分配的为

ACCESSBANK NAME=accessramSTART=0x0 END=0x7F
DATABANK NAME=gpr0 START=0x80 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=gpr4 START=0x400 END=0x4FF
DATABANK NAME=gpr5 START=0x500 END=0x5FF
ACCESSBANK NAME=accesssfrSTART=0xF80 END=0xFFF PROTECTED

SECTION NAME=CONFIG ROM=config

STACK SIZE=0x100 RAM=gpr5

2、将其间gpr0规模改为START=0x80 END=0x4FF

如下:

DATABANK NAME=gpr0 START=0x80 END=0x4FF

其他屏蔽即可。gpr5为仓库地址,不作休改。

3、从头编译,OK~~

办法二: 自己创立一个数组区域寄存大数组 (能够参阅18f452.lkr文件里边的分页状况)
关于 MPLAB C18 编译器,数据能够放入数据存储器或许程序存储器。假如没有用户
供给的附加代码,片内程序存储器中的数据只能读不能写。假如没有用户供给的附加
代码,片外程序存储器中的数据一般是只能读或许只能写。
例如,下面的句子为静态分配的未初始化数据 (udata)声明晰一个坐落肯定地址
0x120的段:
#pragma udata my_new_data_section=0x120
rom 关键字奉告编译器应该将变量放入程序存储器。编译器会把这个变量分配到当时
的 romdata 型段。例如:
#pragma romdata const_table
const rom char my_const_array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
/* Resume allocation of romdata into the default section */
#pragma romdata
链接器强制将 romdata段放入程序存储区,将 udata和 idata段放入数据存储区;
但是,数据段也能够坐落指定的存储区。能够运用链接器描绘文件中的 SECTION 伪
指令把一个段分配到一个特定的存储区。

办法三:将数据界说到ROM傍边 (ROM不分页)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/272412.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部