Uppdatera firmware ESP8266

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
H.O
Inlägg: 5702
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Uppdatera firmware ESP8266

Inlägg av H.O »

Jag har en ESP8266 i form av en Wroom 02-modul som jag försöker uppdatera firmware på men efter 5h är jag nu nära att ge upp och slänga ut skräpet i snön.

Jag har laddat ner ESP8266 Download tool v3.8.5 samt ESP8266-IDF-AT_V2.1.0.0 från Espressif (https://www.espressif.com/en/products/m ... /resources).
I dokumentationen står det:
To run the ESP8266 AT, you can download the binary in ESP8266-IDF-AT/factory to address 0x0. The
ESP8266 IDF AT sends AT commands through the following pins.
GPIO13 is RXD
GPIO15 is TXD
GPIO1 is RTS (Optional)
GPIO3 is CTS (Optional)

Så jag startar upp modulen med GPIO.0 dragen till GND och kan ansluta till den med verktyget (jag tolkar det i alla fall så):

Kod: Markera allt

CONNECT BAUD: 115200
============
.Uploading stub...
Running stub...
Stub running...
-----------------------
crc_efuse_4bit: 0
crc_calc_4bit: 7
48bit mac

 is stub and send flash finish

Sen pekar jag verktyget på .bin filen enligt dokumentationen, sätter adressen till 0x0 och laddar ner utan några synbara problem eller felmeddelanden.

Skärmklipp.PNG


Men nu kan jag inte längre prata med den. Har testat via såväl de vanliga TX/RX pinnarna som GPIO15/GPIO13 men den svarar inte på "AT", "AT+RST" eller nått annat heller för den delen. Jag har testa alla tänkbara standard baudrates (även 78880 som verkar vara bootloaderns baudrate) men jag får inget vettigt alls ur den.
Finns här någon som har koll på proceduren och/eller har testat den nyare version av firmware. Jag har Googlat som en tok men hittar ingen information som verkar relevant för den nyare v2 av AT-firmware, bara 5 år gamla artiklar om hur man laddar firmware med hjälp av en Arduino och det är inte det jag vill.

Tack på förhand!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

Här är det korrekta sättet att få esp8266 i flash-mode
För att vara på den säkra sidan kopplas de in med resistorer
för att inte eventuellt kortsluta utgångar,
som kan användas av programmet man flashar.

GPIO 0: LOW
GPIO 2: HIGH
GPIO 15: LOW

PS. I databladet för wroom-02 har dessa inga resistorer.

/jannik
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

https://stackoverflow.com/questions/407 ... he-esp8266

Bootloaderns default baudrate är 74880 när det används en 26Mhz kristall (vilket är standard)
Och då blir baudrate 74880 istället för 115200 (vid 40Mhz kristall)

För i flashminnet lagras inställningar som tex vilken kristall hastighet som används vidare i bootprocessen
Och saknas de så används default ovan.
ToPNoTCH
Inlägg: 4871
Blev medlem: 21 december 2009, 17:59:48

Re: Uppdatera firmware ESP8266

Inlägg av ToPNoTCH »

Plockar du bort GPIO0 jordningen och startar om efter flashning ?
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

Jag tror de har förväxlat pinnarna
GPIO13 is RXD
GPIO15 is TXD
GPIO1 is RTS (Optional)
GPIO3 is CTS (Optional)

Ska nog vara:
GPIO13 is RTS
GPIO15 is CTS
GPIO1 is TXD
GPIO3 is RXD

Taget ur esp8266 datablad
U0RXD UART Rx during flash programming; GPIO3
U0TXD UART TX during flash programming; GPIO1
H.O
Inlägg: 5702
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Uppdatera firmware ESP8266

Inlägg av H.O »

Hej och tack för svar!

RST (pin 15) har pullup till Vcc
EN (pin 2) har pullup till Vcc
GPIO.0 (pin 8) har pullup till Vcc
GPIO.2 (pin 7) har pullup till Vcc
GPIO.15 (pin6) har pulldown till GND

Jag drar GPIO.0 låg och startar upp module, behåller GPIO.0 låg under hela processen. Sedan stänger jag av spänningen, plockar bort "jordningen" av GPIO.0 och startar upp igen.
Lite beroende på vilket baudrate jag har terminalprogrammet inställt på så blir resultatet olika men ALDRIG något i klartext utan t.ex Ÿ†þŠ‹’³ž‚‚‚‚5š‹ò5Ÿ¢š och jag får aldrig något svar på exempelvis "AT".

En gång lyckades jag nog krascha den varpå den spottade ur sig:

Kod: Markera allt

 ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 7000, room 16 
tail 8
chksum 0x83
load 0x3ffe8008, len 24, room 0 
tail 8
chksum 0x0a
load 0x3ffe8020, len 3412, room 0 
tail 4
chksum 0x40
csum 0x40
Då hade jag terminalprogrammet inställt på 115200 varför jag TROR att det är den korrekta baudraten - och detta var på de "vanliga" TX/RX-pinnarna (samma som jag använder för att flasha firmware) medan dokumentationen säger att modulen pratar AT-kommandon via GPIO.13 & 15 (men det kanske är förväxlat då som manicken är inne på).

Min modul verkar ha 16Mbit flash (det är i alla fall vad verktyget själv läser av) men om jag förstår det hela rätt så är inställningen FLASH SIZE i verktyget inte vilken storlek själva MODULEN har utan för vilken storlek binärfilen har kompilerats, jag har inte hittat den information.
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

Skickar du CR LF efter AT kommandot

CR = 0x0D
LF = 0x0A

Vilket terminal program använder du?
H.O
Inlägg: 5702
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Uppdatera firmware ESP8266

Inlägg av H.O »

Ja jag skickar CR/LF. Jag har testat med med både TeraTerm och en terminal som är inbyggd i mitt IDE.
Jag kopplade upp alltsammans i morse, testade att jag kunde kommunicera med modulen men upptäckte snabbt att många av de dokumenterade AT-kommandon inte supporterades av den firmware-version jag hade. -Ah det måste vara en smal sak att uppdatera tänkte jag och här sitter jag 12h senare...

Det är samma RS232<->TTL adapter jag använder för att ladda ner firmware med (115200 baud) och stoppar jag dit en annan ESP8266 så fungerar det att prata AT-kommandon med den så hårdvara och terminalinställningar bör vara funkis.

Så i brist på en definitiv guide eller liknande så är det följande jag funderar på:
* Är det eller är det inte de "vanliga" TX/RX pinnarna som används av den nya firmwaren? (Står det alltså fel i dokumentationen?)
* Vilken är default baudrate efter en uppdatering? Är det 74880 för i så fall kanske det ÄR det som strular, jag är inte SÄKER på att TeraTern faktiskt ger det ut, måste mäta.
* Hur vet jag vilken inställning för minnesmappningen jag ska välja, jag trodde det var avhängs minnestorleken på modulen i sig men det VERKAR alltså inte så.

Är det någon som faktiskt kör 2.1.0
Castor
Inlägg: 1985
Blev medlem: 24 mars 2012, 13:03:49

Re: Uppdatera firmware ESP8266

Inlägg av Castor »

Programmet "Terminal by Bray" tillåter custom baudrate, det gick att knappa in 74880 men jag har inte möjlighet att kolla att den är korrekt.
H.O
Inlägg: 5702
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Uppdatera firmware ESP8266

Inlägg av H.O »

Alltså jag kan ju inte tänka mig att default baudrate verkligen ÄR 74880. Jag förstår om det är den baudraten som bootloadern initialt startar med men när väl den "riktiga" firmwaren börjar exekveras så måste den väl ställa om till 115200 eller någon annan standard. Hur som helst så testade jag "Terminal by Br@y" (tack för tipset) men resultatet är det samma, modulen bara spottar ur sig en massa dynga och reagerar inte över huvud taget på kommandon skickade till den.
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

Det verkar faktiskt vara så att de använder
(Kanske att de vill seperera ifrån standard flash port då den är kopplad till usb-uart på bilden i PDF)
Gpio 15 till tx
Gpio 14 till rx

Kolla sidan 6
https://www.google.com/url?sa=t&source= ... 0820450561

Edit fel länk
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

UART pins
Note that there's a special switch to swap UART0 RX/TX with UART0 CTS/RTS which is what systemuartswap does and is explained in http://bbs.espressif.com/viewtopic.php? ... t_swap#p54:

https://www.esp8266.com/wiki/doku.php?i ... llocations

Troligtvis det dom gjort i nya AT firmware som du använder.
H.O
Inlägg: 5702
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Uppdatera firmware ESP8266

Inlägg av H.O »

Ja, kanske, men jag får inte ut ett SMACK på någon av de pinnarna. :evil:
Användarvisningsbild
manicken
Inlägg: 91
Blev medlem: 10 februari 2006, 14:20:59
Ort: DEGEBERGA

Re: Uppdatera firmware ESP8266

Inlägg av manicken »

Jag flasha in den firmware i min ESP-12E modul (vilken egentligen är 32Mbit 4MB)
Men ställde in den på 16Mbit 2MB (eftersom bin filen är på 2MB)
ESP-12EmedATfirmware21.png
jag har kopplat in en FT232 (som har en 3v3 level translator)
så här
FT232 RxD <- ESP8266 TxD
FT232 TxD -> ESP8266 RxD

har nu testat mkt. och slutsatsen (problemet samt lösningen)

föjlde manualen och där står det använd baud 230400
detta är bara den hastighet som man flashar med, högre innebär snabbare flashning.

sen kommer det till det andra:
jag körde hardcore med både en FT232 kopplad till den vanliga "flash" porten GPIO1 & GPIO3
och en FT232 kopplad till GPIO13 & GPIO15

vilket gör att jag kunde se bootloaderns print på (GPIO1 & GPIO3)
samtidigt som jag kunde testa AT-kommando på den andra (GPIO13 & GPIO15)

och när jag hade GPIO15 inkopplad till FT232 så fick jag följande
BootloaderOutput.png
kopplade då ur GPIO15 från FT232 och ressettar (och då bootar den normalt)
BootloaderOutput_UtanGPIO15_inkopplad.png
kunde sedan skicka AT kommando och få svar
ATkommando_OK.png
verkar otroligt dumt av Espressif att använda GPIO15 som UART port för AT-kommandon
eller ja det är ju en utgång så det borde inte spela någon roll
men troligtvis så har FT232 en pullup på ingången som GPIO15 är kopplad till
och denna pullup är starkare än den pulldown som är kopplad till GPIO15 normalt.

lösningen är att om en mikrokontroller (MCU) kopplas in till ESP-modulen

* så måste även ESP-modulens reset pin användas (kan vara bra att använda ändå för att säkerställa att ESP-modulen är återställd innan man börjar skicka AT-kommandon)

* och när MCU startar så aktiveras först ESP-reset (hålls sedan i detta läge)

* sätter MCU pinnen som kopplas till GPIO15 till ingång utan pullup (men det ska finnas en extern pulldown resistor)

* inaktivera ESP-reset (och då ska esp boota normalt)

* efter en given tid så kan MCU börja initiera UART och sedan börja skicka AT-kommandon.


(förresten så är BOOT-modet SDIO-SLAVE när GPIO15 är hög, de övriga GPIO spelar inte någon roll i detta boot-läge)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
H.O
Inlägg: 5702
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Uppdatera firmware ESP8266

Inlägg av H.O »

Tack tack tack! :tumupp:
Jag har inte testat detta ännu men har nu en bekräftelse på att det GÅR att få det att funka.

Så GPIO.13 och 15 ÄR UART för AT kommandon och det du säger är att FT232 övermannar den pulldown som sitter på GPIO.15 och får modulen att inte boota normalt. Lämnar man GPIO.15 (med sin externa pulldown) i fred tills modulen HAR bootat och SEDAN ansluter den till FT232 så funkar det - med 115200 baud?

Undrar varför jag inte lyckats då...jag har kört med en old school RS232<->TTL krets och så vitt jag kan se har den ingen pullup på TTL-sidans ingångar.

Som sagt, jag ska testa efter frukost!
Skriv svar