Forum: Offtopic Codegeneratoren für Mikrocontroller, die (fast) 100 % des Codes erzeugen?


von Erwin M. (nobodyy)


Lesenswert?

Gibt es Codegeneratoren für Mikrocontroller, die (fast) 100 % des Codes 
erzeugen können?

Angetestet habe ich mal Matlab/Simulink, aber der damit erzeugte Code 
ist weitgehend generisch und ohne größeren Aufwand nur auf dem PC 
lauffähig. Ich suche aber einen Codegenerator der fast den kompletten 
Code erzeugt, beispielsweise aus einem Zustandsübergangsmodell. Bis auf 
die Hardware-Konfiguration wie CPU-Takt, Größe vom externen RAM usw. 
soll der Generator alles selber machen, inklusive Timing und Sheduling, 
weil sich beides aus dem Modell ergibt und damit Aufgabe des 
Codegenerators ist.
Welche Codegeneratoren können das?

von Purzel H. (hacky)


Lesenswert?

Toll ... wer will mehr ? Man koennt ja selbst sowas schreiben, wenn 
Bedarf danach waer.

von fdssd (Gast)


Lesenswert?

Erwin Meyer schrieb:
> aber der damit erzeugte Code
> ist weitgehend generisch

und läuft nicht auf verschiedenen platformen?
dann ist es kein generischer code
sondern zusammengewürfelter kram aus einem sehr kuriosen codegenerator

dann schreib für die platform(en) ne grundsoftware wo du den erzeugten 
code parsen kannst

von Daniel P. (dpolz)


Lesenswert?

Erwin Meyer schrieb:
> Ich suche aber einen Codegenerator der fast den kompletten
> Code erzeugt, beispielsweise aus einem Zustandsübergangsmodell.

Das gibt es für VHDL etc. und nennt sich qfsm. Du hackst einfach nur ein 
Zustandsübergangsmodell ein und das Programm rechnet es in eine 
Hardwarebeschreibungssprache um.

von Erwin M. (nobodyy)


Lesenswert?

Aha, aber eigentlich suche ich einen Generator für C (oder C++, ...).
Im Prinzip reicht also ein Codegenerator für VHDL und ein Compiler der 
es nach C übersetzt, oder?

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

ja, und wenns das gibt mit Spracheingabe und semantischem 
Fuzzy-Analyse-Modul  ;-)

von (prx) A. K. (prx)


Lesenswert?

Nicht zu vergessen mit Do-what-I-mean-not-what-I-say Optimierer!

von Frank L. (franklink)


Lesenswert?

A. K. schrieb:
> Nicht zu vergessen mit Do-what-I-mean-not-what-I-say Optimierer!

Genau, der muss unbedingt rein, damit jeder Entwickler auch ja nur seine 
eigene Semantik und Methodik verwenden kann...

:-)))

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Erwin Meyer schrieb:
> Gibt es Codegeneratoren für Mikrocontroller, die (fast) 100 % des Codes
> erzeugen können?

Softwareentwickler

von P. M. (o-o)


Lesenswert?

Vielleicht verrätst du uns, was du genau willst. Gibt ja diverse 
Möglichkeiten, das Programmieren zu vereinfachen:

- Bibliotheken einbinden
- Code-Templates
- Tools, die einem Registerkonfigurationen berechnen

Für viele Anwendungen muss man danach kaum mehr eine Zeile Code selber 
schreiben.

Einen FSM-Codegenerator kann man sich in ein paar Stunden mit jeder 
beliebigen Skript/Programmiersprache auch sehr gut selbst basteln.

Ganz ohne Programmierkenntnisse wird's aber sowieso nie gehen, ausser 
auf einem grösstenteils vordefinierten System.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Bascom.

von Codegenerator (Gast)


Lesenswert?

Wozu Zustandsübergangsmodelle, die C-Code erzeugen, der dann wieder 
umständlich compiliert und gelinkt werden muss?
Ich suche einen Codegenerator mit Chefspracherkennung, der die 
Anforderungen meines Chefs direkt in Maschinencode umsetzt und den 
Prozessor automatisch flasht.
Optimal wäre ein integrierter Gehaltserhöhungsunterschriftengenerator 
mit Dauerurlaubsgenemigungssignaturgenerierung.

von Nachtaktiver (Gast)


Lesenswert?

looool. :D

von Klaus W. (mfgkw)


Lesenswert?

Codegenerator schrieb:
> Wozu Zustandsübergangsmodelle, die C-Code erzeugen, der dann wieder
> umständlich compiliert und gelinkt werden muss?
> Ich suche einen Codegenerator mit Chefspracherkennung, der die
> Anforderungen meines Chefs direkt in Maschinencode umsetzt und den
> Prozessor automatisch flasht.


genau das sucht dein Chef schon lange, um dich rauswerfen zu können.
Sei froh, daß es das nicht gibt.

von avrGerd (Gast)


Lesenswert?

Hallo Erwin,

schau Dir mal den Realizer von Actum Solutions an.
Damit kannst Du sowas machen.

Ist halt nicht billig und das Ding erzeugt "nur" fertigen Code.
Wenn Du ein Feature nicht findest, dann kannst Du Assembler Macros 
selber schreiben.

Die Idee von Actum hinter dem Tool ist, schnell und übersichtlich uC zu 
Programmieren, auch wenn man kein Softi ist.


Gruß,
avrGerd

von technikadonis (Gast)


Lesenswert?

VisSIM ist ein Codegenerator für TIs. Ein Kollege Schaft damit. Mehr 
weiß ich auch nicht darüber.

von Florian V. (Gast)


Lesenswert?

Ihr macht Euch darüber lustig, als wenn das ein total abwegiger Wunsch 
wäre.

Dabei ist das insbesondere in der Softwarenentwicklung für Steuergeräte 
seit Jahren ein etabliertes Feature. Stichwort "Seriencodegenerierung 
aus Matlab/Simulink". Ich vermute mal allerdings auch recht teuer.

von iaoffline (Gast)


Lesenswert?

google graphical microcontroller programming

von B. G. (smarti)


Lesenswert?


von Bernd S. (bernd_s)


Lesenswert?

Von Elektrobit Automotive (EB) gibt es das Programm "Guide". Geht in 
deine Richtung, nur dass der Code meines Wissens nicht für 
Mikrocontroller erzeugt wird, sondern für Windows CE-Geräte.

Hier wird mit Zustandsdiagrammen gearbeitet.

von Vlad T. (vlad_tepesch)


Lesenswert?

warum sollte jemand sowas programmieren, wenn er nach Fertigstellung 
arbeitslos wäre

von (prx) A. K. (prx)


Lesenswert?

Florian V. schrieb:

> Ihr macht Euch darüber lustig, als wenn das ein total abwegiger Wunsch
> wäre.

Mitnichten. Der Wunsch selbst nicht. ;-)

Mal im Ernst: Natürlich gibt es solche Werkzeuge. Und je eingeschränkter 
die Anforderungen an die Art der Problemstellung sind, desto effektiver 
kann so ein Werkzeug sein. Was umgekehrt auch heisst, dass solche 
Werkzeuge oft nur einen eingeschränkten Kreis von Problemen gut 
abhandeln können.

Ebenso gilt hier wie für alle Highlevel-Programmierung: Je mehr komplexe 
Layer sich bei der Programmierung unter dem eigenen Programm befinden, 
desto mehr Bugs aus diesen Layern landen auf dem Tisch und desto mehr 
Doku und Support-Fragen ergeben sich. Egal ob das nun Codegeneratoren 
sind, oder APIs wie DotNet.

von Robert L. (lrlr)


Lesenswert?

finde das auch nicht so abwegig..
vom Prinzip mach ja jede SPS sowas
(und JA es wird wohl meist nur "konfiguriert" und kein Code erzeugt, 
...)

von Axel B. (argentan)


Lesenswert?

Rational Rhapsody kann aus UML C oder C++ Code für Embedded Controller 
erzeugen. Ist aber von IBM und daher extrateuer.

von Peter D. (peda)


Lesenswert?

Viel wichtiger als ein Codegenerator wäre erstmal ein 
Pflichtenheftgenerator.
Also das Erstellen der kompletten Hardware- und Funktionsbeschreibung.
Dann ginge das Entwickeln und Programmieren viel einfacher.


Peter

von Stefanie B. (sbs)


Lesenswert?

dspace Targetlink

von Purzel H. (hacky)


Lesenswert?

>Codegeneratoren für Mikrocontroller, die (fast) 100 % des Codes erzeugen?

Schau mal bei den SPS rein, da gibt's graphische Tools, die machen 
alles. Keine Zeile Code noetig. Dafuer wird auch ein 32bitter verbraten, 
und unter einer Milisekunde Reaktionszeit ist nichts. Mit Stromspar ist 
auch nichts.

von Heinz L. (ducttape)


Lesenswert?

Gibt's. Nennt sich Programmierer. Schüttet man oben Arbeitsanweisung und 
Koffein rein und nach einiger Zeit fällt bei der Gelegenheit Code raus.

von Karl-heinz S. (cletus)


Lesenswert?

Schau dir mal z.B: ethersex an.

Alternativ gibt es auch von Conrad diese C-Stamp-Geschichte.


Oder (kein Scheiß) von Lego: Mindstorms und MS NXT

Da kannste grafisch sagen, was Phase ist und los gehts.


ABER:

Du musst dem Rechner IMMER sagen, was er machen soll. Und das wiederum 
wird als Programmieren bezeichnet. Ob das nun C  Java  Labview ist, es 
bleibt Programmieren.

von Sascha W. (arno_nyhm)


Lesenswert?

Mit LabVIEW von National Instruments könnte das auch Möglich sein - die 
Module für Flussdiagramm-Eingabe und der C-Code-Generator sollten sich 
kombinieren lassen.

von Michael S. (technicans)


Lesenswert?

Heinz L. schrieb:
> Koffein rein und nach einiger Zeit fällt bei der Gelegenheit Code raus.

Das fässt dann aber keiner an.

von Christoph H. (mc-entwickler)


Lesenswert?

>Gibt es Codegeneratoren für Mikrocontroller, die (fast) 100 % des Codes
>erzeugen können?

Rational Rhapsody.
http://www-01.ibm.com/software/rational/products/rhapsody/developer/

von Erwin M. (nobodyy)


Lesenswert?

Michael S. schrieb:
> Heinz L. schrieb:
>> Koffein rein und nach einiger Zeit fällt bei der Gelegenheit Code raus.
>
> Das fässt dann aber keiner an.

Ja, das ist wie bei selbstdokumentierendem Code ("Das sieht doch jeder", 
"Das war schon immer so") und beim Ballmer-Peak ( https://xkcd.com/323/ 
).
Es wäre ja schon viel gewonnen wenn es einen Grob- und einen Feinentwurf 
gäbe, der genau so umgesetzt wurde. Aber schon das ist selten.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Da noch nicht genannt:
QM von Quantum Leaps
visualState von IAR

von Christoph H. (mc-entwickler)


Lesenswert?

>QM von Quantum Leaps

Open Source ... klingt gut. Hast Du das Programm schon einmal 
ausprobiert?
Rational Rhapsody ist etwas teuer, liegt so bei mehreren 1000 Euro.

von Thomas K. (tomk)


Lesenswert?

Hi,

@Erwin Meyer und andere:

Ja, es gibt solche Generatoren, die von sich selbst den Anspruch 
erheben, den gesamten Steuergeräte-Code erzeugen zu können!

Und NEIN, sie werden mit fast (!) absoluter Sicherheit nicht das tun, 
was Du vielleicht geplant hast!

Der Anspruch ist der feuchte Traum jedes höheren leitenden Mitarbeiters 
in unzähligen Firmen auf der Welt, die zum einen nicht wissen (und es 
eventuell auch nicht wissen wollen!), was tatsächlich alles dahinter 
steht, sich aber zum anderen darüber ärgern, so viel (!) an "popelige 
Programmierer" zu bezahlen! (ok, da ist jetzt auch ein gut Teil 
Sarkasmus drin, aber letztlich ist es recht oft so!)

Peter Dannegger hat geschrieben, das es zuerst mal einen 
"Pflichtenheft-Generator" bräuchte - und hat damit vollkommen Recht! Mal 
abgesehen davon, das Du bei solch einem Pflichtenheft-Generator das 
identische Problem bekommst) I.d.R. sind solche "Pflichtenhefte" 
(bewusst in Hochkomma geschrieben, weil diese den Namen nicht 
verdienen!) nur: "ich stelle mir vor ... und DU musst das jetzt 
realisieren!". Sie sind leider meistens das Papier nicht wert!

Erst danach könntest Du überhaupt einen Generator auswählen und prüfen, 
ob er Deinen Ansprüchen (aka Pflichtenheft! ;-) ) genügt! Was dann auch 
dazu führen kann, das es trotzdem nicht funktioniert. Zumal von den 
Herstellern solcher Generatoren recht oft viel versprochen wird 
(Marketing), was das Produkt im Einzelfall einfach nicht erfüllt.

Alles in allem: für Spezialfälle (!!!) kannst Du so etwas bekommen! (und 
mal nicht auf das - sehr oft vorhandene - Preisschild geschaut) Jedoch 
nicht "ein Tool für alle Fälle"!

Für wirklich gute, stabile und wartbare, damit letztlich auch 
bezahlbare Software wirst Du Wissen in verschiedenen Kategorien 
benötigen. Als Hobbyist bist das Du selbst. Als Firma wirst Du diese 
Leute auch entsprechend bezahlen müssen. Und nicht etwa, weil die "armen 
Ingenieure" ja auch mal eine Semmel zu beissen haben wollen, sondern 
weil das - vor allem in der heutigen und vermehrt auch in der 
zukuenftigen Zeit - mit all den gestiegenen Ansprüchen und 
Funktionalitäten auf der einen Seite und den gestiegenen Sicherheits- 
und gesetzlichen Anforderungen auf der anderen Seite einfach notwendig 
ist.

Schönen Tag noch, Thomas

von Erwin M. (nobodyy)


Lesenswert?

Thomas K. schrieb:
> Der Anspruch ist der feuchte Traum jedes höheren leitenden Mitarbeiters
> in unzähligen Firmen auf der Welt, die zum einen nicht wissen (und es
> eventuell auch nicht wissen wollen!), was tatsächlich alles dahinter
> steht, sich aber zum anderen darüber ärgern, so viel (!) an "popelige
> Programmierer" zu bezahlen! (ok, da ist jetzt auch ein gut Teil
> Sarkasmus drin, aber letztlich ist es recht oft so!)

Ja, überzogene Ansprüche an Programmierer, von Leuten die davon keine 
Ahnung haben, kenne ich gut.
Aber das ein Codegenerator keinen Programmierer ersetzen kann ist doch 
klar: Zuerst muss zu einem Lastenheft ein Pflichtenheft erstellt werden. 
Daraus muss ein Grobentwurf abgeleitet werden und daraus wiederum ein 
Feinentwurf, aus dem ein Modell abgeleitet wird, das man dem 
Codegenerator geben kann.

Danach muss der Programmierer meist noch nachhelfen, z. B. die 
Berechnung von Polynomen nach dem Horner-Schema durchführen und nicht 
nach der Definitionsformel, wenn das zu langsam ist.
Und zur Fehlersuche oder Wartung wird der Programmierer auch benötigt.
Die Änderungen müssen ja nicht nur in den Sourcecode, sondern in die 
Linie darüber, im Worst Case bis zum Pflichtenheft und weiter wenn sich 
herausstellt das etwas nicht realisierbar ist.

von Thomas K. (tomk)


Lesenswert?

Hi,

Erwin Meyer schrieb:
> Aber das ein Codegenerator keinen Programmierer ersetzen kann ist doch
> klar: Zuerst muss zu einem Lastenheft ein Pflichtenheft erstellt werden.
> Daraus muss ein Grobentwurf abgeleitet werden und daraus wiederum ein
> Feinentwurf, aus dem ein Modell abgeleitet wird, das man dem
> Codegenerator geben kann.

Es sollte ein Gesetz geben, nach dem jeder leitende Angestellte einer 
Firma, die mit Software zu tun hat, dies jeden Morgen vor dem 
Einschalten des eigenen Computers aufzusagen hat! :-) So ungefähr, wie 
der Frühsport der Asiaten.

Nun ja, so vor dem Jahresende wird man ja noch träumen dürfen! :-) Aber 
Träume müssen eben nicht in Erfüllung gehen. Das sagt mir meine 
Berufserfahrung auf diesem Gebiet.

Das angesprochene Matlab/Simulink ist sicher ein Kandidat. Wird 
praktisch (praktisch, weil ich eben noch nicht alle kenne. :-) ) in der 
gesamten deutschen Automobilindustrie zusammen mit ASCET zur 
Codeentwicklung verwendet. Das bezieht sich dann aber fast 
ausschliesslich auf die funktionale Entwicklung im Steuergerät! Nicht 
auf das OS und Infrastruktur. (Bus-Ankopplung, Sensoren, Aktoren etc.) 
Und die hat dann mitunter auch noch so ihre Tücken.

Und Matlab/Simulink hat ob der Historie von Matlab in Steuergeräten auch 
eine Reihe von Problemen. Nur um eines (aber recht zentrales) zu nennen: 
FloatingPoint vs. FixPoint. Ist machbar, solange derjenige, der davor 
sitzt, auch weiss, was er da tut. (also normales Business! ;-) ) Für 
kleine Steuerungen, z.B. mit den 8-Bit-AVR's aber m.E. nach unsinnig. 
Die 32-bit-ARM-Prozessoren bzw. AVR32 sind da schon eher geeignet.

Aber: wenn das Ganze sich rentieren soll und auch bearbeitbar bleiben 
soll, braucht's a) Aufwand (=Preis) und b) Wissen! Also auch wie üblich! 
:-)

Schönen Tag noch, Thomas

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.