LunaAVR

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
LunaAVR-2013r3.jpg

Beschreibung

LunaAVR (Luna) ist eine objektbasierte, moderne Basic/Pascal-ähnliche Programmiersprache, deren Aufbau und Syntax sich an aktuellen Entwicklungswerkzeugen orientiert. Im Gegensatz zu einfacheren Basic-Sprachen, wie z.Bsp. BASCOM, bietet sie wesentlich komplexere Möglichkeiten auf technischer Augenhöhe mit Pascal, Modula und C/C++. Einschränkungen, z.Bsp.bei Ausdrücken wie bei BASCOM, bei welchen nur zwei Argumente möglich sind, existieren bei Luna nicht.

Bei Luna handelt es sich um ein freies Projekt von und für Entwickler (kostenlos). Es lebt von den Anwendern und deren Engagement.

Luna ist verfügbar für:

  • Windows
  • Linux
  • Mac-OS

Sprachumfang und Fähigkeiten

Der Sprachumfang und die Fähigkeiten sind sehr umfangreich. Es finden viele nützliche Implementationen Verwendung, welche in einfachen Basic-Sprachen nicht enthalten sind. Es können z.Bsp. Strukturen, Pointer verwendet oder Datenobjekte angelegt werden. Dynamische Strings und Speicherblöcke, sowie umfangreiche Funktionen zur Bitmanipulation, Arithmetik und dem direkten Hardwarezugriff. Die Standardbibliothek enthält zahlreiche Interfaces für die Hardware-Schnittstellen wie z.Bsp. SPI, I2C oder UART und bietet zusätzlich viele Implementationen von Software-basierten Protokollen oder Schnittstellen.

Entwicklungsumgebung

Das Luna-Entwicklungspaket besteht aus integrierter Entwicklungsumgebung (IDE), einem Präprozessor, Compiler und Assembler. Software kann wahlweise in der IDE oder in einem normalen Texteditor geschrieben werden. Die IDE bietet hierbei zusätzlich zu den allgemein wünschenswerten Funktionen wie Syntaxfärbung, automatischer Einrückung, Strukturierung von Bedingungen inklusive Ein- und Ausklappfunktion, eine direkte Unterstützung der in Luna abgebildeten Hardware und Software-Objekte bzw. -Klassen der einzelnen AVR Controller. Zusätzlich sind ein Bibliothekseditor, Verzeichnis der Controller-Defines und weitere nützliche Werkzeuge vorhanden.

Features

IDE

  • Automatische Codestrukturierung.
  • Ein-/Ausklappfunktion von Codeblöcken.
  • Hervorheben von Strukturpfaden.
  • Syntaxfärbung von Schlüsselwörtern, controllerspezifischen Konstanten, Sprachfunktionen, Assemblerbefehlen uvm.
  • Autovervollständigen von Syntaxelementen, Controllerdefinitionen und -Konstanten.
  • Suche und Übersicht der controllerspezifischen Definitionen und Konstanten.
  • Umfangreiche Konvertierungsfunktionen in verschiedene Zahlensysteme.
  • Eingebauter Disassembler.
  • Grafischer Editor für LCD-Bilddateien.
  • Grafischer Editor für LCD-Fonts.
  • Editor für Text-LCD-Zeichen.
  • Eingebauter Hexeditor.
  • Eingebaute Zeichenauswahl aus ASCII-Tabelle.
  • Benutzeroberfläche zum bearbeiten der Fusebits, sowie Upload/Download.
  • Anzeige und Sprung zu Fehlerzeilen.
  • Direkte Auswahl der Hersteller-Datenblätter des aktuellen Controllers.
  • Interaktive IC-Gehäuseanzeige mit Echtzeitdarstellung der verschiedenen Speicherbelegungen.
  • Umfangreicher grafischer Report der Kompilate.
  • Detaillierte grafische Ansicht der Arbeitsspeicherbelegung.
  • Aufruf von Systemkonsole und Terminal direkt aus der IDE.
  • Umfangreiche Zeilenformatierungsfunktionen.
  • XML- und formatierter Textexport des Quelltextes zur Weiterverarbeitung.
  • Umfangreicher Quelltexteditor für die Assemblerquelltext-Objekte der Standardbibliothek des Compilers.
  • Regex-Suchen/Ersetzen.

Cmpiler/Sprache

  • Moderne, objektorientierte Syntax.
  • Ausdrücke ohne Parameterbegrenzung.
  • Dynamische Strings.
  • Dynamische Speicherblöcke.
  • Funktionspointer und indirekte Sprünge.
  • Aliase/Defines.
  • Typecasting.
  • Strukturen.
  • Pointer.
  • Datenobjekte.
  • Benutzerdefinierbare Klassen zur Codemodularisierung.
  • Inline-Assembler.
  • Umfangreiche Bit- und Datenmanipulationsfunktionen.
  • Zahlreiche Interfaces für Hardwarebestandteile des Controllers, wie z.Bsp. SPI, I2C, 1Wire, Uart, Ports, z.T. mit Erweiterungen wie FIFO-Buffer uvm.
  • Zahlreiche Softwareemulationen verschiedener Schnittstellen und Funktionen.
  • Zahlreiche Interfaces für verschiedene Funktionalitäten wie z.Bsp. DCF77-Decoder, CRC-Berechnung, Lesen/Schreiben der Controller-Flashpages, Tastenmanager, Taskmanager, Text-LCDs uvm.
  • Umfangreiche Debugfunktionen wie Hexdumps, Exceptions für Speicherverletzungen uvm.
  • Direktes Setzen/Lesen von controllerspezifischen Registern und Interrupts.
  • Eingebautes Software-Eventsystem.
  • Umfangreiche Funktionen für die Ein-/Ausgabe von Daten über Schnittstellen.
  • Umfangreiche Funktionssammlung für:
    • Integerarithmetik
    • Fließkommaarithmetik
    • Stringmanipulation
  • Mächtige benutzerdefinierte Methoden (Prozeduren und Funktionen) mit referenzierbaren Objekten, lokalem Speicher, statischer oder dynamischer Variablendimensionierung, sowie Interrupt- und Rekursionsfähigkeit.
  • Mächtige Funktionen zur Fallunterscheidung.
  • Direkte Unterstützung von Multithreading und paralleler Bearbeitung.
  • Ausgabe des erzeugten Assemblercodes.
  • Kombinierter Compiler/Assembler.

Weblinks