我开始使用半自助旅游旅行社操作系统与爱特梅尔的ATmega128RFA1。 我可以编译我的例子,但十六进制文件是坏的。 错误是:ERROR:地址0x820003超出范围在ipso.hex的1740线(我不使用IPSO,只是我一直在这个名字)。
当我在linux系统编译代码是程序大小为27804字节,数据是4809byte。
当我在窗口编译程序是28292和数据是4791。
我只用一个过程,一个etimer,我想开启和关闭1个LED。 的makefile文件consinst:`
TARGET=avr-atmega128rfa1
CONTIKI = ../..
include $(CONTIKI)/Makefile.include
all:
make -f Makefile.ipso TARGET=avr-atmega128rfa1 ipso.elf
avr-objcopy -O ihex -R .eeprom ipso.elf ipso.hex
avr-size -C --mcu=atmega128rfa1 ipso.elf `
我不能对控制器进行编程。 问题是什么?
谢谢。
在.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 -R .eeprom -R .fuse -R signature ipso.elf ipso.hex
交替,只复制所需的部分:
avr-objcopy -O ihex -j .text -j .data ipso.elf ipso.hex
文章来源: Contiki compile error, “ ERROR: address 0x820003 out of range at line 1740 of…”