ESP8266 Programmierung
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
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).
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: ESP8266 Programmierung
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.
Ist der STM32 nicht in der ARM Familien ?
Und diese liefen bis jetzt recht gut.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
Der ESP8266 läuft mit dem ersten Blink Programm unter FPC kompiliert. Wieder einiges gelernt 
Mal sehen wie es weitergeht.

Mal sehen wie es weitergeht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: ESP8266 Programmierung
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:
Wenn ich jetzt ein Miniprojekt compilieren will, erscheint das hier:
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: ESP8266 Programmierung
So wie es aussieht, sucht der bei dir ein gcc Linker.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: ESP8266 Programmierung
Mit Arduino kann ich Projekte für den ESP8266 erstellen und hochladen. Mal schauen, ob ich da die benötigten Bibliotheken finde,
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
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.
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) 69-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: ESP8266 Programmierung
Da warte ich mal noch ein wenig, vielleicht baut Don Alfredo dies noch richtig in FPCUPdeluxe ein.Für den ESP8266 sind etliche Änderungen am fpcupdeluxe und am crosstoolchain notwendig.
So nebenbei, kann man nicht mal eine gewöhnliche Trunk bauen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: ESP8266 Programmierung
Wäre es möglich, das du dein Blink-Demo mal hoch lädst ?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.
Dann würde man sehen, was alle nötig ist, das wenigsten das Projekt io. ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
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.
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) 62-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 6899
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: ESP8266 Programmierung
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.
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 grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
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.
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).
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
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).
-
- Beiträge: 945
- 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
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...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.
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):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.
Code: Alles auswählen
make crossinstall OS_TARGET=freertos CPU_TARGET=xtensa SUBARCH=lx6 INSTALL_PREFIX=C:\fpc\3.3.1
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
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
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: ESP8266 Programmierung
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.
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).