Stránky o AVR, VHDL, USB a tak

Stránky o AVR, VHDL, USB a tak https://uart.cz/441/makefile-misto-arduino-ide/

  • zkouším napsat knihovnu pro 4DM8010 ( už mám interface a veškeré přepočty, teď to jen procpat do drátů ) a podobné chipy
    • plus zkouším na to udělat Makefile bez Arduina - něco se daří, něco ne, ale postupuju (a zanedlouho o tom napíšu, až budu mít aspoň trochu odladěno)
  • https://uart.cz/441/makefile-misto-arduino-ide/ by mohlo taky pomoct, plus jsou okolo zajímavé články o AVR jako USB klávesnici a VHDL (nesouvisející), ale zdá se to spíše dávno mrtvé v půli.
  • ostatně https://uart.cz/ už jsem párkrát potkal a asi by stál za prozkoumání.

Zatím pokus (s jiných zdrojů), který částečně, ale nikoli zcela, nechodí (CFLAGS jsou špatně, nemám tam správné cesty k Arduino core či AVR std knihovnám, ani správně nastavené flagy, padá až při linkování kvůli chybám s alokací/dealokací paměti při vytváření objektů, ale nějaké *.o a dumpy stejně vygeneruje).

Založeno na * http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/ * http://make.mad-scientist.net/managing-recipe-echoing/ * https://en.wikipedia.org/wiki/Cargo_cult

(Časem přijdu s lepší verzí, ale aspoň mám nějaký výchozí bod)

MAIN=example
all: $(MAIN).hex $(MAIN).ASM $(MAIN).dump $(MAIN).hdump
.PHONY: all

DEPDIR := .d
$(shell mkdir -p $(DEPDIR) >/dev/null)
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td

CC = avr-gcc
CXX = avr-gcc

TGT=atmega328

TARGET_ARCH=
CFLAGS=
CXXFLAGS=$(CFLAGS)
CPPFLAGS=
COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cc = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
POSTCOMPILE = @mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d && touch $@

%.hex : %.elf
        @echo "HEX $@"
        avr-objcopy -O ihex -R .eeprom $^ $@
%.ASM : %.cpp
        @echo "ASM $@"
        avr-gcc  -S -c  $^ -o $@
%.dump : %.elf
        @echo "DUMP $@"
        avr-objdump -DCfhlSwz $^ > $@
%.hdump : %.hex
        @echo "HDUMP $@"
        avr-objdump -DCfhlSwz -m avr  $^ > $@

example.elf: example.o lib_4DM8010.o
        @echo "LINK $@"
        $(CXX) -o $@  $^

clean:
        @echo "CLEAN"
        rm -rf .d *.o *.elf *.hex *.ASM *.dump *.hdump

%.o : %.cpp
%.o : %.cpp $(DEPDIR)/%.d
        @echo "CC $<"
        $(COMPILE.cc) $(OUTPUT_OPTION) $<
        $(POSTCOMPILE)

$(DEPDIR)/%.d: ;
.PRECIOUS: $(DEPDIR)/%.d


$(V).SILENT:

include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS))))