我遇到'section'.udata_xxx.o'无法适应该部分'错误,在搜索网络(http://www.xargs.com/pic/c18large.html)后,我们实际上可以通过配置链接器文件来创建大于256字节的对象:
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
These 256-byte regions need to be combined into larger regions to fit the new sections:
DATABANK NAME=large_udata START=0x100 END=0x389 PROTECTED
DATABANK NAME=large_idata START=0x38A END=0x519 PROTECTED
DATABANK NAME=gpr5 START=0x51A END=0x5FF
如果我没有提出PROTECTED这个词,它可以编译。但每当我把“保护”这个词放进去时,就会再次出现“无法适应的错误”。这是否意味着我的固件确实没有内存?
答案 0 :(得分:0)
不,这是保留的内存! 再次阅读你的链接!
PROTECTED关键字告诉链接器不要将任何内容放在自己的大区域中;只有那些已明确放入相关部分且源代码为#pragmas的对象才能放在那里。