Прошивка 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