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


von Mr.Tom (Gast)


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)


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)


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)


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)


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 Einer K. (Gast)


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)


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)


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 Einer K. (Gast)


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.

von Mr.Tom (Gast)


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)


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)


Lesenswert?

jo, genau das, eben wie in C oder Pascal oder sonstwas auch

von Harry L. (mysth)


Lesenswert?

Python ist ein Interpreter und kein Compiler

von Dergute W. (derguteweka)


Lesenswert?

Harry L. schrieb:
> Python ist ein Interpreter und kein Compiler

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

SCNR,
WK

von Mr.Tom (Gast)


Lesenswert?

eben, und was hat das jetzt damit zu tun?!?
Basic gibt es auch so und so

von Εrnst B. (ernst)


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)


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)


Lesenswert?

Nicht ganz ein Python-Compiler aber vielleicht ein möglicher Ersatz?
Cython

(Gefunden im Wikipedia Artikel zu Python.)

von Jobst M. (jobstens-de)


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)


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)


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)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

Gut, kann geschlossen werden. Kennen wir schon.

von Herr Piep (Gast)


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)


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)


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)


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)


Lesenswert?

> Python für Arm?

Ja

> kompilierbar?

Nein

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

von Slippin J. (gustavo_f)


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)


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)


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)


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)


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)


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)


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)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

>Schon gesehen?

Ist der Tensilica L106 ein ARM?

MfG Spess

von Mark B. (markbrandis)


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)


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)


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.

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.