2013-04-01 4 views
1

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

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

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

Я использую только один процесс и один etimer, я хотел бы включить и выключить 1 главе. файл сборка 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 ` 

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

спасибо.

+0

так подходит, если вы собираете в Linux? –

ответ

2

Специальные разделы в файле .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 
+0

У меня также была аналогичная проблема. Мой раздел pre/post build: -objcopy -O ihex -R .eeprom -R .eesafe $ (TARGET_OUTPUT_FILE) $ (TARGET_OUTPUT_FILE) .hex avr-objcopy --no-change-warnings -j .eeprom -change -section-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 bytes): stderr> Письмо | stderr> ## –

 Смежные вопросы

  • Нет связанных вопросов^_^