AVR Toolchain
Veröffentlicht: 03.06.2020Hier 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