Inital code commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# 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](http://packs.download.microchip.com/)
|
||||
|
||||
## 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:
|
||||
1. Kopiere die Datei `init-example.el` in dein Emacs-Konfigurationsverzeichnis (meist `~/.emacs.d/` oder `~/.config/emacs/`).
|
||||
2. Benenne sie in `init.el` um.
|
||||
```bash
|
||||
cp init-example.el ~/.emacs.d/init.el
|
||||
```
|
||||
3. 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:
|
||||
1. Öffne die Datei `CMakeLists.txt`.
|
||||
2. Ändere den Wert der Variable `MCU` (z.B. auf `atmega328p` oder `avr128da28`).
|
||||
3. Ä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).
|
||||
4. Drücke **F5** in Emacs, um das Projekt frisch zu konfigurieren und zu bauen.
|
||||
*(CMake erzeugt die Datei `compile_commands.json` dabei neu, wodurch `clangd` sofort 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.*
|
||||
Reference in New Issue
Block a user