Forum: Mikrocontroller und Digitale Elektronik Python für Arm? kompilierbar?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mr.Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gibt es eigentlich ein kompilierbares Python für Arm?
Also so, das man keine extra Firmware aufspielen muss oder sowas, 
sondern am PC programmieren, rüber auf den Controller..fertig?
Wie in Pascal oder C auch?

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Ich hab' keine Ahnung von Python, aber so auf die Schnelle scheints mir 
da Nuitka zu geben, was so eine Art Compiler fuer Python sein koennte.
"Wie bei Pascal und C auch" - das haut ja nicht so ohne weiteres hin. Da 
brauchst du Crosscompiler, die selbst z.b. auf einem x86 lauffaehig sind 
und dir executables erzeugen, die dann unter arm lauffaehig sind. Da 
vermute ich mal, dass nuitka das nicht kann.
Aber man kann sich zumindest unter linux was zusammenbasteln, mit dem 
man auch auf z.b. einer x86 Hardware Binaries "laufen" lassen kann, die 
z.B. fuer arm gebaut wurden. Dazu brauchts ein statisch gebautes qemu 
und ein bisschen binfmt "woodoo magic".
Damit vermute ich mal, koenntest du dir was zusammenbasteln, wo du auf 
dem PC was in Python tipperst, das per (arm-)Nuitka uebersetzt und das 
dann auf deinem arm-Target spielt.
Ist aber sicher ein ordentlicher Aufriss.

Gruss
WK

von rmu (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe nicht wie das mit "keine extra firmware aufspielen" gemeint 
ist.

Micropython läuft auf ARM Cortex Prozessoren und inzwischen auch ein 
paar anderen Architekturen, braucht halt eine Menge Flash und Ram, zum 
herumspielen und schnell ausprobieren ists aber genial und deutlich 
lesbarer und "normaler" als z.B. Forth.

Theoretisch ist Micropython als komplette Entwicklungsumgebung auf dem 
µC verwendbar, benötigt wird nur ein serielles Terminal. Das komplette 
Python mit Anwendung am PC erstellen und fix fertig in den µC knallen 
geht aber auch. Micropython läuft auch auf dem PC.

von Mr.Tom (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
"Micropython läuft auf ARM Cortex Prozessoren und inzwischen auch ein
paar anderen Architekturen, braucht halt eine Menge Flash und Ram,"

ähm..siehst Du und das meine ich..
Genauso wie bei PAscal und C...suche ich Python..was kann mand aran 
nicht verstehen?!
Der Vorposter hatte es doch schon geschrieben..ein fertiges Kompilat 
suche ich...

von Mark B. (markbrandis)


Bewertung
0 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> ähm..siehst Du und das meine ich..
> Genauso wie bei PAscal und C...suche ich Python..was kann mand aran
> nicht verstehen?!

Zum Beispiel den Unterschied zwischen Compiler und Cross-Compiler.

Ich kann auf dem PC Code in C oder in Pascal schreiben soviel ich will, 
das nützt mir für einen ARM-Prozessor rein gar nichts wenn mein Code für 
einen X86 PC kompiliert wird.

von Arduino Fanboy D. (ufuf)


Bewertung
1 lesenswert
nicht lesenswert
rmu schrieb:
> und deutlich
> lesbarer und "normaler" als z.B. Forth.

Einspruch!!

Ob man wirklich diese beiden vergleichen darf, halte ich für fraglich.

Aber für mich subjektiv:
Forth halte ich für leichter lesbar.

Allerdings, wer nicht in UPN denkt, der hat in Forth verschissen.
Und ich kann nicht (gut) in den python Einrückungen denken.

von Mark B. (markbrandis)


Bewertung
0 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> Gibt es eigentlich ein kompilierbares Python für Arm?
> Also so, das man keine extra Firmware aufspielen muss oder sowas,
> sondern am PC programmieren, rüber auf den Controller..fertig?

Das geht natürlich auch nur dann, wenn auf dem Controller ein 
Betriebssystem läuft. Welches das sein soll, hast Du leider 
verschwiegen.

von Mr.Tom (Gast)


Bewertung
-5 lesenswert
nicht lesenswert
also einer hat es bislang verstanden....
Was interesseirt denn das betreiebssystem?!?!?
Ich schreiben will Python auf PC flashen auf µc UGH
Dann laufen..fertgi
verstehen?!

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> also einer hat es bislang verstanden....

Du meinst mich?
Ja!
Verstanden!

Kann dir aber nicht helfen, weil ich das Python Zeugs meide.
Und Googlen kannst du sicher selber.

: Bearbeitet durch User
von Mr.Tom (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
meinte eigentlich Dergute....der hat es als einziger verstanden, was ich 
meinte..ich verstehe nicht wieso das für andere so schwer zu verstehen 
ist.

von Mark B. (markbrandis)


Bewertung
1 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> also einer hat es bislang verstanden....
> Was interesseirt denn das betreiebssystem?!?!?
> Ich schreiben will Python auf PC flashen auf µc UGH
> Dann laufen..fertgi
> verstehen?!

Du hast gesagt, Du willst "keine extra Firmware aufspielen". Das war 
etwas missverständlich. Natürlich musst Du Firmware aufspielen, was Du 
ja in dem Moment tust wo Du das kompilierte Programm vom PC auf den 
Controller drauf flashst.

Du willst also eine Software, die auf dem PC läuft und die aus 
Python-Quellcode ein lauffähiges Binary für ARM-Prozessoren erzeugt. 
Inklusive Startup Code, übersetzter Bibliotheken und was man sonst so 
braucht. Richtig?

von Mr.Tom (Gast)


Bewertung
0 lesenswert
nicht lesenswert
jo, genau das, eben wie in C oder Pascal oder sonstwas auch

von Harry L. (mysth)


Bewertung
0 lesenswert
nicht lesenswert
Python ist ein Interpreter und kein Compiler

von Dergute W. (derguteweka)


Bewertung
2 lesenswert
nicht lesenswert
Harry L. schrieb:
> Python ist ein Interpreter und kein Compiler

<loriot mode=on>Ach<loriot mode=off>

SCNR,
WK

von Mr.Tom (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
eben, und was hat das jetzt damit zu tun?!?
Basic gibt es auch so und so

von Εrnst B. (ernst)


Bewertung
0 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> Basic gibt es auch so und so

"Basic" ist sehr weit gefasst, für einen speziellen, auf 
compilierbarkeit optimierten Basic-Dialekt ist es auch kein Problem, 
einen Compiler -> ARM zu bauen.

Python hat ein paar Sprachkonstrukte, die sowas erschweren bzw. 
erfordern, dass der Ziel-µC mehr oder weniger trotzdem einen 
vollwertigen Python-Interpreter bereithalten muss.

https://docs.python.org/2/library/functions.html#eval
https://docs.python.org/2/reference/simple_stmts.html#exec
_import_ (dynamisches nachladen von modulen)
...

von Mark B. (markbrandis)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht kann PyPy sowas, bin mir nicht 100% sicher:

http://pypy.org/features.html

> The following CPU architectures are supported and maintained:

>    x86 (IA-32) and x86_64
>    ARM platforms (ARMv6 or ARMv7, with VFPv3)
>    PowerPC 64bit both little and big endian
>    System Z (s390x)

: Bearbeitet durch User
von M.A. S. (mse2)


Bewertung
0 lesenswert
nicht lesenswert
Nicht ganz ein Python-Compiler aber vielleicht ein möglicher Ersatz?
Cython

(Gefunden im Wikipedia Artikel zu Python.)

von Jobst M. (jobstens-de)


Bewertung
6 lesenswert
nicht lesenswert
Python ist einfach das falsche Werkzeug für diese Aufgabe.
Ich verstehe auch nicht, weshalb man auf die Idee kommt, es dafür 
benutzen zu wollen.
Das ist nicht böse gemeint, aber es kommt mir so vor, als wenn jemand 
mit einem Hammer eine Schraube fest ziehen möchte und sich darüber 
beklagt, dass es ja auch mit einem Schraubendreher (C) oder sogar mit 
einer Zange (Basic) geht. Im blödesten Fall hat man sich extra den 
Umgang mit dem Hammer angeeignet.
Und wenn man Hammer richtig kann, dürfte einem auch klar sein, dass 
Schraube damit nicht geht.
Also das ist es auch nicht ... :-/

Wie immer gilt: Beschreib doch mal genau, was Du vor hast.


Gruß

Jobst

von Εrnst B. (ernst)


Bewertung
0 lesenswert
nicht lesenswert
Mark B. schrieb:
> Vielleicht kann PyPy sowas, bin mir nicht 100% sicher:

Naja:

>> All non-x86 versions are only supported on Linux.

Ob sich der TE das so vorgestellt hat?

von Noch einer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gab ein paar Anläufe, Python Frontend für GCC. Soweit ich weiss, sind 
die aber alle wieder eingeschlafen.

Damit kämst du schon mal einen grosser Schritt weiter. GCC kann ja den 
aus verschiedenen Frontends erzeugten Zwischencode zu einem Programm 
linken.

von Mr.Tom (Gast)


Bewertung
-8 lesenswert
nicht lesenswert
laßt bitte die Diskussionen nach dem Sinn Zweck und Grund weg, das war 
nicht Teil der Frage

von Jobst M. (jobstens-de)


Bewertung
1 lesenswert
nicht lesenswert
Gut, kann geschlossen werden. Kennen wir schon.

von Herr Piep (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Nein, gibt es in der von dir gewünschten Form nicht (wenn überhaupt in 
Richtung Mikrocontroller, dann nur ansatzweise für Embedded Linux). Ist 
auch ziemlich schwierig und zumindest teilweise sinnlos, weil das 
Ergebnis wegen der Eigenschaften von Python trotzdem vergleichsweise (C, 
C++, ...) langsam wäre.

von Noch einer (Gast)


Bewertung
2 lesenswert
nicht lesenswert
> laßt bitte die Diskussionen nach dem Sinn Zweck und Grund weg

Keine gute Idee.

Python in autark laufenden Maschinencode compilieren haben schon mehrere 
versucht. Ist alles wieder eingeschlafen.

Warum eigentlich? Wenn du so etwas haben willst, musst du erst mal 
herausfinden, warum alle Versuche eingeschlafen sind.

von Rolf M. (rmagnus)


Bewertung
2 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> laßt bitte die Diskussionen nach dem Sinn Zweck und Grund weg, das war
> nicht Teil der Frage

Dann lassen wir den Rest am besten auch weg, denn wenn es keinen 
ersichtlichen Sinn, Zweck oder Grund hat, sollte man es am besten 
einfach ganz bleiben lassen.

von Noch einer (Gast)


Bewertung
8 lesenswert
nicht lesenswert
> sollte man es am besten einfach ganz bleiben lassen.

Alles ausprobieren, was sich ausprobieren lässt -- diese Strategie hat 
sich doch bewährt. Ab und zu ist mal aus einem Experiment ohne Sinn, 
Zweck oder Grund etwas weltbewegendes entstanden.

Gegen Toms Einstellung sollten wir angehen. Dieses "Beantwortet 
gefälligst meine Frage und haltet ansonsten eure Klappe!" Diese blinde 
Unverschämtheit dürfen wir nicht durchgehen lassen.

von Karl (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Python für Arm?

Ja

> kompilierbar?

Nein

Begründungen wurden genannt (Interpreter).
Thread kann geschlossen werden!

von Slippin J. (gustavo_f)


Bewertung
2 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> ich verstehe nicht wieso das für andere so schwer zu verstehen
> ist.

Mr.Tom schrieb:
> Dann laufen..fertgi
> verstehen?!

Mr.Tom schrieb:
> laßt bitte die Diskussionen nach dem Sinn Zweck und Grund weg, das war
> nicht Teil der Frage

Sag mal Mr.Tom, was bist du eigentlich für ein unverschämter Rotzlöffel? 
Haben deine Eltern dir keine Manieren beigebracht?

von --- (Gast)


Bewertung
-4 lesenswert
nicht lesenswert
In meinem Ersatz-Halbschlaufon steckt auch ein ARM.
Und da laueft auch Python drauf.
Muss sich also auch fuer ARM koempilieren lassen.

In meinem richtigen Schlaufon ists eigentlich genauso.
Nennt sich da SL4A. Auch da gibts Python.

Vermutlich ist nur dein Zielsystem zu mickrig.
Bohr es halt mal ein wenig auf.
Dann wird das auch mit Python was.

von Mr.Tom (Gast)


Bewertung
-6 lesenswert
nicht lesenswert
es geht nicht ums aufbohren sondern es kompiliert zu übertagen, aber wie 
gesagt, offenbar dauert das dann wohl noch...
Und die anderen...owe trauriger Haufen hier..
Wenn ich darauf verweise bei der eigentlichen Diskussion zu bleiben so 
ausfallen zu werden...kennt man hier ja nicht anders.
Und ob ein Thread geschlossen werden kann oder nicht ist wohl nicht eure 
Entscheidung..womöglich meldet sich in zwei Jahren einer auf diesen 
Thread und verweist auf ein entsprechendes Programm.
Ich habe aber den Eindruck das vielen hier nicht ganz der Sinn und Zweck 
eines Forums und wie es funktioniert klar ist, wenn ich wie in anderen 
Threads ständig lese, das man eine Suchmaschine wie Fireball.de etc 
nehmen soll.
Man gewinnt den Eindruck, das das Soziale Kontakten hier weniger 
ausgeprägt ist.

von Compilator (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> es geht nicht ums aufbohren sondern es kompiliert zu übertagen, aber wie
> gesagt, offenbar dauert das dann wohl noch...

Mimimimimi. Selbermachen.

z.B. einen kleinen Python->Arduino Umsetzer.
Wenn du Python kannst, ist der in einer halben Stunde weit genug für 
einen Hello-World-LED-Blinker.

Den Arduino-Zwischenschritt kann man soweit verstecken, dass es wie "py 
-> hex" aussieht, und du hast gleich python->ARM, python->AVR, 
python->ESP, ... mit erschlagen.

Wird eine Menge Python-Konstrukte geben, die man nicht 1:1 abbilden 
kann. Da muss halt eine saubere Fehlermeldung her, und der Anwender ran 
zum umformulieren.

Viel Erfolg.

von WaMin (Gast)


Bewertung
3 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> Wenn ich darauf verweise bei der eigentlichen Diskussion zu bleiben so
> ausfallen zu werden.

Du solltest dich dringend in Selbstreflexion üben.

von Jobst M. (jobstens-de)


Bewertung
6 lesenswert
nicht lesenswert
Mr.Tom schrieb:
> Man gewinnt den Eindruck, das das Soziale Kontakten hier weniger
> ausgeprägt ist.

Naja, Dir ist wohl nicht klar, dass Du hier offensichtlich der Einzige 
bist, der keine Sozialkompetenz besitzt. Aber wie auch: Um das zu 
erkennen benötigt man genau diese.
https://de.wikipedia.org/wiki/Dunning-Kruger-Effekt

Vielleicht solltest Du Dich hier mal anmelden, um Deine zahlreichen, 
negativen Bewertungen zu sehen.

Ich nehme auch an, dass Deine Frage extra mit dem Wissen gestellt ist, 
dass es keine Lösung dafür gibt, weil sie Unsinn ist und so automatisch 
eine Diskussion entsteht. Dann kann man immer schön trotzig  fordern.

Sollte dies wider Erwarten nicht so sein, so liegt bei dem Thema 
absolute Ahnungslosigkeit vor, was zum einen die Notwendigkeit für 
Python in Frage stellt und zum anderen auch die Frage nach dem Grund 
erzwingt, da die Entwicklung offensichtlich in die falsche Richtung 
läuft.
Das lässt dann eigentlich nur folgende 3 Schlüsse zu:
- Du hast es Dir in den Kopf gesetzt und willst nicht davon abweichen, 
weil Du Dich für unfehlbar hältst.
- Du hast erkannt, dass es falsch ist, magst den Fehler aber nun nicht 
mehr zugeben.
- Du hast jemandem versprochen, das Du das hinbekommst und stehst doof 
da, wenn Du nun zurückrudern musst.

Du kannst es also drehen und wenden, wie Du möchtest.
Also mecker schön weiter - es wird Dir nur wenig bringen.


Gruß

Jobst

von Roland F. (rhf)


Bewertung
0 lesenswert
nicht lesenswert
Leute, ich verstehe euch alle nicht, dabei wären die Antworten auf seine 
Fragen doch so einfach gewesen:

> Gibt es eigentlich ein kompilierbares Python für Arm?

Nein.

> Also so, das man keine extra Firmware aufspielen muss oder sowas,
> sondern am PC programmieren, rüber auf den Controller..fertig?

Nein.

> Wie in Pascal oder C auch?

Nein.

Keine unnötige Diskussion, keine unnötigen Erklärungen und

> womöglich meldet sich in zwei Jahren einer auf diesen
> Thread und verweist auf ein entsprechendes Programm.

Oder auch nicht.

rhf

von Thorsten Legat (Gast)


Bewertung
-1 lesenswert
nicht lesenswert

von spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

>Schon gesehen?

Ist der Tensilica L106 ein ARM?

MfG Spess

von Mark B. (markbrandis)


Bewertung
0 lesenswert
nicht lesenswert
Karl schrieb:
>> Python für Arm?
>
> Ja
>
>> kompilierbar?
>
> Nein
>
> Begründungen wurden genannt (Interpreter).
> Thread kann geschlossen werden!

Wenn man es genau nimmt, dann ist das freilich keine Begründung. Es ist 
durchaus möglich einen Compiler für Python zu schreiben, der aus 
Python-Quelltext entsprechenden Maschinencode generiert.

Ob es so einen Compiler gibt, und noch dazu für ARM, ist eine andere 
Frage. Aber es ist nicht per se unmöglich.

: Bearbeitet durch User
von Mark B. (markbrandis)


Bewertung
0 lesenswert
nicht lesenswert
Anscheinend kann MicroPython zum Teil das, was Du suchst:

https://github.com/micropython/micropython/wiki

> What is MicroPython

> MicroPython is a Python interpreter (with partial native code compilation
> feature). It provides a subset of Python 3.5 features, implemented for
> embedded processors and constrained systems. Read more about the
> differences to CPython here.

Wie weit genau die "partial native code compilation" geht, weiß ich 
nicht.

RTFM. ;-)

von Christopher J. (christopher_j23)


Bewertung
1 lesenswert
nicht lesenswert
Mark B. schrieb:
> Wie weit genau die "partial native code compilation" geht, weiß ich
> nicht.

Das hat mich doch jetzt auch mal interessiert und die Antwort gibt es 
gewissermaßen hier: 
https://github.com/micropython/micropython/releases/tag/v1.7

> This release adds the MicroPython cross-compiler that can generate .mpy
> files (pre-compiled bytecode) which can be executed within any
> MicroPython runtime/VM. [...]

Soweit ich das verstanden habe, wird aber (wie sonst auch bei 
Micropython) sämtlicher Bytecode aus dem RAM ausgeführt.

Hier gibt's noch den Diskussionsthread zu einer ähnlichen Anfrage wie 
der des TO (allerdings etwas klarer formuliert):
https://github.com/micropython/micropython/issues/2709

Mr.Tom schrieb:
> Also so, das man keine extra Firmware aufspielen muss oder sowas,
> sondern am PC programmieren, rüber auf den Controller..fertig?
> Wie in Pascal oder C auch?

Mr.Tom schrieb:
> Genauso wie bei PAscal und C...suche ich Python..was kann mand aran
> nicht verstehen?!

Mr.Tom schrieb:
> Ich schreiben will Python auf PC flashen auf µc UGH
> Dann laufen..fertgi
> verstehen?!

Wie soll man denn jemanden verstehen, der sich ausdrückt wie ein 
besoffener Fünfjähriger? Kein Mensch kann wissen was du eigentlich 
willst, weil du es vermutlich selber nicht weißt. Vielleicht meinst du 
ja ein Python-Kompilat, was ohne Runtime lauffähig ist. Jedenfalls geht 
das aus

> Ich schreiben will Python auf PC flashen auf µc UGH

und

> Also so, das man keine extra Firmware aufspielen muss oder sowas,
> sondern am PC programmieren, rüber auf den Controller..fertig?

überhaupt nicht hervor. "flashen auf µc" aber "keine extra Firmware 
aufspielen". Ja ne, is klar.

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]
  • [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.