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
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
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..
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.
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