iccavr 编译问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 06:47:28
C:\iccv7avr\bin\imakew -f MOTORCT.mak
iccavr -o MOTORCT -g -e:0x2000 -Wl-W -bfunc_lit:0x26.0x2000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:0.512 -fihx_coff -S2 @MOTORCT.lk
!E <library>(247): area 'text' not large enough
want size 4238
lo 5804 hi 8192 size 2389
!E keypross.o(674): Code address 0:0x2a already contains a value
!E keypross.o(674): Code address 0:0x2b already contains a value
!E keypross.o(674): Code address 0:0x2c already contains a value
!E keypross.o(674): Code address 0:0x2d already contains a value
!E keypross.o(674): Code address 0:0x2e already contains a value
!E keypross.o(674): Code address 0:0x2f already contains a value
!E keypross.o(674): Code address 0:0x30 already contains a value
!E keypross.o(674): Code address 0:0x31 already contains a value
!E keypross.o(674): Code address 0:0x32 already contains a value
!E keypross.o(674): Code address 0

我遭遇此问题,最终排查到的情况是:
我程序里面,有一个常数表格,我物理定位了地址如,#pragma 0x4b00 ...
我原来程序编译正常。后来,我修改了程序,程序变大,超出了0x4b00,此时编译器发现,这个地方已经定义表格了,所以,报错。解决办法是把这个常数表格往后挪一下,如,我变成#pragma 0x6b00 就编译,特别是链接通过了。其实这个报错是链接阶段的报错。

这明明是代码空间不够了嘛,将代码压缩功能打开试试!!!

虽然你这个问题已经达几年之久了,但是呢,为了后来的学习者不至于迷茫太久,还是给回答一下吧,应该是您的程序中中断向量号不对或者芯片型号未选择,或者选择错误所致。