www.mikrocontroller.net

Forum: Projekte & Code Eine Art automake für AVR


Autor: Michael Z. (incunabulum)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

zwei kleine Python-Skripte samt Config-Dateien für automatisierte Builds 
ohne manuelle Eingriffe im Makefile.

Intro :
In meinem Fall verwende ich für die meisten Projekte eine 
Verzeichnisstruktur wie folgt:
  /workspace/libDir
  /workspace/myProject1
  /workspace/myProject2
Basierend auf der avr-libc enthält libDir projektübergreifend 
Bibliotheksfunktionen zur Ansteuerung von timer, i2c, i2c komponenten, 
etc. Die eigentliche Funktionalität eines Projekts wie auch 
projektspezifische Konfigurationen sind in myProject1 etc. zu finden.
Dieser Ansatz ähnelt dem von avrlib. Die Versionskontrolle für fertige 
Projekte erfolgt mittels svn:externals und svn:prjheoperties.

BuildTargets - Bibliotheken auf Plattformkompatibilität testen:
Da ich es hier z. T. mit unterschiedlichen AVR-Architekturen zu tun habe 
(Mega8, Mega168, Mega32 etc.)  ist die Bibliothek durch entsprechende 
#ifdef Anweisungen target-unabhängig aufgebaut.

Aufbauend auf einem generischen Makefile ist es mit Hilfe von 
buildTargets.py möglich, alle unterstützten Architekturen in einer 
Config-Datei anzugeben. Dieses Skript sucht nun in den angegebenen 
Source-Foldern (siehe buildTargetsSrcDirs.conf) nach *.cpp und *.c 
Dateien (mehrere Verzeichnissebenen werden unterstützt), kompiliert die 
gefundenen Quellen für die jeweilige Zielplattform und linkt alles zu 
einer Bibliothek. Separate Verzeichnisse für build, dep, obj werden 
unterstützt.

Werden unbekannte (nicht falsche!) register etc. für eine der 
Zielarchitekturen verwendet, so kommt die entsprechende Fehlermeldung. 
Hiermit wird erreicht, dass zumindest syntaktisch korrekter Code 
vorliegt.

Code: buildTargets.zip

AutoMake für Arme - *autobuild.zip*
Hierauf aufbauend wurden die Skripte erweitert, um nahezu ohne 
Nutzereingriffe ein Projekt zu kompilieren. Eine Config-Datei 
(build.properties) enthält MCU, F_CPU, TargetName sowie eventuelle 
externe Source-Verzeichnisse. Dazu ein generisches Makefile.

build.py sucht im eigenen Verzeichnis und Unterverzeichnissen (sowie 
extern, wenn angegeben) nach Quellen, kompiliert und linkt diese zum 
angegebene Target. Fertig.

Make für Faule, sozusagen. Individuelle, projektspezifische 
Optimierungsschritte fehlen natürlich. Aber für Testprojekte mit 
begrenzter Lebensdauer praktisch :-)

cu, mz.

Autor: Michael Z. (incunabulum)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und der Code für autobuild

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.