Forum: Mikrocontroller und Digitale Elektronik ESP8266 Webupdater


von Fabian S. (fabian95)


Lesenswert?

Hey Leute,

ich versuche grad ein Web-update mit dem ESP8266 durchzuführen. Dabei 
soll eine .bin Datei auf den ESP geladen und installiert werden! Dazu 
muss ich sagen, das ich das ganze mit der Arduino IDE programmiere und 
da unter Beispiele den Code "httpUpdater" gefunden habe.

Ich versuche ein kleines blink Programm rüber zu laden und bekomme 
diesen Fehler hier ausgespuckt.
1
To less space HTTP_UPDATE_FAILD Error (-100):

Kann mir da jemand weiter helfen?

Gruß
Fabian

von Stefan F. (Gast)


Lesenswert?

Das klappt nur, wenn dein modul ausreichend Flash für das alte und das 
neue Programm gleichzeitig hat. Ist selten der Fall.

von Fabian S. (fabian95)


Lesenswert?

Ernsthaft ? Was macht dieses Feature dann für einen Sinn?

von Kolja L. (kolja82)


Lesenswert?

Wie kann ich denn feststellen ob es passt?

von Stefan F. (Gast)


Lesenswert?

Wenn es nicht passt bekommst du die oben genannte Fehlermeldung.

von Kolja L. (kolja82)


Lesenswert?

Das habe ich mir schon gedacht.
Aber ein "es geht nicht" ist nicht so hilfreich,
wie ein "es geht nicht, weil der Code xx kB zu groß ist".

von Fabian S. (fabian95)


Lesenswert?

Es muss doch irgendeine Lösung dafür geben? Sonst hätten die das doch 
auch nicht unter den Beispielen gelegt???

von Christopher J. (christopher_j23)


Lesenswert?

Fabian S. schrieb:
> Es muss doch irgendeine Lösung dafür geben? Sonst hätten die das doch
> auch nicht unter den Beispielen gelegt???

Wie groß ist denn der Flash deines ESP-Moduls? Da es da ja 
unterschiedliche Bestückungen gibt kann es durchaus sein, dass das 
Beispiel auf anderen Modulen problemlos läuft.

von Kolja L. (kolja82)


Lesenswert?


von Michael U. (amiga)


Lesenswert?

Hallo,

prinzipiell darf das Programm auf dem ESP nur weniger als die Hälfte des 
Programm-Flashs belegen.

Bei einem alten Modul mit 4MBit Flash (512kB) geht OTA auch noch, 
allerdings ist dann kaum Platz für sinnvolle andere Funktionen.

Bei den üblichen 8 oder 32 MBit Flashs sind 1MB Programmspeicher 
verfügbar, da gibt es erstmal keine Probleme.

HTTP-Update bedingt natürlich, daß auf dem ESP auch die Software die 
Funktionen enthält, also ist zumindest etwas schon belegt.

Es macht wenig Sinn, per OTA etwas zu flashen, was diese Funktionen im 
Programm nicht dabei hat, es ist dann eine Einmal-Lösung.

Wenn Du damit z.B. das blink-Programm flashst geht danach natürlich kein 
http-Update mmehr, wenn Du die Programmteile nicht in Deinen 
blink-Sketch eingebaut hast.

Also das http-Update Beispiel nehmen und dann genau das zum Test per 
http-Update raufflashen.

Dann eben Deine Funktionen in dieses Beispiel einbauen und per 
http-Update flashen usw.

Um OTA oder httpUpdate sinnvoll zu nutzen sollte man schon halbwegs 
sattelfest bei der ESP-Programmierung sein.

Gruß aus Berlin
Michael

von Fabian S. (fabian95)


Lesenswert?

Also ich hab das jetzt mit dem http updater so weit geschafft, das er 
mir die oben genannte Fehlermedlung schon mal nicht mehr bringt. Hab die 
Flash size einfach mal auf 1M (512k SPIFFS) gestellt.

Jetzt bringt der mir in der Ausgabe aber diesen Fehler:
1
[SETUP] WAIT 4...
2
[SETUP] WAIT 3...
3
[SETUP] WAIT 2...
4
[SETUP] WAIT 1...
5
6
Exception (29):
7
epc1=0x4000e1c3 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000018 depc=0x00000000
8
9
ctx: cont 
10
sp: 3ffef540 end: 3ffef930 offset: 01a0
11
12
>>>stack>>>
13
3ffef6e0:  402302b5 00000017 60000200 40106fb4  
14
3ffef6f0:  40211541 4022cc36 00000001 4020a45a  
15
3ffef700:  117700fc 4020ca27 3fff102c 3fff0ad4  
16
3ffef710:  40211782 3fff102c 3fff0ad4 00000000  
17
3ffef720:  3ffee72c 3ffed390 3ffed30c 3fff0ad4  
18
3ffef730:  00000000 00000000 00000001 00000000  
19
3ffef740:  00000018 00000064 1b7fcf5e fffeffff  
20
3ffef750:  3ff20a00 0000ffff 3ffef778 4020d0ce  
21
3ffef760:  3ffed30c 3fff0ad4 3fff0ad4 00000000  
22
3ffef770:  1b7fcf5e 3fff50fe 00000000 00000000  
23
3ffef780:  00000000 00000000 00000000 00000000  
24
3ffef790:  00000000 00000000 00000000 00000000  
25
3ffef7a0:  00000000 00000000 00000000 4020e220  
26
3ffef7b0:  3fff0ad4 00000001 3fff0ad4 4020e268  
27
3ffef7c0:  00000000 3ffed390 3ffee118 00000000  
28
3ffef7d0:  4021dc29 00000003 00000003 000000fd  
29
3ffef7e0:  4021dd79 00000003 00000001 00000000  
30
3ffef7f0:  3fff028c 4021ddee 00000003 00000001  
31
3ffef800:  40202361 3ffee72c 00000001 00000000  
32
3ffef810:  40202398 feefeffe 3ffee72c 402023ba  
33
3ffef820:  4021dbc2 3ffee745 00000000 40202c56  
34
3ffef830:  4021ea0f 40106df8 3ffee840 00000008  
35
3ffef840:  00000000 4020293c 3ffef881 3ffee8fc  
36
3ffef850:  fffffffe 3ffee72c 00000006 402026ac  
37
3ffef860:  3ffee840 00000008 3ffef870 40204e60 <
38
3ffef870:  5445535b 205d5055 54494157 3ffee8fc  
39
3ffef880:  00000000 00000001 3ffee720 401004d8  
40
3ffef890:  0000001c 00000000 3ffee840 4020607c  
41
3ffef8a0:  feefeffe feefeffe 3fff0254 40202787  
42
3ffef8b0:  3ffef8e0 3ffee720 0000000f 401004d8  
43
3ffef8c0:  4010547c 001447d6 3ffee778 3ffee8fc  
44
3ffef8d0:  3ffe843c 3ffee720 3ffe8448 3ffee8fc  
45
3ffef8e0:  3fffdad0 00000000 3ffee8f4 402021cf  
46
3ffef8f0:  3fffdad0 00000000 3ffee840 40202870  
47
3ffef900:  3fffdad0 00000000 3ffee840 4020219a  
48
3ffef910:  feefeffe 00000000 3ffee8f4 40206294  
49
3ffef920:  feefeffe feefeffe 3ffee910 40100718  
50
<<<stack<<<
51
52
 ets Jan  8 2013,rst cause:2, boot mode:(1,6)
53
54
55
 ets Jan  8 2013,rst cause:4, boot mode:(1,6)
56
57
wdt reset

von Stefan F. (Gast)


Lesenswert?

> Hab die Flash size einfach mal auf 1M (512k SPIFFS) gestellt.

Meinst du das dadurch der physikalische Speicher einfach größer wird?

von Fabian S. (fabian95)


Lesenswert?

> Meinst du das dadurch der physikalische Speicher einfach größer wird?

Nicht direkt. Ich denk mal man kann die Speichergröße nur in der 
Software noch einmal einstellen... Aber sonst hätte der mir jetzt nicht 
diesen Fehler ausgespuckt und wäre bei dem anderen Fehler geblieben.

von W.A. (Gast)


Lesenswert?

Fabian S. schrieb:
> Ich denk mal man kann die Speichergröße nur in der Software noch einmal
> einstellen...

Da kannst du auch beliebige CPU-Taktfrequenzen einstellen. An der 
Hardware ändert das nichts.

von Fabian S. (fabian95)


Lesenswert?

Super das ist mir auch klar. Aber WIE bekommt man das Problem gelöst ?

von Pete K. (pete77)


Lesenswert?

Einen anderen Flash-Baustein mit mehr Kapazität auflöten.

von Fabian S. (fabian95)


Lesenswert?

Der ESP8266-12F Hat doch genug Flash für diese Anwendung eigentlich 
schon???

von Stefan F. (Gast)


Lesenswert?

Wieviel Flash hat denn deiner? Ich wette, dass diese Module genau wie 
die ESP-01 mit unterschiedlich großen Speichern verkauft wurden.

von Christopher J. (christopher_j23)


Lesenswert?

Es gibt in der Arduino IDE ein Beispiel namens CheckFlashConfig. Das 
gibt dir die größe des Flashs aus.

von Joachim S. (oyo)


Lesenswert?

Fabian S. schrieb:
> Also ich hab das jetzt mit dem http updater so weit geschafft, das er
> mir die oben genannte Fehlermedlung schon mal nicht mehr bringt. Hab die
> Flash size einfach mal auf 1M (512k SPIFFS) gestellt.

Keine Ahnung, ob es tatsächlich was bringt - aber da das ESP-12F-Modul 
üblicherweise ja 4MB Flash hat (ich habe jedenfalls noch nie von 
ESP-12F-Modulen mit weniger Flash-Speicher gehört), probiere doch 
einfach mal kurz, die Flash-Grösse auf die vermeintlich richtige Grösse 
von 4MB einzustellen, bei der SPIFFS-Grösse hingegen bei einem kleinen 
Wert zu bleiben.

von PopCorn (Gast)


Lesenswert?

Hello everbody,

dieser Link kann helfen.
(How to upgrade your ESP8266 memory to 4MB)

https://www.youtube.com/watch?v=7Q6ABad7U6o

BR

PopCorn

von STMler (Gast)


Lesenswert?

PopCorn schrieb:
> Hello everbody,
>
> dieser Link kann helfen.
> (How to upgrade your ESP8266 memory to 4MB)
>
> https://www.youtube.com/watch?v=7Q6ABad7U6o


Tolle Idee. Fabian hat ein ESP-12F mit Abschirmung und keinen ESP-01.
Besser einen neuen für 1,50 kaufen. Alles andere ist Zeitverschwendung.

Die Größe des Flashs kann man mit esptool.py auslesen:
1
esptool.py --port /dev/ttyUSB0 flash_id

2^[letzte beide Ziffern der ID] / 16 = Flashsize in k.

Also z.B.: ID 4014 -> 2^14/16 = 1024kB = 1MB.

von Fabian S. (fabian95)


Lesenswert?

Joachim S. schrieb:
> Keine Ahnung, ob es tatsächlich was bringt - aber da das ESP-12F-Modul
> üblicherweise ja 4MB Flash hat (ich habe jedenfalls noch nie von
> ESP-12F-Modulen mit weniger Flash-Speicher gehört), probiere doch
> einfach mal kurz, die Flash-Grösse auf die vermeintlich richtige Grösse
> von 4MB einzustellen, bei der SPIFFS-Grösse hingegen bei einem kleinen
> Wert zu bleiben.

Super! Es funktioniert jetzt (Ohne einen Flash Chip einzulöten).

Vielen Dank!

Liebe Grüße
Fabian

: Bearbeitet durch User
von Fabian S. (fabian95)


Lesenswert?

Leute,
eine Frage hätte ich da noch...
Nach dem update, muss ich den ESP immer neustarten, in dem ich den zum 
beispiel über den reset pin neustarte. Jetzt ist meine frage, ob ich den 
ESP nach dem update auch automatisch neustarten kann?

LG
Fabian

von Stefan F. (Gast)


Lesenswert?

Oha, du stellst Fragen. Das ist jetzt schon im Bereich für Experten :-)

Ich habe keine Ahnung, ob es ohne Reset geht.

von D. T. (tuxiuser)


Lesenswert?


von Fabian S. (fabian95)


Lesenswert?

Diese Funktion kann ich aber nicht ausführen, da nach dem update ein
"wtd reset" ausgeführt wird... Somit hat mein Code keinen Einfluss mehr 
auf dem ESP, bis ich ihn wieder manuell neu gestartet habe.
Aber das muss doch möglich sein ?
Das kann doch nicht sein, das der ESP nach einem update nicht 
automatisch neu startet?

von Fabian S. (fabian95)


Lesenswert?

Kleines Update:
Ich habe so eben einen "ESP8266 NodeMCU LUA WiFi Entwickler Board" 
getestet, das heute angekommen ist.

http://www.ebay.de/itm/NodeMcu-Lua-CH340G-ESP8266-Wireless-WIFI-Internet-Development-Module-TE437-/201566780411?hash=item2eee50fbfb:g:t04AAOSwLnBXVSi7

Bei dem funktioniert das httpUpdate ohne Probleme und startet auch von 
automatisch nach dem Update neu. Was ist da (Hadrware) anders als beim 
reinen Modul (ESP8266-12E/ 12F) ? Muss ich noch irgendwas mit einbauen?

von Richard B. (r71)


Lesenswert?

Der (NodeMCU) hat ein Auto-Reset Funktion eingebaut ;)
Womit hast du es verglichen (Link)?

Fabian S. schrieb:
> Muss ich noch irgendwas mit einbauen?

Ja, 2 Transistoren.
Was genau hast du vor?

: Bearbeitet durch User
von Alexander B. (alexander95)


Lesenswert?

Ich habe das mit dem ganz normalen ESP8266-12F Modul verglichen.

Ich möchte meinen ESP von der Ferne aus automatisch updaten können ohne 
das ich irgendwie den manuell Neustarten muss...

Hättest du vielleicht eine genauere Erklärung mit den 2 Transistoren 
(Schaltplan etc.) ?

von Richard B. (r71)


Lesenswert?


von Fabian S. (fabian95)


Lesenswert?

Aber laut diesem Schaltplan müsste ich ja dann noch einen programmer mit 
einbauen oder ?

von Richard B. (r71)


Lesenswert?

Nun, hier wird der Reset durchs FT231, FT232
oder eben den CH340G ausgelöst...

von Fabian S. (fabian95)


Lesenswert?

Gibt es da kein Bauteil, das den Pull's dann einfach auslöst?
Wenn ich den NodeMCU nämlich extern mit einem Akku betreibe, wird dieser 
Pull's nach dem Update auch ausgelöst und der ESP startet neu...?

von Fabian S. (fabian95)


Lesenswert?

Hey Leute,
gibt es vielleicht irgend ein Bauteil/ IC, das diesen Controller 
ersetzt?
Um genauer zu sein, sollte nur der RTS und DTR Pin ersetzt werden.

http://de.rs-online.com/web/p/usb-controller/5268841/

LG
Fabi

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.