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?
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
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.
"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...
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.
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.
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.
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?!
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.
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?
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#evalhttps://docs.python.org/2/reference/simple_stmts.html#exec_import_ (dynamisches nachladen von modulen)
...
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)
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
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?
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.
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.
> 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.
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.
> 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.
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?
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.
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.
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.
Mr.Tom schrieb:> Wenn ich darauf verweise bei der eigentlichen Diskussion zu bleiben so> ausfallen zu werden.
Du solltest dich dringend in Selbstreflexion üben.
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
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
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.
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. ;-)
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/2709Mr.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.