§ Главный файл
#include <avr/io.h>
#include <util/delay.h>
#define BLINK_DELAY_MS 1000
int main (void)
{
DDRB |= _BV(DDB5);
while(1) {
PORTB |= _BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);
PORTB &= ~_BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);
}
}
§ makefile
1all: main.o
2 avr-gcc -mmcu=atmega328p main.o -o main
3 avr-objcopy -O ihex -R .eeprom main main.hex
4 avr-objdump -d main > main.lst
5
6flash:
7 avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:led.hex
8
9main.o: main.c
10 avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c main.c -o main.o
§ Принципы компиляции
# Компиляция
avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o main.o main.c
# Сборка
avr-gcc -mmcu=atmega328p main.o -o main
# Создание HEX-файла
avr-objcopy -O ihex -R .eeprom main main.hex
# Загрузка на плату
avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:main.hex
# Листинг кодов
avr-objdump -d main > main.lst