avr-task-scheduler

AVR mcu bare metal task scheduler
Index Commits Files Refs README LICENSE
Makefile (897B)
   1 PORT ?= /dev/ttyUSB0
   2 BIN_DIR = bin
   3 SRC_DIR = src
   4 
   5 SRCS := $(wildcard $(SRC_DIR)/*.c)
   6 LIBS := $(SRC_DIR/*.h)
   7 OBJS := $(patsubst $(SRC_DIR)/%.c,$(BIN_DIR)/%.o,$(SRCS))
   8 
   9 CC := avr-gcc
  10 CFLAGS := -Wall -Wextra -Wno-missing-field-initializers \
  11           -pedantic -std=c99 -Os -mmcu=atmega328p
  12 
  13 .PHONY: all
  14 
  15 all: $(BIN_DIR) $(BIN_DIR)/main.hex
  16 
  17 $(BIN_DIR)/%.o: $(SRC_DIR)/%.c
  18     $(CC) $(CFLAGS) \
  19         -o $@ -c $<
  20 
  21 $(BIN_DIR)/main.elf: $(OBJS)
  22     $(CC) $(CFLAGS) \
  23         -o $(BIN_DIR)/main.elf $(OBJS)
  24 
  25 $(BIN_DIR)/main.hex: $(BIN_DIR)/main.elf
  26     avr-objcopy -O ihex -R .eeprom $(BIN_DIR)/main.elf $(BIN_DIR)/main.hex
  27 
  28 upload: $(BIN_DIR)/main.hex
  29     avrdude -F -V -c arduino -p ATMEGA328P -P $(PORT) \
  30         -b 115200 -U flash:w:$(BIN_DIR)/main.hex
  31 
  32 $(BIN_DIR):
  33     @if [ ! -d "$(BIN_DIR)" ]; then \
  34         mkdir -pv $(BIN_DIR);       \
  35     fi
  36 
  37 size:
  38     avr-size --format=avr --mcu=atmega328p $(BIN_DIR)/main.elf
  39 
  40 clean:
  41     rm -rf $(BIN_DIR)