Process Contiki编译错误,";错误:地址0x820003超出…第1740行的范围;
我开始在atmel atmega128rfa1上使用contiki操作系统。 我可以编译我的示例,但是十六进制文件不好。错误是: 错误:地址0x820003超出ipso.hex第1740行的范围(我没有使用ipso,只是保留了这个名称) 当我在linux系统中编译时,代码是程序大小是27804字节,数据是4809字节 当我在windows中编译时,程序是28292,数据是4791 我只使用一个进程和一个etimer,我想打开和关闭1个led。 生成文件由以下内容组成: ` 我不能给控制器编程。有什么问题Process Contiki编译错误,";错误:地址0x820003超出…第1740行的范围;,process,compiler-errors,contiki,Process,Compiler Errors,Contiki,我开始在atmel atmega128rfa1上使用contiki操作系统。 我可以编译我的示例,但是十六进制文件不好。错误是: 错误:地址0x820003超出ipso.hex第1740行的范围(我没有使用ipso,只是保留了这个名称) 当我在linux系统中编译时,代码是程序大小是27804字节,数据是4809字节 当我在windows中编译时,程序是28292,数据是4791 我只使用一个进程和一个etimer,我想打开和关闭1个led。 生成文件由以下内容组成: ` 我不能给控制器编程。有
谢谢。在.elf文件中的特殊部分从0x810000以上开始,在生成用于编程特定内存的十六进制文件时必须删除,例如
$ avr-objdump -h webserver6.avr-atmega128rfa1
webserver6.avr-atmega128rfa1: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00001bda 00800200 0000e938 0000ea2c 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000e938 00000000 00000000 000000f4 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 000031a6 00801dda 00801dda 00010606 2**0
ALLOC
3 .eeprom 00000029 00810000 00810000 00010606 2**0
CONTENTS, ALLOC, LOAD, DATA
4 .fuse 00000003 00820000 00820000 0001062f 2**0
CONTENTS, ALLOC, LOAD, DATA
5 .signature 00000003 00840000 00840000 00010632 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
所以
或者,仅复制所需的部分:
avr-objcopy -O ihex -j .text -j .data ipso.elf ipso.hex
所以它适合在Linux下编译吗?我也有类似的问题。我的编译前/编译后部分有:-objcopy-O ihex-R.eeprom-R.eesafe$(TARGET\u OUTPUT\u FILE)$(TARGET\u OUTPUT\u FILE).hex avr objcopy--无更改警告-j.eeprom--更改部分lma.eeprom=0-O ihex$(TARGET\u OUTPUT\u FILE)$(TARGET\u OUTPUT\u FILE).eep.hex您的第二个命令对我有用。因此,我将其替换为avr objcopy-O ihex-j.text-j.data$(TARGET_OUTPUT_FILE)$(TARGET_OUTPUT_FILE)。原因可能是什么?stderr>avrdude.exe:写入闪存(11674字节):stderr>写入| stderr>##
avr-objcopy -O ihex -R .eeprom -R .fuse -R signature ipso.elf ipso.hex
avr-objcopy -O ihex -j .text -j .data ipso.elf ipso.hex