Hendrich.org

AVR Toolchain

Veröffentlicht: 03.06.2020

Hier beschreibe ich nochmal Schritt für Schritt wie man die Firmware auf den Chip hochlädt. Dabei verwende ich einen USB-Programmer vom Typ USBasp.

Treiber für den USB-Programmer installieren

Details habe ich in hier beschrieben.

Compiler installieren

Man könnte sich natürlich entscheiden, AVR Studio installieren (z.B. WinAVR) aber ich habe mich entschieden, Arduino zu installieren. Das IDE von Arduino kann leider nicht verwendet werden aber dank der Installation bekommt man im Installationsverzeichnis unter C:\Program Files (x86)\Arduino\hardware\tools\avr den Compiler und Programmer mitgeliefert.

Pfade setzen

Pfade korrekt in den Umgebungsvariablen setzen:

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin
C:\Program Files (x86)\Arduino\hardware\tools\avr\etc 

Kompillieren

Zunächst kompillieren:

avr-gcc.exe -w -g -Os -mmcu=attiny13 -o main.bin main.c

und danach die Binärdatei in .hex-Datei umwandeln:

avr-objcopy -j .text -j .data -O ihex main.bin main.hex

Hochladen

Die .hex-Datei dann anschließend auf den Chip laden:

avrdude -p attiny13 -c usbasp -U flash:w:main.hex:i -F -P usb

Anschließend wird der Code hochgeladen und auf dem Chip ausgeführt.

Abkürzung: Makefile

Wenn man faul ist kann man ein Makefile verwenden, das die Schritte für einen ausführt. Damit Make funktioniert muss man allerdings vorher MinGW zusammen mit der Erweiterung msys installieren und die Pfade dorthin eintragen.

NAME=display

CHIP=attiny13

OC=avr-objcopy
OFLAGS=-j .text -j .data -O ihex

CC=avr-gcc.exe
CFLAGS=-w -g -Os -mmcu=$(CHIP)

UL=avrdude
UFLAGS=-c usbasp -p $(CHIP) -F -P usb

upload: $(NAME).hex
    $(UL) $(UFLAGS) -Uflash:w:$(NAME).hex:a 

$(NAME).hex: $(NAME).bin
    $(OC) $(OFLAGS) $(NAME).bin $(NAME).hex

$(NAME).bin: $(NAME).c
    $(CC) $(CFLAGS) -o $(NAME).bin $(NAME).c

clean:
    rm -rf $(NAME).hex $(NAME).lss $(NAME).eep $(NAME).map $(NAME).bin $(NAME).atsln $(NAME).atsuo