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