Ошибка компиляции Contiki, ОШИБКА: адрес 0x820003 вне диапазона в строке 1740

Я начал использовать операционную систему contiki с atmel atmega128rfa1. Я могу скомпилировать свой пример, но шестнадцатеричный файл плохой. Ошибка: ОШИБКА: адрес 0x820003 вне допустимого диапазона в строке 1740 ipso.hex (я не использую IPSO, просто сохранил это имя).

Когда я компилирую в системе Linux, размер кода составляет 27804 байта, а данные - 4809 байт.

Когда я компилирую в Windows, программа 28292, а данные 4791.

Я использую только один процесс и один этимер, я хотел бы включать и выключать 1 светодиод. make-файл состоит из: `

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 `

не могу запрограммировать контроллер. В чем проблема?

благодарю вас.


person mkiss    schedule 01.04.2013    source источник
comment
так что подходит, если вы компилируете в Linux?   -  person Mariano Alvira    schedule 03.04.2013


Ответы (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

So,

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
person dak    schedule 06.05.2013
comment
У меня тоже была похожая проблема. В моем разделе до/после сборки было: -lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex Вторая команда у меня сработала. Поэтому я заменил его как avr-objcopy -O ihex -j .text -j .data $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex Все работает, но я получаю много строк с помощью stderr›#. Что может быть причиной? stderr›avrdude.exe: запись flash (11674 байт): stderr› запись | стдерр › ## - person Mahesha Padyana; 10.08.2015