-         

Ergebnis 1 bis 7 von 7

Thema: Microcontroller mit Python programmieren

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.08.2008
    Ort
    Hallein
    Alter
    26
    Beiträge
    802

    Microcontroller mit Python programmieren

    Anzeige

    So, bevor ihr mich jetzt für verrückt erklärt, bitte zu Ende lesen. Ich beschäftige mich zurzeit mit Compilerbau. Ein Front-End mit LLVM war sogar recht flott geschrieben, da fehlt mir aber jetzt noch das Wissen Maschinencode zu erstellen, da mir das ja LLVM abnimmt. Um eben mich jetzt mit der ganzen Kette vom Source Code, über Lexer/Parser zum AST bis hin zum fertigen Maschinencode beschäftigen kann, möchte ich jetzt da eben mehr selbst bauen. Da die Komplexität des Projektes ja doch von der Zielarchitektur abhängt, ziele ich da auf Atmels AVR RISC Architektur ab. Als Source Sprache Python, da diese ja doch eine gewisse Beliebtheit hat.

    TL;DR: Also wie stellt ihr es auch vor (anhand konkrete Source Beispiele) wie man einen AVR am schönsten in Python programmieren könnte. Besonders weil ja alles eigentlich nur auf Registerzugriffe hinausläuft, wie sollte dies umgesetzt sein?
    Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Ich bin jetzt nicht der Experte für Programmiersprachen.
    Python kenne ich nur von Raspi. Da war ich eigentlich der Meinung das Python ein Interpreter ist.
    Das bedeutet doch das die Interpretersoftware auf dem µC vorhanden sein muss.
    Würde das denn auf einem µC mit begrenztem Speicher überhaupt funktionieren?
    Oder liege ich da komplett falsch?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Auf µC mit weniger Speicher kann es nicht funktionieren und muss die "Übesetzung" von einer Hochsprache zu Maschinencode ausserhalb sein. Vor zig Jahren war einfacher BASIC-Interpreter meistens in einem ROM untergebracht (z.B. 8 kB oder mehr). Ich habe zwei mir bekannte Möglichkeiten von einem Compiler für Hochsprachen vereinfacht skizziert:
    Code:
             .-------------.     .--------------.     .---------------.
             |             |     |              |     |               |
             | Text einer  |     | Text vom ASM |     | Maschinencode |
        V1   |             |     |              |  *  |               |
             | Hochsprache | --> | (Mnemonics)  | --> |  (Hexzahlen)  |
             |             |     |              |     |               |
             |     TH      |     |     TM       |     |       MC      |
             |             |     |              |     |               |
             '-------------'     '--------------'     '---------------'
    
    
    
             .-------------.                          .---------------.
             |             |                          |               |
             | Text einer  |                          | Maschinencode |
        V2   |             |                          |               |
             | Hochsprache | -----------------------> |  (Hexzahlen)  |
             |             |                          |               |
             |     TH      |                          |       MC      |
             |             |                          |               |
             '-------------'                          '---------------'
    
    (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
    Die erste Version (V1) wäre dafür einfacher, weil es mit "*" gekenzeichnete "Übersetzung" ASM -> Maschinencode für meiste µC schon fertig gibt.
    Geändert von PICture (09.02.2015 um 15:24 Uhr)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    599
    Es gab da mal ein Projekt für Python auf dem mbed LPC1768
    https://developer.mbed.org/users/dwh...hon-on-a-chip/
    scheint aber eingeschlafen zu sein, keine Änderungen mehr seit 2011.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.08.2008
    Ort
    Hallein
    Alter
    26
    Beiträge
    802
    Ich rede schon von einer richtigen Kompilierung des Python-Code zu Maschinencode und keinen Interpreter. Ob jetzt Umweg über ASM oder direkt, wobei ASM eigentlich immer ein Zwischenschritt im Compiler ist, egal ob extern oder selbstgemacht, stellt sich noch raus. Für mich ein Lernprojekt, eher nichts produktives, bzw. dann halt mit fehlenden Optimierungen.

    Mir geht es hier mehr um Input, wie man sich die Programmierung mit Python vorstellt. Hab zwar auch schon Ideen, das z.B. die Register als jeweilige Klassen/Objekte abgebildet sind, aber mehr Input schadet nicht Aber ja, die Kompilierung zu Maschinencode muss wie bei C natürlich am Entwicklerpc passieren.
    Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von barbar
    Registriert seit
    20.05.2006
    Beiträge
    142

    MicroPython

    Ältere Fragestellung, trotzdem aus aktuellem Anlass eine frische Antwort

    MicroPython gewinnt langsam an Bedeutung.
    https://github.com/micropython/micropython
    Meines Wissens wurde (noch?) nicht auf AVR portiert. Aus eigener Erfahrung kann ich feststellen, dass der Interpreter stabil auf den Prozessoren STM32F4 und CC3200 läuft. Und in zwei Wochen soll MicroPython für ESP8266 (in Vorabversion) veröffentlicht werden . Die Crowdfunding-Erwartung für Entwicklungsaufwand wurde bereits 3-fach übertroffen.

    Hier eine Demo von Chefentwickler Damien George von gestern:
    https://www.youtube.com/watch?v=_voIwFB4mu0

    Überlege gerade, eine kleine Roboter-Idee mit MicroPython hier im Forum zu "erarbeiten". Mal sehen.
    Gruß

  7. #7
    AIRobo
    Gast
    Zitat Zitat von Hubert.G Beitrag anzeigen
    Ich bin jetzt nicht der Experte für Programmiersprachen.
    Python kenne ich nur von Raspi. Da war ich eigentlich der Meinung das Python ein Interpreter ist.
    Das bedeutet doch das die Interpretersoftware auf dem µC vorhanden sein muss.
    Würde das denn auf einem µC mit begrenztem Speicher überhaupt funktionieren?
    Oder liege ich da komplett falsch?
    Es kommt drauf an welche Python Implementierung man verwendet.
    Viele Python Entwickler verwenden für andere Aufgaben meistens von CPython und PyPy und sind dadurch in der Hardware stark eingeschränkt, und an den Prozess gebunden,
    weil sie sich von der GIL, den Interpreter abhängig gemacht haben.
    Multithreading und Multicore sind die bekanntesten Probleme in Python, weil die Entwickler ursprünglich einen anderen Ansatz mit der GIL verfolgt haben.

    Man kann aber auch Cython nutzen, als static compiler, um zum Beispiel nativen C/C++ code aufzurufen.
    Das setzt man z.B für bessere und Maschinennahe Performance ein, möglich wird das dadurch, weil man den Interpreter umgeht indem man ihn komplett deaktiviert.
    http://cython.org/

    Mikropython verfolgt glaube ich einen ähnlichen Ansatz, denn eigentlich werden über die C-API nur Pointer zwischen registrierten Funktionen hin und her geschoben.
    Zur Performance und zum eigenen Memory Managment kann ich nichts sagen.

    Geht es nur um Sensorik oder Steuerung würde ich wahrscheinlich keine Python Lösung empfehlen, sondern besser gleich alles in C/C++ umsetzen , oder eine Alternative die sich bewährt hat.
    Will man aber auch andere Anwendungszwecke kombinieren wie zum Beispiel Analysen, oder auch machine learning Methoden in seine Roboter einbinden, wäre eine Python Lösung sicher nicht uninteressant.

Ähnliche Themen

  1. [ERLEDIGT] raspberry pi mit python Programmieren
    Von robots4-ever im Forum Buchempfehlungen
    Antworten: 7
    Letzter Beitrag: 14.08.2013, 11:41
  2. [ERLEDIGT] Motorgeschwindigkeit regulieren in Python programmieren
    Von pinsel120866 im Forum Raspberry Pi
    Antworten: 22
    Letzter Beitrag: 03.02.2013, 19:14
  3. [ERLEDIGT] Buch: Programmieren der AVR RISC Microcontroller mit Bascom, Klaus Kühnel, 2. Auflage
    Von tomtom1610 im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 0
    Letzter Beitrag: 24.02.2012, 09:52
  4. Programmieren für Microcontroller lernen
    Von humus im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 1
    Letzter Beitrag: 06.11.2008, 11:53
  5. Microcontroller programmieren!
    Von NRG im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 12.06.2005, 11:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •