- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: STM32 programieren mit platformio und mbed

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212

    STM32 programieren mit platformio und mbed

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi Mädels ... Jungs ...

    Ich versuche gerade das Platinchen: https://www.st.com/en/evaluation-too...5e-iot01a.html mit dem mbed Framework und platformio zu Programmieren. Ein einfaches LED Beispiel habe ich auch zum laufen bekommen. Ein für Wlan gefundenes Beistpiel will sich aber nicht übersetzen lassen. Das Beispiel stammt von hier: https://github.com/ARMmbed/mbed-os-example-wifi

    Mein Problem sind solche Fehlermeldungen:
    Code:
    Compiling .pioenvs/disco_l475vg_iot01a/lib0d2/FEATURE_LWIP/lwip-interface/LWIPInterface.o
    Compiling .pioenvs/disco_l475vg_iot01a/lib0d2/FEATURE_LWIP/lwip-interface/LWIPInterfaceEMAC.o
    Compiling .pioenvs/disco_l475vg_iot01a/lib0d2/FEATURE_LWIP/lwip-interface/LWIPMemoryManager.o
    In file included from /root/.platformio/packages/framework-mbed/features/FEATURE_LWIP/lwip-interface/lwip/src/include/lwip/opt.h:51:0,
    from /root/.platformio/packages/framework-mbed/features/FEATURE_LWIP/lwip-interface/lwip/src/include/lwip/tcpip.h:40,
    from /root/.platformio/packages/framework-mbed/features/FEATURE_LWIP/lwip-interface/LWIPInterfaceEMAC.cpp:17:
    /root/.platformio/packages/framework-mbed/features/FEATURE_LWIP/lwip-interface/lwipopts.h:42:2: error: #error "Either IPv4 or IPv6 must be enabled."
    #error "Either IPv4 or IPv6 must be enabled."
    Schaut man sich das in der entsprechenden Datei an sieht es aus als fehlte mir da irgendwas als config Datei. Wenn ich das richtig sehe machen das bei den mbed Tools die *.json Dateien. Aber wie das mit platformio funktioniert habe ich nicht gefunden?
    Klar man könnte die fehlenden Makros irgendwo von Hand definieren aber vermutlich ist das nicht so gedacht.

    Meine platformio.ini sieht so aus:
    Code:
    [env:disco_l475vg_iot01a]
    platform = ststm32
    board = disco_l475vg_iot01a
    framework = mbed
    upload_protocol = stlink
    build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT
    Viele Grüße
    Alexander

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Either IPv4 or IPv6 must be enabled.
    Er versucht LWIPInterface, LWIPInterfaceEMAC und LWIPMemoryManager zu kompilieren.
    Da wird Netzwerk benötigt. Du möchtest bitte entweder IPv4 oder IPv6 aktivieren/einschalten.
    Es fehlen irgendwo Angaben zum Netzwerk oder es ist, auch irgendwo, einfach "disabled" oder nicht "enabled".


    MfG
    Geändert von Moppi (15.10.2018 um 13:28 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Stimmt schon das man das einschalten muss soweit hatte ich das auch schon angenommen. Aber wie man das macht ist mir nicht klar. Das mbed hat so einen eigenen config Prozess aber wie wurde der für Platformio umgesetzt.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ich kenne das nicht.

    Mal ein Link zu der platformio.ini: https://docs.platformio.org/en/latest/projectconf.html

    Es gibt aber eine Platformio Community, dort vielleicht mal melden und nachfragen?
    Ich habe jetzt eine Weile gesucht, aber nichts brauchbares gefunden, was Dein Problem beschreibt oder erklärt.

    MfG
    Geändert von Moppi (15.10.2018 um 15:55 Uhr)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Versucht habe ich jetzt mal in der platformio.ini die nötigen Makros zu definieren
    Code:
    build_flags = -DPIO_FRAMEWORK_MBED_RTOS_PRESENT -DMBED_CONF_LWIP_IPV4_ENABLED -DMBED_CONF_LWIP_IP_VER_PREF=4
    Dann kommt es nicht mehr zu der oben genannten Fehlermeldung. Leider geht es deshalb immer noch nicht. Er möchte dann im Beispiel Programm die Werte für SSID und Passwort gesetzt haben. Das habe ich mal so versucht.
    Code:
    -DMBED_CONF_APP_WIFI_SSID="ssid" -DMBED_CONF_APP_WIFI_PASSWORD="passwort"
    Da bin ich mir aber nicht sicher das diese -D Optionen für den GCC so funktionieren.

    Fehlermeldungen:
    Code:
    src/NoTimeForRevolution.cpp: In function 'int main()':
    <command-line>:0:25: error: 'ssid' was not declared in this scope
    src/NoTimeForRevolution.cpp:149:39: note: in expansion of macro 'MBED_CONF_APP_WIFI_SSID'
    printf("\nConnecting to %s...\n", MBED_CONF_APP_WIFI_SSID);
    ^~~~~~~~~~~~~~~~~~~~~~~
    <command-line>:0:29: error: 'passwort' was not declared in this scope
    src/NoTimeForRevolution.cpp:150:54: note: in expansion of macro 'MBED_CONF_APP_WIFI_PASSWORD'
    int ret = wifi->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
    ssid und passwort sind Platzhalter für meine echten Werte.

    Kennt ihr vielleicht irgendeine Alternative die leichter zu benutzen ist als das mbed auf diesem oben genannten STM32 Platinchen?

  6. #6
    HaWe
    Gast
    Zitat Zitat von alexander_ro Beitrag anzeigen
    Kennt ihr vielleicht irgendeine Alternative die leichter zu benutzen ist als das mbed auf diesem oben genannten STM32 Platinchen?
    wenn er Arduino-kompatibel ist: Arduino IDE.

    Wenn nicht: es ist ja auch "nur" ein ARM Cortex M4...
    dann alternativ ein anderer STM 32, für den es Arduino board cores gibt
    NUCLEO-F334R8 soll angeblich mit Arduino funktionieren, bin mir aber nicht sicher,
    evt auch andere möglich wie https://www.amazon.de/STM32F4-DISCOV.../dp/B00NYBD9NW

    Oder Adafruit M4, die funktionieren sicher mit der Arduino IDE:
    ein Adafruit Feather M4
    oder ein Adafruit Itsybitsy M4
    oder ein Adafruit Metro M4

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Das war jetzt wohl nicht so ganz eindeutig was ich oben geschrieben hatte. Ich meinte mehr eine Alternative für das mbed die Hardware wollte ich eigentlich weiter benutzen. Stimmt schon das es nur ein Cortex-M4 ist aber wenn man immer alles an Software von Grund auf neu schreiben muss ist es Mühsam voran zu kommen. Arduino kompatibel ist er glaube ich nicht. Zumindest bekam ich von platformio die Fehlermeldung das er es nicht ist. Das war bei dem Versuch eine zwar für STM32 aber Arduino WLAN Bibliothek zu benutzen.

  8. #8
    HaWe
    Gast
    Zitat Zitat von alexander_ro Beitrag anzeigen
    Das war jetzt wohl nicht so ganz eindeutig was ich oben geschrieben hatte. Ich meinte mehr eine Alternative für das mbed die Hardware wollte ich eigentlich weiter benutzen. Stimmt schon das es nur ein Cortex-M4 ist aber wenn man immer alles an Software von Grund auf neu schreiben muss ist es Mühsam voran zu kommen. Arduino kompatibel ist er glaube ich nicht. Zumindest bekam ich von platformio die Fehlermeldung das er es nicht ist. Das war bei dem Versuch eine zwar für STM32 aber Arduino WLAN Bibliothek zu benutzen.
    da habe ich deine "Alternativen-Suche" tatsächlich etwas zu weitgreifend verstanden
    Was deine Versuche mit einer Arduino-Lib angeht (WLAN):
    Das ist nicht das Entscheidende, denn die funktionieren von sich aus nicht unbedingt aus dem Stand mit anderen Frameworks (wegen Serial(), Wire() u.a. Basis-Libs) - sondern ob du einen core findest, den du über den Arduino-Boardmanager laden kannst. M4 cores gibt es ja etliche, nicht nur zu Adafruit M4, sondern auch Teensy mit M4 u.v.a., von daher halte ich es für nicht ausgeschlossen, welche für deinen STM32L4 zu finden und zu laden.
    Aber ohne mich jetzt darauf versteifen zu wollen:
    wenn es sich heraus stellt, dass es weder cores für den STM32L4 gibt noch dass du mit deinem mbed Framework u.ä. weiterkommst, dann wäre IMO ein Wechsel zu einem anderen M4 Board kein Weltuntergang wegen der nötigen 20 EUR (oder weniger) Investition für kompatible Adafruits oder Teensys oder STM32s.
    Das Arduino IDE/API ist aber ja auch auf C++11 aufgebaut, von daher wirst du auch nicht so viel Code neu schreiben müssen, und es ist zukunftssicher, da die Libs und Codes auch künftig für andere, noch neuere und noch leistungsfähigere Boards passen werden.
    Aber wie auch immer: viel Erfolg bei deiner Suche und für deine entsprechende Entscheidung!

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Also was Du mit dem Core meinst kann ich mir zwar etwa vorstellen. Genau weiß ich das aber nicht. Ich würde mal vermuten das sind dann die Definitionen mit den Registern, Portnamen und vielleicht Memorymapping oder so ähnlich. Vielleicht auch ein paar Grundlegende Programmteile.

    Ich finde das ganze egal ob nun mit Arduino oder mbed sehr unübersichtlich es gibt alle möglichen Programmmodule die dann wieder nur mit bestimmten anderen zusammen funktionieren. Aber es wird nicht wirklich angegeben welche das genau sind und es gibt auch oft mehrere die den gleichen Namen haben. Auch bei Header Files habe ich oft das Problem das es nicht gefunden wird. Eine Suche zeigt dann es gibt 5 verschiedene Programmbibliotheken mit dem Filenamen ... welcher ist dann der richtige?

    Das Platinchen habe ich im Rahmen dieser "Elektor Board Games" bekommen deshalb muss ich das da verwenden. Es heißt ja eigentlich das man da auch Support dazu bekommt aber bei der genannten Mailadresse und bei der Elektor bekommt man keine Antwort auf Fragen ... aber bis Ende des Monats soll man fertig sein ... die Platine ist vor einer Woche bei mir angekommen.

    Das Beispiel oben geht nach dem was ich gefunden habe nicht mit diesem Platinchen. Das liegt daran das die von ST gemachte Unterstützung scheinbar für das verwendete WLAN Module die (was auch immer) WiFiInterface nicht implementiert. Nach längerem suchen habe ich ein Beispiel für einen WebServer gefunden: https://os.mbed.com/teams/ST/code/DISCO_L475VG_IOT01-wifi_http_server/

    Irgendwie fehlt beiden Projekten ... Arduino und mbed ... eine Instanz die die Entwicklung koordiniert und dafür sorgt das die Dinge kompatibel sind. Würde man den Linux Kernel genauso Planlos entwickeln gäbe es einen Kernel der zwar viele schöne Teile hat aber nichts passt wirklich zum anderen.

  10. #10
    HaWe
    Gast
    ja, mit cores hast du Recht, es ist all das, was unter packages\company\hardware\cpu\version\cores\ zu finden ist, eigentlich meinte ich aber sogar auch alles übrige in den speziellen cpu packages, mit Dateien zu Bootloaders, drivers, cpu-spez. libraries, tools, variants...
    Wenn es dich interessiert, installiere mal Arduino IDE und dann ein ARM-Zusatz-package, dann siehst du, was alles dabei ist.

    Wenn du bei deiner cpu-Platine bleiben musst und da keine Wahl hast, hat sich ntl alles zu anderen M4s erledigt.

    was du aber mit "Instanz die die Entwicklung koordiniert und dafür sorgt das die Dinge kompatibel sind" meinst, verstehe ich nicht:
    Die übergreifende Kompatibilität aller Boards und cpus (AVR, ARM, ESP, Intel) innerhalb des hierarchischen Arduino APIs stellt die Arduino IDE her, auf der Basis von "Processing", das vorher bereits entwickelt wurde (Ben Fry,Casey Reas) und des Java-basierten "Wiring" Konzepts, das von Hernando Barragán / AG von Massimo Banzi entwickelt und zur eigentlichen Grundlage von "Arduino" wurde - aber das führt hier zu weit.
    Immerhin sorgen alle Arduino Entwickler dafür, dass die neueren Erweiterungen immer rückwärts-kompatibel zu allen anderen cpu-Plattformen bleiben, was auch manchmal etwas hinderlich, und teilweise auch recht bizarr und lähmend gegen grundlegende Verbesserungen ist (z.B. dass die Funktion für pwm-write auf digitalen Pins "analogWrite" heißt) .
    Oder welche "kompatiblen Dinge" meintest du?

    Wie auch immer, wenn du mit deinem STM32L4 bleiben musst und die Arduino IDE benutzen willst, dann kannst du nur hoffen, ein passendes package samt cores dafür zu finden, das sich per Boardmanager einbinden und installieren lässt.

    Arduino nimmt einem jedenfalls sehr schön alle hässlichen low-level-Details ab, man muss sich nicht um fuses, Monster-IDEs oder -Frameworks, makefile, Pfadverwaltung, linker u.v.a. kümmern: wäre es anders, hätte ich nie mit diesen cpus jemals angefangen, und so kann man sich von Anfang an um seine Projekte kümmern, ohne sich mit der Hardware herumkloppen zu müssen (so wie du in deinem TOP-Post zu mbed und platformio beispielsweise).
    Arduino hat dazu gewissermaßen ebenso ein internes und externes Regelwerk wie Linux mit seinem kernel und seinem devtree, nur kann man das nicht recht vergleichen, weil ja ein multiuser-multithreading-multitasking-OS dahinter steckt.
    Bei MCUs für Arduino und avrstudio gibt es aber ja noch nicht mal ein File System und daher auch kein C/C++ nach Posix Definitionen mit einem Datentyp FILE* und z.B. einer stdio.h Lib mit fopen und fclose usw.
    Geändert von HaWe (17.10.2018 um 09:49 Uhr) Grund: typo

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Mbed Mikrocontroller Bibliotheken Header
    Von peterfb im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 11
    Letzter Beitrag: 11.03.2018, 12:21
  2. Arduino Due: FreeRTOS installieren und mit Platformio übersetzen
    Von alexander_ro im Forum Arduino -Plattform
    Antworten: 34
    Letzter Beitrag: 12.11.2017, 12:36
  3. arduino atmega2560 & atom & platformio & ubuntu
    Von inka im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 13.08.2017, 10:26
  4. Antworten: 1
    Letzter Beitrag: 12.06.2015, 15:50
  5. dynamixel rx-24F mit mbed ansteuern
    Von sh4rky im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 05.06.2012, 12:02

Berechtigungen

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

12V Akku bauen