Прошивка AVR-GCC ничего не делает, прошивка объектного файла напрямую работает

У меня есть проблема, которую я не понимаю.

Итак, у меня есть основной файл (main.c), который просто мигает парой светодиодов.

Выполнение следующих включений светодиодов микроконтроллера:

$ avr-gcc  -mmcu=atmega128rfa1    -Wall -Wextra    -DBOARD_MEGA128RFA1 -DCPU_ATMEGA128RFA1 -o main.o -c main.c

$ sudo avrdude -v -F -c jtag3isp -p atmega128rfa1  -B 1 -U flash:w:main.o:r

Однако выполнение вышеизложенного, но объединение файла.o в исполняемый файл и его перепрошивка не приводит к включению светодиодов. Шаги, которые я делаю, чтобы сделать и прошить исполняемый файл:

$ avr-gcc -o uJ main.o  
$ sudo avrdude -v -F -c jtag3isp -p atmega128rfa1        -B 1 -U flash:w:uJ:r

Я не понимаю, почему это так. Любая помощь, которую вы могли бы предоставить?

Изменить: Это для atmega128rfa1, мигает из Ubuntu с GCC версии 4.8.2 (GCC).

1 ответ

Ага! Я нашел проблему.

После просмотра связанных файлов и на avrfreaks, эта ссылка объясняет проблему: ссылка

Решение заключается в добавлении следующей строки перед загрузкой:

avr-objcopy --change-section-lma .eeprom=0 -O binary uJ uJ
Другие вопросы по тегам