Hallo,
hat schonmal einer ein ESP8266 Modul geflasht, indem einzig die UART
Schnittstelle verwendet wird, ohne einen Umweg über den PC zu gehen,
also quasi von Mikrocontroller direkt auf das WLAN-Modul?
Die *.bin-Datei würde in einem externen Flash liegen und soll dann in
das Modul reingeflasht werden. Wie muss man da vorgehen?
An sowas bin ich auch gerade dran. Das Fladshtool für die Arduino IDE
ist in Python geschrieben, die wollte ich mir anschauen und dann das
Protokoll übernehmen.
Das Protokoll ist aber auch irgendwo dokumentiert, da könnte man auch
ansetzen
Du brauchst dazu ein Programm auf dem ESP8266.
Dieses muss den Speicher lesen können (z.B. eine SD Karte)
Dann muss es Datenwust in einem Bereich des eigenen Flash ablegen.
Dann eine wohlbekannte API Funktion aufrufen.
Der ESP führt einen Reset aus.
Der Bootloader im Rom merkt dass da ein neues Programm liegt
Kopiert es an die richtige Stelle im Flash und startet es.
Ansonsten ist das alles sowieso auch egal, denn der ESP kann OTA Update.
Da ist dann kein Gehampel mit "Seriell" nötig.
ok,
d.h. Schritt 1:
GPIO0: low
GPIO2: high
GPIO15: low
Schritt 2:
Die Länge meines *.bin-Files bestimmen und durch den 7 Byte langen
Header ergänzen.
Danach das SLIP Framing Protocol umsetzen, d.h. 0x0C an den Anfang und
an das Ende ansetzen, außerdem diese Daten innerhalb meiner Nutzdaten
durch 0XDB + 0X0C usw. ersetzen. Meine Daten werden damit länger als sie
vorher waren, im Header muss allerdings die ursprüngliche Länge des
Originafiles erhalten bleiben.
Zwei Fragen an dieser Stelle:
1)
Jedes Packet soll mit 0x0C beginnen, der PacketHeader wiederum soll mit
0x00 beginnen.
Wie beginne ich denn nun?
2)
Kann es sein, dass im Header bereits ein 0X0C auftaucht, welcher ersetzt
werden muss, geht man dann genauso vor, d.h. könnte der Header länger
werden als die beschriebenen 9 Byte?
Weiter im Text, die APNote schreibt:
"Encapsulate the Firmware into several Frames and transmit them to the
ESP8266"
Frage an dieser Stelle:
In wieviele Frames muss ich das denn unterteilen?
Weiter im Text:
Nach dem Header folgt ja irgendwann die Nutzlast, also die eigentliche
*.bin Datei, die ja nun zunächst mit einigen Ersetzungen von 0X0C zu
0XDB+0XDC bzw. 0XDB+0XDD etwas länger geworden ist.
In der AppNote wird ja noch etwas zu dem FileFormat erklärt. Kann ich da
noch irgendeinen Einfluss drauf nehmen, bzw. muss ich an dieser Stelle
noch Einstellungen vornehmen?
Ich habe aktuell nur das *.bin File vorliegen und dieses scheint
tatsächlich mit dem 0xE9 zu beginnen.
Die Anwendung werden wenige haben.
Wenn man "was eigenes" auf den ESP flasht, dann braucht man
normalerweise keinen zusätzlichen µC, sondern lässt den ESP selber
werkeln.
Wenn man den ESP mit der "AT-Kommando"-Firmware an einem µC betreibt,
dann muss man ihn eher selten flashen.
Und dann hätte der ESP (zumindest die mit genug Flash) auch noch die
Option OTA-Updates zu fahren.
Ich würde fast behaupten: Der Anwendungsfall einen AVR vom ESP aus zu
flashen ist häufiger. (und einfacher, einen AVR-Bootloader kann man ja
selber anpassen wie man ihn braucht)
Frage:
Kann man beim OTA Update irgendwie Einfluss darauf nehmen, welche
Firmwareversin in das Modul gespielt wird und möglicherweise auch woher
die Datei genau bezogen werden soll?
...Arduino scheidet leider aus.
Die Module verstehen ja den AT+CIUPDATE Befehl, aber ich hatte gehofft,
dass man noch irgendwelche Einstellungen vornehmen kann, damit eine ganz
bestimmte Datei von eine bestimmten Standort aus gesogen wird.
Das funktioniert nicht?
Also,
das Transmission Protokoll kennt laut obiger AppNote folgende Befehle:
02: DownloadStart
03: File PacketSend
04: FlashDownloadStop
08: SyncFrameSend
Ich habe nun einmal die serielle Kommunikation während dem Flashen
mithilfe des Flashtools geloggt und mir angeguckt, welche Befehle dabei
gesendet werden.
Neben
08 und 02 finde ich auch Befehle mit den Nummern:
09, 10, 05, 07
Wo finde ich denn die Zuordnung dieser Nummern?
Die Seite ist mega lahm...
Außerdem muss es doch etwas vom Hersteller des Moduls geben.
Kann doch irgendwie nicht sein, dass ich mir die Doku aus dem Sourcecode
irgendeines Drittanbieters zusammen schustern muss...
> Kann doch irgendwie nicht sein, dass ich mir die Doku aus dem> Sourcecode irgendeines Drittanbieters zusammen schustern muss...
Doch ist so. Vor drei jahren gab es noch viel weniger Doku und das
Meiste nur auf chinesisch.
Wir (+TestX) meinen die Datei esptool.py, mit der Du normalerweise den
ESP flashst. Das kann doch nicht so schwer sein.
Und da muß man auch nichts zusammenschustern. Das steht dort sehr gut
dokumentiert drin.
Gruß
Andreas
Rein interessehalber:
Magst du uns was über deinen doch sehr seltsamen Anwendungsfall
erzählen?
Wenn du die AT-Firmware benutzt, warum muss die dynamisch vom
angeschlossenen µC draufgespielt werden?
Vor allem wenn, wie oben angedeutet, der µC dafür viel zu klein ist und
externen Zusatzspeicher braucht, der vmtl. teurer ist als der ganze ESP?
Hast du zwei Versionen der AT-Firmware, bei der einmal Feature A und
einmal B funktioniert, die du dynamisch umflashen willst?
=> Dann schließ' lieber zwei ESP8266 an den µC an, und verwende jeweils
einen.
Oder fixe die AT-Firmware, damit A und B gleichzeitig gehen.
Wobei mir schon unverständlich ist, warum man sich für eine
Neu-Entwicklung überhaupt freiwillig die AT-Firmware antut, wenn man
selber C Programmieren kann.
Nein, Arduino braucht man dazu nicht, das ESP-SDK läuft auch ohne. Im
ESP-Arduino-Plugin ist nur alles schon schön zusammmengepackt, die
Installation deshalb einfach.
Aber z.B. mit platformio.org ist das ESP-SDK auch fix installiert.
Εrnst B. schrieb:> Rein interessehalber:> Magst du uns was über deinen doch sehr seltsamen Anwendungsfall> erzählen?>> Wenn du die AT-Firmware benutzt, warum muss die dynamisch vom> angeschlossenen µC draufgespielt werden?>> Vor allem wenn, wie oben angedeutet, der µC dafür viel zu klein ist und> externen Zusatzspeicher braucht, der vmtl. teurer ist als der ganze ESP?>
Na, wenn man schon nach dem Sinn der ganzen Sache fragt, dann frage ich
mal ganz provokativ warum der TO den ESP nicht gleich OTA programmiert.
Gruß
Andreas
Andreas B. schrieb:> frage ich> mal ganz provokativ warum der TO den ESP nicht gleich OTA programmiert
Vermute deshalb:
ESP schrieb:> Die Module verstehen ja den AT+CIUPDATE Befehl, aber ich hatte gehofft,> dass man noch irgendwelche Einstellungen vornehmen kann, damit eine ganz> bestimmte Datei von eine bestimmten Standort aus gesogen wird.
er wird wohl eine ganz spezielle AT-Firmware-Version brauchen.