半自助旅游旅行社编译错误,“ERROR:地址0x820003超出范围在1740线...”(Conti

2019-10-17 22:54发布

我开始使用半自助旅游旅行社操作系统与爱特梅尔的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 `

我不能对控制器进行编程。 问题是什么?

谢谢。

Answer 1:

在.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…”