sky5611 发表于 2010-4-17 15:26:32

紧急呼叫傻孩子。。。再请教----程序绝对地址定位

1、project->options->target->device   已经选定MEGA32
2、使用的是ICCAVR6.31A

    “首先,把绝对定位去掉。然后编译。成功以后,用AVR Studio仿真(软件仿真就可以),
进入仿真界面以后,切换到汇编视图,找一个空白的地方,记录下地址…… ”

用上述方法可以看到,从0x2000-0x3800都是空白,这一点从ICC的Map文件也可以证实,但是放在这里还是报错。

#pragma abs_address: 0x3000
const unsigned char S1 = {0x00,0x33,0x55,0xAA};
const unsigned char S2 = {0x10,0x13,0x15,0x1A};
#pragma end_abs_address

编译后提示:
iccavr -o M32 -LC:\icc\lib\ -g -ucrtatmega.o -bfunc_lit:0x54.0x7800 -dram_end:0x85f -bdata:0x60.0x85f -dhwstk_size:32 -beeprom:1.1024 -fihx_coff -bmyarea:0x3C00.0x3FFF -S2 @M32.lk   -llpatmega -lcatmega
!E KD325G021.o(4250): Code address 0x3000 already contains a value
!E KD325G021.o(4250): Code address 0x3001 already contains a value
!E KD325G021.o(4250): Code address 0x3002 already contains a value
!E KD325G021.o(4250): Code address 0x3003 already contains a value
!E KD325G021.o(4252): Code address 0x3004 already contains a value
!E KD325G021.o(4252): Code address 0x3005 already contains a value
!E KD325G021.o(4252): Code address 0x3006 already contains a value
!E KD325G021.o(4252): Code address 0x3007 already contains a value
C:\icc\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1

MEGA32的最大地址0-3FFF,试了一下,只有放在空间以外,比如0X4000才不报错,但是不会产生目标码。

急急急!帮忙分析一下。先谢了!!!!!
页: [1]
查看完整版本: 紧急呼叫傻孩子。。。再请教----程序绝对地址定位