4.0 KiB
Emacs AVR IDE Template
Dieses Repository ist ein vollständiges Template, um Emacs als leichtgewichtige, aber extrem mächtige IDE für die Entwicklung von AVR Mikrocontrollern (speziell moderne AVR Dx/Ex Serien, aber auch voll abwärtskompatibel zu älteren Serien) zu nutzen.
Es verwendet CMake als Build-System und verlässt sich auf die Kombination von avr-gcc, avrdude (ELF-Support) und clangd (Language Server), um Code-Vervollständigung, schnelles Kompilieren und direktes Flashen aus dem Editor heraus zu ermöglichen.
Voraussetzungen auf Betriebssystemebene
avr-gcc(AVR Toolchain Compiler)avrdude(Version 7.0 oder höher zwingend empfohlen für nativen ELF-Support)clangd(Für Code-Vervollständigung, Warnungen und Fehleranzeige in Emacs)cmake(Build-System)ripgrep(Wird für die extrem schnelle Suche in Emacs verwendet)- Device Packs für moderne AVRs: Microchip Packs Repository
Emacs Packages
Damit das IDE-Feeling perfekt wird, greift dieses Template auf einige spezifische Emacs-Packages zurück, die sich bewährt haben:
- Projectile: Zur Projektverwaltung (findet den Root-Ordner automatisch anhand der
CMakeLists.txt). - Eglot: Als integrierter C/C++ Language Server Client (kommuniziert im Hintergrund mit
clangd). - Corfu: Für das moderne Autovervollständigungs-Popup direkt am Cursor.
- Vertico, Orderless & Consult: Für eine smarte, fehlertolerante Suche über das gesamte Projekt (inklusive Ripgrep-Anbindung).
- Doom Themes: Für einen augenschonenden, modernen Dark Mode.
Installation der Emacs-Konfiguration
Wenn du Emacs von Grund auf neu einrichtest, kannst du die beiliegende Beispieldatei verwenden:
- Kopiere die Datei
init-example.elin dein Emacs-Konfigurationsverzeichnis (meist~/.emacs.d/oder~/.config/emacs/). - Benenne sie in
init.elum.cp init-example.el ~/.emacs.d/init.el - Starte Emacs neu. Beim ersten Start werden alle fehlenden Pakete automatisch von MELPA heruntergeladen und installiert.
Mikrocontroller (MCU) wechseln
Dieses Projekt ist standardmäßig für den AVR128DB28 konfiguriert. Wenn du einen anderen Chip verwenden möchtest:
- Öffne die Datei
CMakeLists.txt. - Ändere den Wert der Variable
MCU(z.B. aufatmega328poderavr128da28). - Ändere bei Bedarf das
DEVICE_PACK_DIR. (Für moderne AVR Dx/EA Serien wird das Device Pack von Microchip benötigt. Für ältere Modelle wie den ATmega kannst du diesen Pfad oft leer lassen). - Drücke F5 in Emacs, um das Projekt frisch zu konfigurieren und zu bauen.
(CMake erzeugt die Datei
compile_commands.jsondabei neu, wodurchclangdsofort die Register und Pins des neuen Chips in der Autovervollständigung kennt!)
Entwicklungsworkflow & Shortcuts
Sobald du eine .c oder .h Datei im Projekt öffnest, erkennt Projectile das Projekt automatisch und Eglot startet im Hintergrund den Language Server.
Die wichtigsten Tastenkürzel für die Projektverwaltung (via Projectile & Consult):
C-c p f: Datei im Projekt finden (Fuzzy Search).C-r: Projektweit nach Text suchen (Consult Ripgrep - extrem schnell!).C-c p p: Zwischen verschiedenen, lokal gespeicherten Projekten wechseln.
Die Tastenkürzel zum Bauen und Flashen (eingestellt über F-Tasten in der init.el):
F5: Clean Build. Löscht den Cache radikal und baut das Projekt komplett neu (Kompiliert inkl. Linker Garbage Collection für minimale Größe).F6: Flash Code. Flasht nur den Programmcode (Flash-Speicher) via Avrdude. (Standardbefehl während der Entwicklung)Strg + F6: Flash Code & EEPROM. Flasht den Code und die EEPROM-Daten.F7: Read Fuses. Liest die Fuses vom Mikrocontroller und zeigt sie im Emacs Compile-Fenster an.Strg + F7: Flash Fuses. Schreibt die direkt in der C-Software definierten Fuses (via<avr/fuse.h>) auf den Chip.
Hinweis: Da wir das moderne ELF-Format nutzen, entfällt das manuelle Generieren von alten .hex-Dateien vollständig.