ESP8266 Programmierung

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Der vom fpcupdeluxe verwendet Crosscompiler ist etwas älter und passt nicht mehr mit dem aktuellen SDK zusammen. Dazu ist der eigentlich STM32 und nicht ESP8266 spezifisch. Weiterkann man entweder lx6 (STM32) oder lx106 (ESP8266) bauen, Gleichzeitig geht das nicht, da überschreibt das eine bauen das andere im FPC. Wennst du nur esp8266 baust, dann findet fpcupdeluxe ohne patch nicht die crosstool, lades seine eigenen und alles ist im Bach. Passt das alles, so stehst du im Cosscompiler an. Geht das soweit, so läuft das Programm nicht am Device (das war der letzte Stand unter Linux im englischen Forum). Aktuell werde ich da keine Zeit investieren, da ich das ganze mal unter Arduino testen kann und auch mal wissen will, was so alles geht. Die STM32 sind scheinbar auch von der Chipkrise betroffen. Die ESP8266 sind leichter verfügbar.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5218
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

So wie ich Don Alfredo kenne, kriegt er dies sicher auch noch hin.

Ist der STM32 nicht in der ARM Familien ?
Und diese liefen bis jetzt recht gut.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Der ESP8266 läuft mit dem ersten Blink Programm unter FPC kompiliert. Wieder einiges gelernt :-)

Mal sehen wie es weitergeht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1059
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: ESP8266 Programmierung

Beitrag von fliegermichl »

Ich hab mit fpcupdeluxe einen Crosscompiler xtensa/freertos erstellen lassen. Das hat auch ohne Fehlermeldungen geklappt.
Wenn ich jetzt ein Miniprojekt compilieren will, erscheint das hier:
esp8266.PNG
esp8266.PNG (70.46 KiB) 746 mal betrachtet

Mathias
Beiträge: 5218
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

So wie es aussieht, sucht der bei dir ein gcc Linker.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1059
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: ESP8266 Programmierung

Beitrag von fliegermichl »

Mit Arduino kann ich Projekte für den ESP8266 erstellen und hochladen. Mal schauen, ob ich da die benötigten Bibliotheken finde,

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Für den ESP8266 sind etliche Änderungen am fpcupdeluxe und am crosstoolchain notwendig. Ich habe dieselben Probleme gehabt.
Ein Problem ist, für stm32 und esp8266 unterscheiden sich die Verzeichniss im FPC nicht. Wenn kann man nur für einen bauen

Ich habe hier https://github.com/afriess/fpc-xtensa-f ... e/SDK_V3.4 meinen SDK mit den Crosstools zusammengebaut. Die ersetzen die Tools, die der fpcupdeluxe sonst herunterlädt. Das ganze funktioniert aber nur, wenn der fpcupdeluxe die richtigen Toolchains sucht. Deswegen die Patches von hier https://forum.lazarus.freepascal.org/in ... #msg430042

Der FPC muss unbedingt der ganz neue master(trunk sein) weil da erst vor 2-3 Tagen ein Patch wegen den -WP Parameter gemacht wurde. Genaugenommen muss man mit -WP3.4 den Stand vom Toolchain auch noch angeben beim Erstellen des Crosscompilers.

Aber das sind nicht die einzigen Hürden.

Konklusio: Es ist alles noch nicht einfach und muss noch getestet werden.

Arduino geht ohne Probleme für stm32 und esp8266, das habe ich hier sowieso am laufen. Der Rest war spieltrieb.
Dateianhänge
m_any_to_freertosxtensa.zip
(2.78 KiB) 32-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5218
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Für den ESP8266 sind etliche Änderungen am fpcupdeluxe und am crosstoolchain notwendig.
Da warte ich mal noch ein wenig, vielleicht baut Don Alfredo dies noch richtig in FPCUPdeluxe ein.

So nebenbei, kann man nicht mal eine gewöhnliche Trunk bauen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 5218
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

af0815 hat geschrieben:
So 9. Jan 2022, 21:24
Der ESP8266 läuft mit dem ersten Blink Programm unter FPC kompiliert. Wieder einiges gelernt :-)

Mal sehen wie es weitergeht.
Wäre es möglich, das du dein Blink-Demo mal hoch lädst ?
Dann würde man sehen, was alle nötig ist, das wenigsten das Projekt io. ist.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Das Beispiel ist noch mit den Pfaden meiner SDK Installation gemacht worden. Exakt so wie ich es zum laufen gebracht habe.

Das wichtigste ist, der SDK aus dem GIT ist der Branch release/v3.4
der msys ist der von expressif und der SDK liegt im msys im /esp vom Benutzer-Home

Ich bin da den Weg wie er im Wiki und bei expressif steht gegangen, nur habe ich später nochmals alles neu gemacht nachdem ich zuerst die v4.0 vom SDK genommen hatte, die Funktioniert NICHT.
Dateianhänge
blink.zip
(837.38 KiB) 28-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5218
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Ich habe das Beispiel angeguckt, alles über Kommandozeile und nichts mit Lazarus IDE.
Xtensa ist somit kein bisschen vergleichbar mit AVR oder STM32.
So wie es aussieht, muss auch viel externes verwendet werden. Wobei dies beim AVR auch der Fall ist, nur da übernimmt einem fpcupdeluxe diese Arbeit.
Alles totales Neuland.

Ich vermute, es fehlt nicht viel, und das ganze funktioniert auch mit fpcupdeluxe. Wen ich dort in den Ordner "cross" des erstellten Lazarus rein gehe, hat es dort auch jenste Bibliotheken und Tools.

In deinem Beispiel habe ich sogar ein Writeln gesehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

fpcupdeluxe hat mir auch den crosscompiler gebaut. Nur musste ich den patchen, damit die richtigen toolnamen aktzeptiert werden.

Das ist nicht so das Problem. Ich habe im GIT bei mir die Toolchains die funktionieren auch hinterlegt. Wenn der fpcudeluxe gepatched ist, so braucht man die nur in den cross Ordner hineinlegen und die werden dann auch aktzeptiert. Damit kann man den den crosscompiler für den esp8266 bauen.

Für den stm32 gilt genau dasselbe. Noch dazu dürfte der jetzige Toolchain dafür erstellt worden sein und hat halt nicht mit dem esp8266 zusammengepasst. Noch dazu verwendet der fpc selbst dasselbe Verzeichnis für den stm32 und den esp8266 und trifft bei xtensa-freertos keine CPU Unterscheidung. Das muss man entweder manuell hinfrickeln oder nur einen verwenden.

Das ganze ist deswegen mit Kommandozeile gemacht, da wir erst mal Fehlersuchen mussten, wo was nicht geht, da passiert bei Lazarus zuviel im Hintergrund wo du keine Infos hast. Deswegen die Kommandos alle mal manuell. Die ppas.at erzeugt der (Cross-)Compiler selbst. Das ist normalerweise auch im Hintergrund. Wenn du so wie ich, mal die richtigen Tools und Pfade zusammenspannen musst, ist es sehr hilfreich das was zu sehen und auch wiederholt zu testen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Der fpcupdeluxe aus dem GIT hat bereits Änderungen für den esp8266 drinnen. Crosscompiler (mit meinen Cross Tools und Libs) geht bei mir jetzt einmal. Nur am Rest hapert es noch immer. Mal sehen wie weit ich komme.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PascalDragon
Beiträge: 499
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: ESP8266 Programmierung

Beitrag von PascalDragon »

af0815 hat geschrieben:
Do 13. Jan 2022, 16:47
Für den stm32 gilt genau dasselbe. Noch dazu dürfte der jetzige Toolchain dafür erstellt worden sein und hat halt nicht mit dem esp8266 zusammengepasst. Noch dazu verwendet der fpc selbst dasselbe Verzeichnis für den stm32 und den esp8266 und trifft bei xtensa-freertos keine CPU Unterscheidung. Das muss man entweder manuell hinfrickeln oder nur einen verwenden.
Ich habe keine Ahnung was du meinst. Wenn ich für 'nen ARM wie den STM32 baue, dann landen die Units in arm-embedded (oder arm-freertos) und der Compiler selbst heißt dann ppcrossarm. Wenn ich für den ESP32/ESP8266 bauen, dann landen sie in xtensa-freertos und der Compiler heißt dann ppcrossxtensa. Ich sehe da also keine Konflikte...
Mathias hat geschrieben:
Do 13. Jan 2022, 16:07
Ich habe das Beispiel angeguckt, alles über Kommandozeile und nichts mit Lazarus IDE.
Xtensa ist somit kein bisschen vergleichbar mit AVR oder STM32.
So wie es aussieht, muss auch viel externes verwendet werden. Wobei dies beim AVR auch der Fall ist, nur da übernimmt einem fpcupdeluxe diese Arbeit.
Alles totales Neuland.
So lange alles richtig konfiguriert ist, ist es auch kein Problem das in Lazarus zu verwenden. Ich weiß nicht, ob Lazarus 2.0.12 bereits xtensa als CPU drin hat, aber 2.2 hat es auf jeden Fall. Am Besten also den Compiler und seine Units zuerst richtig installieren (in meinem Beispiel ist FPC 3.3.1 in C:\fpc\3.3.1 installiert):

Code: Alles auswählen

make crossinstall OS_TARGET=freertos CPU_TARGET=xtensa SUBARCH=lx6 INSTALL_PREFIX=C:\fpc\3.3.1
(Hinweis: das geht übrigens auch mit arm-embedded/arm-freertos)

Das ist nun für den ESP32. Willst du auch noch parallel den ESP8266 haben, dann musst du das Unit-Verzeichnis (in meinem Beispiel) C:\fpc\3.3.1\units\xtensa-freertos umbenennen in C:\fpc\3.3.1\units\xtensa-freertos-lx6 und in der C:\fpc\3.3.1\i386-win32\fpc.cfg folgendes unter den Suchpfaden für cpui8086 hinzufügen:

Code: Alles auswählen

#ifdef cpuxtensa
-FuC:\fpc\$FPCVERSION/units/$fpctarget-$fpcsubarch
-FuC:\fpc\$FPCVERSION/units/$fpctarget-$fpcsubarch/*
-FuC:\fpc\$FPCVERSION/units/$fpctarget-$fpcsubarch/rtl
#endif
Dann musst die sichergehen, dass du Lazarus mit den korrekten Pfaden lädst. Also aus dem Kommandoprompt vom IDF-SDK starten oder sichergehen, dass die python Anwendung im Pfad ist und dann in den Einstellungen des Projekts den Pfad zum SDK setzen (mittels -Ff...).

Für das Projekt musst du in den erweiterten Einstellungen dann noch folgendes hinzufügen (für den ESP32 mit SDK Version 4.2):
-Cfhard -Wpesp32 -XPxtensa-esp32-elf- -WP4.2

Außerdem noch den Pfad zu den statischen Bibliotheken in der Option für -Fl hinzufügen. Damit sollte es dann funktionieren (wobei Lazarus anscheinend $fpcsubarch nicht unterstützt, wodurch Lazarus die System Unit nicht findet... *seufz*)
FPC Compiler Entwickler

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

ok, mein Fehler in der Diskussion war, das ich stm32 und esp32 geistig verwechselt habe. Wenn ich von stm32 geschrieben habe, hatte ich den esp32 gemeint. Exakt meine ich xtensa-freertos mit lx106 oder lx6.

Das mit den frickeln ist das heumkopieren für lx106 und lx6 wegen der subarch.

Sorry das ich den Arm unschuldig in die Diskussion gezogen habe.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten