Forum: Mikrocontroller und Digitale Elektronik Universelle Mikrocontroller Toolchain (Linux)


von Joerg W. (joergwolfram)


Lesenswert?

Nachdem ich irgendwann den GCC für PowerPC-VLE compiliert und zum Laufen 
bekommen habe, war der sportliche Ehrgeiz geweckt, das auch für andere 
Plattformen hinzukriegen. Allerdings fand ich das eher für einen Krampf, 
weil es z.B. teilweise gar keine Headerfiles für I/O gab oder sich die 
Syntax immens unterschied. Außerdem mussten Patches im Internet 
zusammengesucht werden. Letztendlich wurde daraus dann die Idee geboren, 
eine möglichst universelle Toolchain für alle möglichen Plattformen zu 
erstellen.

- Kein Konflikt mit bestehenden Toolchains
- alles liegt unter /usr/local/toolchain
- GCC und SDCC, mit zusammengesuchten Patches compiliert
- Uniforme Headerfiles für I/O, soweit das möglich ist
- Linkerscripts und Startup-Files
- Uniforme Makefiles, in denen alle Pfade etc. schon eingetragen sind
- Nur ein Programmer für alles

Unterstützte Plattformen sind momentan:
---------------------------------------
- Atmel AVR (nur ATMega)
- Microchip PIC14 (PIC12xx, PIC16xx)
- Microchip PIC16 (PIC18xx)
- Freescale HCS08
- Freescale HCS12 (auch banked)
- TI MSP430
- Renesas R8C
- STM/Freescale SPC56xx

Dazu kommt eine universelle Bibliothek, die auf allen unterstützten 
Plattformen äquivalente Funktionen bereitstellt.
Die Bibliothek enthält derzeit Funktionen für die 
Fliesskomma-Grundrechenarten (soweit notwendig) und digitale
Ein/Ausgabe. Weitere Funktionalität wie 
Timer,UART,SPI,I2C,ADC,PWM,CAN... sollen folgen. Wo es geht und ich mich 
auskenne, (also alles außer PIC) sind die Lib-Funktionen in ASM 
geschrieben. Bei Fliesskomma habe ich teilweise Dumps in Source 
zurückkonvertiert um das später noch optimieren zu können.
Mit einer board.h, in der die konkrete Hardware definiert wird lassen 
sich so schon Programme schreiben, die auf jeder der Plattformen auf 
Anhieb laufen. Für später ist auch ein Wizard geplant, der die nötigen 
Files (Board Definition, Rumpf main etc) mehr oder weniger automatisch 
zusammenstellt.

Mit "make run" wird dann z.B. das Programm übersetzt, in den Controller 
geschrieben und dieser anschließend gestartet.

Wenn Interesse besteht, würde ich das Projekt auch veröffentlichen, 
wobei halt noch viel zu tun ist (z.B. Dokumentation).

von Sebastian (Gast)


Lesenswert?

Das klingt recht vielversprechend. Ich denke schon, dass dafür ein 
Interesse besteht, hier im Forum und generell. Dokumentation ist 
natürlich wichtig, denn das Konzept kann noch so genial sein - aber der 
Neueinsteiger muss es benutzen können.

von Joerg W. (joergwolfram)


Lesenswert?

Inzwischen ist das etwas weiter gewachsen und gediehen. Und es stellt 
sich mal wieder die Frage nach einer Veröffentlichung.

Die Bibliothek ist teilweise auf mehr als 1100 Funktionen 
(Controller-abhängig) angewachsen, die Anzahl der unterstützten 
Controller-Familien auf 25, wobei ich mangels Testobjekten die 
Implementierung meist nur mit 1 oder 2 Typen testen konnte:

- Diverse MCS51
- Espressif ESP32
- Microchip/Atmel AVR (nur ATMega)
- Microchip PIC14 (PIC12xx, PIC16xx)
- Microchip PIC16 (PIC18xx)
- NXP/Freescale HCS08
- NXP/Freescale HCS12X (auch banked)
- NXP/Freescale MPC57xx
- NXP/Freescale S9KEA
- NXP/Freescale S32K11x
- NXP/Freescale S32K14x
- Renesas R8C
- Renesas 78K0R
- Renesas RL78
- Renesas RH850
- Renesas RA6T1
- ST/NXP/Freescale SPC56xx/MPC56xx
- ST SPC584
- ST STM32F0xx
- ST STM32F1xx
- ST STM32F4xx
- ST STM32F7xx
- ST STM32L4xx
- ST STM8
- TI MSP430

Hardware wie UART/SPI/I2C/ADC/PWM/CAN wird in großen Teilen unterstützt, 
dabei halt aus Gründen der Kompatibilität nur in bestimmten 
Konfigurationen

Zusammen mit meinem Universalprogrammer lassen sich damit sehr schnell 
auch recht komplexe (je nach Sichtweise) Anwendungen erstellen und auch 
ggf. auf eine andere Controllerfamilie übertragen. Allerdings habe ich 
aus Aufwandsgründen recht früh die Toolchains "eingefroren", die jüngste 
verwendete GCC-Version sollte z.B. die 4.92 sein, bei manchen derzeit 
nicht mehr vom GCC unterstützen Architekturen (HCS12X) ist sie auch noch 
älter. Da ich aber eigene Pfade dafür verwende (/usr/local/toolchain) 
sollte es keine Probleme mit parallel dazu installierten Toolchains 
geben.

In letzter Zeit habe ich wieder einmal darüber nachgedacht, in welcher 
Weise sich das am sinnvollsten veröffentlichen ließe.
Lizenz wäre GPL, da auch ein paar fremde Sourcen, die unter der GPL 
stehen, mit dabei sind. Da ich schon seit vielen jahren eine eigene 
"Versionsverwaltung" nutze, dazu noch eine größere Anzahl von 
"Code-Generatoren" und eine Unmenge an Symlinks, scheidet ein 
öffentliches GIT-Repo für mich aus. Denn letztendlich muss sich für mich 
auch der Aufwand in Grenzen halten. Die Sourcen zu veröffentlichen, ist 
an sich kein Problem, die ganzen Proszesse die ein "rebuild_all" 
auslöst, nachvollziehbar zu dokumentieren, bin ich derzeit nicht 
willens. Allein die Dokumentation aller Bibliotheksfunktionen und 
teilweise der darunterliegenden Konzepte wird schon einen erheblichen 
Aufwand bedeuten. Da die Bibliothek kontinuierlich wächst, wäre auch ein 
regelmäßiger Update-Zyklus sinnvoll.

Bei einer so großen Anzahl an Controller-Familien gibt es natürlich auch 
Einschränkungen und Kompromisse. Da ich für einige Familien den 
SDCC-Compiler benutze, wird zum Beispiel C++ generell nicht unterstützt. 
Oder dass ich für vieles einen zentralen "Tick-Interrupt" benutze, 
einfach weil Interrupts auf PowerPC Architekturen bezüglich der 
Rechenzeit "teuer" sind. Oder DMA, was ein teil der Controller nicht 
unterstützt und wo ich noch bei der Ideenfindung für ein einheitliches 
Konzept bin. Außerdem habe ich eine feste Projekt-Struktur, nach der 
sich z.B. die Pfade in den Makefiles richten, die aber nicht unbedingt 
jedermanns Geschmack treffen wird.

Lauffähig ist das Ganze derzeit praktisch nur unter Linux, wobei die 
controllerspezifischen Dateien natürlich betriebssystem-unabhängig sind. 
Da sich Docker wohl recht einfach unter WSL2 betreiben lässt, könnte man 
auf diese Weise auch unter Windows damit arbeiten ohne dass für mich 
dadurch zusätzlicher Aufwand entsteht.

Da ich selbst mittlerweile fast ausschließlich dieses Build-System 
nutze, einfach weil es meinen Anforderungen entspricht, bin ich an 
dieser Stelle natürlich ein bisschen "betriebsblind". Von daher die 
Frage, in welcher Form das auch für andere interessant sein könnte und 4 
mögliche Antworten dazu:

A) Das Ganze ist zu speziell, das wird eher niemand nutzen wollen.

B) Sourcen und Binaries veröffentlichen, wer es nutzen möchte, ist halt 
an die Pfade gebunden oder ändert sie selbst.

C) Template-Packages für jeden Controller, die bereits alle notwendigen 
Dateien (außer der Toolchain) enthalten. Optimal für Weitergabe und 
Archivierung.

D) Docker-Container für jede Controller-Familie, damit könnte man das 
auch unter WSL2 und ggf. auch online nutzbar machen. Für ein paar 
Controllerfamilien nutze ich das bisher selbst.

Dazu kommt natürlich noch der Aufwand für die Dokumentation, die sich 
sicherlich in großen Teilen automatisch erzeugen lässt.

Vielleicht gibt es ja von Eurer Seite Meinungen und Anregungen dazu.

Jörg

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Wenn Du den Aufwand für Dich klein halten willst, dann kannst Du es halt 
nicht veröffentlichen. Wenn man Deine Library nicht auf einem relativ 
übliche Weg installieren kann (z.b. einfach über git), dann wird die 
auch keine installieren. Wenn es keine Dokumentation zur Library gibt, 
dann wird die auch keiner nutzen wollen. Wenn das ganze nur mit uralten 
Compilern funktioniert, dann läßt es sich evtl. auch schlecht mit 
anderen Libraries kombinieren.

Wenn die keiner nutzt, dann wirst Du auch keine Rückmeldung bekommen.

Automatisch generierte Dokumentation ist meiner Meinung nach, selten 
wirklich hilfreich, weil die dafür üblichen Tools halt auch nur die 
Signatur der Funktionen scannen.

von Εrnst B. (ernst)


Lesenswert?

Liest sich für mich als gäbe es da große Überschneidungen mit 
platformio.
Wäre evtl. eine Option, wenn du deine Compiler & Bibliotheken als 
platformio-packages anbietest.
(statt /usr/local/toolchain liegt's dann halt im ~/.platformio/packages)
Damit bist du das ganze "drumherum" los, hast eine Versions- und 
Abhängigkeitsverwaltung usw.

Joerg W. schrieb:
> Von daher die
> Frage, in welcher Form das auch für andere interessant sein könnte und 4
> mögliche Antworten dazu:

Wär halt die 5. Antwort auf die Frage...

von Olaf (Gast)


Lesenswert?

> Und es stellt sich mal wieder die Frage nach einer Veröffentlichung.

Halte ich fuer Unsinn. :-)

ICh hab das auch schonmal vor 10-15Jahren gemacht. Also eine 
Compilerversion fuer alle meine Controller (ARM, R8C, M16C, 68k, usw) 
uebersetzt.

Sobald du das veroeffnetlichst wird es jeder der es auf einer anderen 
Distribution uebersetzen will als du sie gerade nutzt, schnell an 
irgendwelche Probleme stossen. Waere er in der Lage diese Probleme zu 
beheben dann braeuchte er das nicht was du gemacht hast weil er ja sonst 
den Compiler direkt selber uebersetzen koennte.

Sobald das mehr wie 10Leute haben wird das grosse jammern beginnen, 
wieso gibt es nicht den neuesten Compiler, rabaeh, ich will aber doch, 
mit Fuss aufstampf. Wenn du aber mal diverse gcc-versionen mitgemacht 
hast dann wirst du wissen dies auch mit Arbeit verbunden ist. Ich nutze 
z.B immer noch gcc4.7.xx weil mir das reicht.

Eine Vereinheitlichung der Hardware kann auch nicht klappen weil einfach 
viel zu extrem unterschiedlich. Und dann gibt es auch MCUs die 
Banalitaeten (z.B IRQ-Priorisierung) nicht unterstuetzen und deshalb 
immer eine ganz andere Herangehensweise brauchen.

Deshalb wuerde immer nur mein eigenes Zeug nutzen. (Und mache das 
natuerlich auch so)

Und dann denke nur an die ganzen Typen auf Arduinolevel die noch nicht 
mal ihr Linkerscript an die eigene Hardware anpassen koennen. Wie sollen 
die damit klarkommen?

Olaf

von Joerg W. (joergwolfram)


Lesenswert?

So oder ähnlich habe ich das auch befürchtet. Das Problem mit den 
Compiler-Versionen und Distributionen lässt sich einigermaßen über die 
Docker-Container in den Griff bekommen. Anstelle "make prog" gibt es 
dann halt ein "./docker_make prog".

Bei den Interrupts komme ich meistens mit dem "Tick-Interrupt" aus, das 
ist natürlich ein Kompromiss und erfordert manchmal eine eigene 
Softwarephilosphie. Das ist zwar nicht immer der effizienteste Weg, aber 
mir ist halt Kompatibilität wichtiger.
Ein anderes Beispiel sind z.B. grafische LCDs. Ob 128x64, 64x128 
(hochkant), 320x240 oder 480x64, alle nutzen ein Image im RAM und 
dieselben Zeichenroutinen. Im Tick-Interrupt wird dann nur noch ein 
"serve_glcd18ax_ondemand();" aufgerufen, welches dann bei gesetztem 
Dirty-Flag in den nächsten Interrupts das geänderte Image blockweise in 
das Display überträgt, als  "serve_glcd18ax_ondemand_fast();" auch in 
kleineren Blöcken...

Der PlatformIO Ansatz klingt nicht schlecht, allerdings würde das wohl 
eine weitgehende Umstrukturierung (z.B. Versionsverwaltung) erfordern 
oder zweigleisiges Fahren. Und die Toolchain müsste damit wohl auch z.B. 
unter Windows laufen. Das hinzubekommen bin ich aber weder in der Lage 
noch willens dazu, denn das müsste ja auch entsprechend getestet werden. 
Aber ich werde es im Auge behalten.

Wer unbedingt eine grafische IDE braucht, für den ist das sowieso wohl 
eher nicht gedacht. Naja, vielleicht frage ich in ein paar Jahren 
nochmals nach ;-)


Jörg

von Olaf (Gast)


Lesenswert?

> Im Tick-Interrupt wird dann nur noch ein
> "serve_glcd18ax_ondemand();" aufgerufen, welches dann bei gesetztem
> Dirty-Flag in den nächsten Interrupts das geänderte Image blockweise in

Das lob ich mir, so mache ich das auch. :-)

> Wer unbedingt eine grafische IDE braucht, für den ist das sowieso wohl
> eher nicht gedacht.

Nicht unbedingt. Du kannst ja auch in Eclipse ein makefile-projekt
importieren und einfach nutzen. Ich schaetze grafische Umgebungen
durchaus, zumindest wenn man auf einfachem Level debuggen will
ist das manchmal ganz nett.
Schlimm sind nur Umgebungen (z.B das neue Zeugs mit dem Segger
gerade haussieren gehen) die das nicht koennen und dann wundern
sie sich das es keiner nutzt. .-)

BTW: Da ich gerade gesehen hab das du auch R8C nutzt, laeuft der 
Compiler
jetzt out of the Box? Als ich das damals implementiert habe hatte ich
etwas Emailverkehr mit D.J Dellorie weil es da einen bug beim startup 
gab ich glaube 24 anstatt 32bit adresse oder umgekehrt.

Olaf

von Ein T. (ein_typ)


Lesenswert?

Joerg W. schrieb:
> Der PlatformIO Ansatz klingt nicht schlecht, allerdings würde das wohl
> eine weitgehende Umstrukturierung (z.B. Versionsverwaltung) erfordern

Ganz unabhängig vom Thema des Threads ist es mir vollkommen 
unverständlich, warum ein fähiger und erfahrener Entwickler auf den 
Komfort einer modernen Versionsverwaltung verzichtet. Darf ich nach 
Deinem Grund fragen?

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Ich habe mit dem R8C keine Probleme, nutze aber auch eigenes Startup / 
Vektor-Tabelle. Ich kann die Sachen hier habe mal beide Dateien als 
Beispiel angehängt. Ich definiere viele Dinge auch in den (meist 
automatisch generierten) Header-Files als Konstanten, um das überhaupt 
einigermaßen einheitlich hinzubekommen.

Wobei bei größeren Controllern der main-Code und Konstantentabellen 
(z.B. Fonts) im Bereich bis 0xFFFF liegen müssen. In den Linkerscripts 
liegt der obere Bereich ab 0x10004 bei mir in einer eigenen Section. 
Ähnliches gibt es auch beim S12X, hier gibt es je nach Typ noch mehr 
Sections. In den Source-Dateien der Bibliothek haben dann die Funktionen 
z.B. ein "FKT1_TYPE" Attribut, welches bei den meisten Controllern 
einfach als leer definiert ist, bei Controllern mit Bank-Switching auf 
die entsprechende Section zeigen.

Jörg

von Εrnst B. (ernst)


Lesenswert?

Joerg W. schrieb:
> Wer unbedingt eine grafische IDE braucht, für den ist das sowieso wohl
> eher nicht gedacht.

Nur der Vollständigkeit halber: Platformio läuft auch komplett 
unabhängig von einer IDE an der Kommandozeile.

Joerg W. schrieb:
> Ein anderes Beispiel sind z.B. grafische LCDs. Ob 128x64, 64x128
> (hochkant), 320x240 oder 480x64, alle nutzen ein Image im RAM

Das würde ich nicht als gegeben hinnehmen. Mit LVGL z.B. brauchts nur 
RAM für ein paar Zeilen vom Bild, idealerweise in zwei Blöcken. Da kann 
dann einer befüllt/gezeichnet werden, während der andere per DMA zum 
Display wandert.

von Joerg W. (joergwolfram)


Lesenswert?

Ein T. schrieb
> Darf ich nach Deinem Grund fragen?

Ich habe mir vor ungefähr 30 Jahren halt ein System überlegt, damals 
noch auf dem Atari ST. Auf der Basis von Verzeichnissen, Versionen 
werden hochgezählt und Schnappschüsse erhalten einen fortlaufenden 
Buchstaben. Die letzte Version wird zur Neuen und wandert in den 
"alt"-Ordner (ohne die Schnappschüsse), um sie bei Problemen schnell zur 
Verfügung zu haben. Für noch ältere Versionen kann ich immer noch auf 
das inkrementelle Backup (Back in Time) mit wöchentlichen Snapshots der 
letzten Jahre zurückgreifen.

Das nutze ich bis heute noch und ist für meine Belange völlig 
ausreichend. bis jetzt gibt es keinen Leidensdruck, auf irgendetwas 
anderes zu wechseln.

Jörg

von Joerg W. (joergwolfram)


Lesenswert?

Εrnst B. schrieb:
> Das würde ich nicht als gegeben hinnehmen.

Bei mir ist es halt so gegeben. Bei einigen Displays ohne eigenen 
Controller (320x240, 480x64) kann ich die Daten nicht "on the fly" 
generieren, sondern brauche einen Display-Buffer. Für die 128x64 kann 
man die 1K Buffer meist auch verschmerzen und andere Grafik-Displays 
habe ich bis jetzt kaum genutzt.
Und weil ich halt faul bin, nutze ich dieselben Routinen so für 
unterschiedliche Displays.

Und DMA ist halt auf jeder Controller-Familie anders implementiert, von 
gar keiner über die unterschiedlichste Ausprägungen in Hardware bis zum 
XGATE Coprozessor in den S12X.

Jörg

von Ein T. (ein_typ)


Lesenswert?

Joerg W. schrieb:
> Ein T. schrieb
>> Darf ich nach Deinem Grund fragen?
>
> Ich habe mir vor ungefähr 30 Jahren halt ein System überlegt, damals
> noch auf dem Atari ST. Auf der Basis von Verzeichnissen, Versionen
> werden hochgezählt und Schnappschüsse erhalten einen fortlaufenden
> Buchstaben. Die letzte Version wird zur Neuen und wandert in den
> "alt"-Ordner (ohne die Schnappschüsse), um sie bei Problemen schnell zur
> Verfügung zu haben. Für noch ältere Versionen kann ich immer noch auf
> das inkrementelle Backup (Back in Time) mit wöchentlichen Snapshots der
> letzten Jahre zurückgreifen.

Lieben Dank für Deine Antwort. Na klar, das kann ich gut verstehen -- 
ich hatte früher auch so ein eigenes System und hab' mich lange 
schwergetan, das mit einem "fertigen" Versionskontrollsystem abzulösen, 
in meinem Fall erst Subversion und mittlerweile, aus verschiedenen 
Gründen, Git. Am Ende muß ich aber (für mich, natürlich) sagen, daß es 
sich gelohnt hat -- denn jetzt muß ich nichts mehr manuell machen und 
etliche nützliche Funktionen fallen dabei gleich mit aus der Tüte. Aber 
wenn Du andererseits ein System hast, das gut funktioniert, Deine 
Aufgaben erfüllt, und an das Du gewöhnt bist: da bedarf es schon sehr 
guter Argumente, um das abzulösen. ;-)

von Olaf (Gast)


Lesenswert?

> Am Ende muß ich aber (für mich, natürlich) sagen, daß es
> sich gelohnt hat --

Ich denke mal es ist ein Unterschied ob man beruflich was macht
wo man jeden Tag eincheckt und dabei gleich die Codingrules
geprueft werden, oder privat aus Spass alle paar Tage/Wochen
mal was zaubert.

Meine privaten Platinen sind auch nicht fuer Massenproduktion,
EMV, Vibration, Atex, RED, usw., geeignet.
Zuhause macht man Kunstwerke, in der Firma Kunsthandwerk. .-)

Olaf

von Ein T. (ein_typ)


Lesenswert?

Olaf schrieb:
> Ich denke mal es ist ein Unterschied ob man beruflich was macht
> wo man jeden Tag eincheckt und dabei gleich die Codingrules
> geprueft werden, oder privat aus Spass alle paar Tage/Wochen
> mal was zaubert.

Ja, natürlich. Allerdings sehe ich halt schon, wieviel Aufwand ich 
früher für mein eigenes System hatte, sowohl mit der Pflege der Skripte 
als auch bei der eigentlichen Versionsverwaltung, und wie wenig Streß 
ich dann mit Subversion / Git hatte bzw. habe. Klar, ein eigenes System 
kann man immer besser an die eigenen Bedürfnisse und Vorstellungen 
anpassen, während man sich bei einem fertigen System womöglich auf siene 
Features einlassen und dabei womöglich den eigenen Workflow ein wenig 
anpassen muß, aber am Ende kann ich nur sagen, daß ich mittlerweile viel 
weniger Arbeit habe. Und am Ende ist die Faulheit laut Larry Wall eine 
der Kardinaltugenden von guten Enwicklern... daran gemessen muß ich echt 
super sein! ;-)

> Meine privaten Platinen sind auch nicht fuer Massenproduktion,
> EMV, Vibration, Atex, RED, usw., geeignet.
> Zuhause macht man Kunstwerke, in der Firma Kunsthandwerk. .-)

TY, YMMD! ;-)

von J. S. (jojos)


Lesenswert?

Es mag ja Leute geben die das mögen werden, aber dazu müsste es 
zumindest auf github liegen. Da geht es ja auch um Issues, PRs, 
Diskussion und Wiki, nicht nur um tote Ablage.
Und ich finde es sinnvoller auf Standards zu setzen, für Buildysteme 
kommt man um CMake kaum herum wenn es um so umfangreiche Konfiguration 
geht. Der Vorteil ist dann das es ein großes Ökosystem drumherum gibt, 
wie z.B. die cmake-tools in VSC. Das Ganze mittlerweile für das 
Dreigestirn Mac, Linux, Windows.  Die Entwickler mögen keine 
Ausgrenzung, und dieses Multikulti funktioniert sehr gut. Dokumentiert 
ist das auch alles und es gibt Tutorials und Lernvideos, das möchte ich 
auch nicht selber machen.
Ich habe einen Großteil in meinem Berufsleben an und mit einem 
proprietärem OS und Tools gearbeitet und damit Anwendungen wie am 
Fliessband erstellt. Das war auch eine Standardisierung, aber eine 
Insel, anders als der Rest der Welt. Damit nabelt man sich auch von 
anderer Entwicklung ab und das mag ich gar nicht mehr wenn ich den 
Vergleich sehe. Dafür muss man auch mal den Code und die Arbeit anderer 
akzeptieren.
Und Snapshots sind absolut kein Ersatz für git oder andere VCS. Ich kann 
Code in wenigen Minuten schreddern und da nützt mir kein Backup von 
gestern. Arbeiten mit commits, branches und einem Server für eine 
zentrale Version sind einfach Gold wert. Vergleiche mit anderen 
Versionen mit dem eingebauten git in VSC gehen auf Knopfdruck und sind 
absolut genial, das hätte mir früher viel Zip-Chaos und überschriebenen 
Code gespart.

: Bearbeitet durch User
von Olaf (Gast)


Lesenswert?

> Es mag ja Leute geben die das mögen werden, aber dazu müsste es
> zumindest auf github liegen.

Noe muss nicht. Wenn man ein NAS hat ist die Installation
von GIT oder SVN dort eine Sachen von ein paar Minuten.

> für Buildysteme kommt man um CMake kaum herum

Doch doch, das schaffe ich muehelos und mit Freude da rum zu kommen.

Olaf

von J. S. (jojos)


Lesenswert?

Olaf schrieb:
> Noe muss nicht. Wenn man ein NAS hat ist die Installation
> von GIT oder SVN dort eine Sachen von ein paar Minuten.

und das möchtest du dann für alle freigeben?

von Joerg W. (joergwolfram)


Lesenswert?

Jetzt die ganzen Build-Prozesse umzubauen, habe ich ehrlich gesagt nicht 
vor.
Im Moment ist praktisch alles automatisiert, von der Generierung der 
Includes, Linkerscripts, Makefiles bis zum Bauen der Bibliothek für 
jeden einzelnen Controller. Meist nach Typlisten-Dateien und 
Template-Files, aus denen sich dann (meist Perl) Scripts die notwendigen 
Informationen holen. Und weitere Scripts, die z.B. aus den ganzen 
Funktions-Quellcodes die Funktions-Prototypen generieren. Die kompletten 
Dateien zum Bauen einer Bibliothek existieren aber nur in dem Moment an 
der "richtigen" Stelle im Verzeichnisbaum, wenn die Bibliothek gebaut 
wird. Danach wird alles nicht benötigte gelöscht, neue Dateien nach 
Liste geholt und die Bibliothek für den nächsten Controller gebaut. 
Aktuell braucht mein Laptop ein paar Stunden dafür, aber das kann man 
auch in der Nacht laufen lassen und passiert eigentlich nur bei einem 
neuen Release.

Ein weiterer wichtiger Grund ist ja der, dass ich (fertige) Projekte als 
Open Source veröffentlichen möchte, die auf diesen Bibliotheken 
aufbauen. Dann sollte es zumindest relativ einfach möglich sein, diese 
Projekte abgeändert neu zu compilieren. Aber vielleicht sehe ich da auch 
Probleme, wo eigentlich keine sind...

Jörg

von olaf (Gast)


Lesenswert?

> Aber vielleicht sehe ich da auch Probleme, wo eigentlich keine sind...

Ich wuerde eher sagen du gehoerst damit zu den wenigen die sich
fuer die Probleme interessieren. Und dabei hast du im gegenueber
den meisten anderen Programmieren noch einen gewaltigen Vorteil,
du kannst davon ausgehen das deine "Kunden" programmieren koennen
weil sie sonst ja kaum an dem Projekt interessiert waeren.
Daher sollten die zumindest kleinere Probleme auch selbst gerade
biegen koennen.

Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.