Forum: Mikrocontroller und Digitale Elektronik ESP8266 / Embedded Systems Workflow


von Paul Felz (Gast)


Lesenswert?

Hallo in die Runde,

ich habe nun schon mein erstes Projekt "WS2812B Strip an einem ESP8266 
gesteuert über eine Weboberfläche" die Tage fertiggestellt und würde 
gern tiefer in die ganze internet of things Geschichte einsteigen und 
mir eine "Entwicklungsumgebung" aufbauen.

Neben neu angeeigneten Lötkenntnissen, die derzeit noch zu wünschen 
übrig lassen, habe ich mir nun eine einfache Lötstation und einen Satz 
Bauteile gekauft. Um die Prototypen herzustellen mache ich mir deshalb 
ehrlich gesagt keine Gedanken, zumal hier mit öfteren Löten auch die 
Erfahrung steigt.

Was mir allerdings sehr große Schwierigkeiten bereitet, ist das 
Programmieren auf solchen "embedded systems". Mein Projekt konnte ich 
mithilfe teils fertiger Quellcodeschnipsel auf lua-Basis (nodeMCU) mehr 
oder weniger gut fertigstellen.

Für wirklich eigene Projekte, wird mir wohl nichts anderes übrig 
bleiben, als mit C/C++ zu programmieren. Da ich Softwareentwickler bin 
und mit Java/PHP programmiere, mache ich mir auch darum weniger 
Gedanken.

Was mir allerdings sehr doll aufgestoßen hat, waren die sehr langen 
Ladezeiten zur Ausführung und die fehlende Ausführungskontrolle, sprich 
Debugging, z.b. an einem ESP8266-01.

Auch hierzu habe ich Tutorials gefunden, aber dennoch nicht 
zufriedenstellend.

Jetzt meine Fragen: Muss ich generell mehr Zeit und Geduld einplanen, 
wen man Programme für Embedded Systems "mal schnell" laufen lassen 
möchte oder bedient man sich hier in professioneller Ebene anderer 
Werkzeuge wie Emulatoren? Sollte ich einen anderen als den ESP8266-01 
verwenden?
Funktioniert das Debuggen über JTAG besser und vor allem schneller?

Für schnelles Prototyping ist es bei mir zumindest beliebt, die 
Anwendung zu starten und zu schauen, wie sie sich verhält. In größeren 
Projekten werden eben einzelne Module gestartet oder vorher 
Programmteile von der Ausführung ausgenommen.

Gestern habe ich schon leicht die Krise bekommen, als ein Wert nicht 
korrekt von einem GPIO gelesen wurde. Das bedeutete jedes mal: Software 
anpassen und hoffen, dass es so richtig ist ... die Software kompilieren 
... die binaries uploaden ... warten, bis der ESP initiert wurde, d.h. 
vor allem warten, bis er eine IP vom Router bekommen hat ... und dann 
kommt er endlich irgendwann an die Stelle auf die es ankommt ... und 
wenn man Pech hat, so wie ich, ist es dutzende male einfach immer noch 
nicht richtig.
Sehr frustrierend. Das muss doch besser / einfacher gehen ...

Kann mir jemand helfen?

Danke

von Michael U. (amiga)


Lesenswert?

Hallo,

JTAG für die ESP8266 gibt es meines Wissens nicht.
Die -01 mit dem 4MBit Flash sind generell etwas langsamer als die -12 
mit den großen Flashs, die greifen mit QIO zu.

Mit LUA habe ich mich nicht befasst, meine aber, daß man da doch nur 
LUA-Scripte raufschiebt?

Ich programmieren in C /C++ oder mit den Arduiono-Bibliotheken aus der 
Arduino-IDE. Compilieren und Flashen dauert zwar länger als z.B. bei ein 
ATMega328, allerdings ist Upload je nach USB-Adapter bis 921kBit möglich 
(FTDI bei mir), 512kBit machen auch die CP2102 und die CH340.

Booten der Module incl. anmelden am WLAN-Router dauert bei mir selten 
länger als 3-5 Sekunden.

Funktionen usw. machen eigenlich bei mir das, was sie sollen.
Machen sie das nicht, lasse ich mir eben die kritischen Daten per 
Seriel.print ausgeben.

Das mache ich in PHP auch nicht anders, wenn was unpassend ist, wird 
eben ein echo $irgendwas reingeschrieben.

An "die Stelle"  kommt doch am schnellsten, wenn man "die Stelle" mit 
passenden Daten aufruft und sich die (Zwischen-)Ergebnisse ausgeben 
läßt.

Mehrmals schnell nue falshen passiert bei mir regelmäßig dann, wenn ich 
was "mal schnell" ändern will und beim Flashen sehe, daß ich vergessen 
habe, die IF-Bedingung anzupassen usw.
Die anderen selbstgemachten Fehler bemeckert ja schon der Compiler.
Seltsame Fehlermeldungen nach einer Änderung ganz woanders sind sowieso
(meist) nur vergessene ';' am Ende...

Ist doch in PHP auch nicht anders.

Gruß aus Berlin
Michael

von Strubi (Gast)


Lesenswert?

Michael U. schrieb:
> JTAG für die ESP8266 gibt es meines Wissens nicht.

Gibt es schon, funktioniert auch einigermassen, aber eben nur 
einigermassen. Es gibt einen OpenOCD-Fork, der ist allerdings nicht 
komplett, man muss etwas dran drehen, je nach benutztem SDK schlägt 
sonst nämlich der Watchdog zu, wenn man das Programm unterbricht.
Der Memory-Download ist allerdings nicht sonderlich schnell, das liegt 
aber an OpenOCD.
Ansonsten kommt man leider um die Trial&Error-Zyklen bei grossen 
Programmen (die ins SPI-Flash ausgelagert werden müssen) nicht herum.
Das einzige, was bei mir einigermassen produktiv war: Socket-basierte 
TCP/IP-Programme unter Linux vortesten und dann nach FreeRTOS/lwip mit 
Socket-API portieren. Das letzte 1.3.0 SDK-release tut auch 
einigermassen stabil, nur muss man Disconnect/Reconnect-Handler 
implementieren (wenn die Wifi-Verbindung flöten geht).
Leider ist bei dem Wildwuchs an semi-funktionalen SDK-Varianten der 
ESP8266 derart unwirtschaftlich, dass ich lieber zu der Realtek-Lösung 
(WRTnode, etc.) greife, wenn möglich. Da ist allerdings die Boot-Zeit 
von Linux (2-3 Sekunden) ein Thema..

von U. C. (Gast)


Lesenswert?

Michael U. schrieb:
> Die -01 mit dem 4MBit Flash sind generell etwas langsamer als die -12
> mit den großen Flashs, die greifen mit QIO zu.

Ach.....
Dann darf ich das meinen -01 nicht sagen....
Denn die haben das noch nicht gemerkt.
Die funktionieren prächtig mit QIO und 80MHz.

von Michael U. (amiga)


Lesenswert?

Hallo,

meine -01 sind ziemlich alt, die Flashtypen wurden offenbar öfter 
geändert. Ich hatte mal im Espressif-Forum den Hinweis auf die 
Headerdatei mit den unterstützten Flashs gefunden und mir angeschaut. 
Elend lang und ich habe die nicht gespeichert und finden weder den 
Hinweis noch die .h nicht wieder...

Gruß aus Berlin
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.