A partíció 1MB FW 3MB SPIFFS. A Firmware ~900kB
Ehhez szeretnék valami WiFi-s frissítést.
A normál OTA esélytelen. Arra gondoltam ha a rendes FW által AsyncWebServer segítségével fogadott fájl pl "update.bin" akkor lezárja a fájlrendszert és kiírja 0x100000-tól a bin-t a flesbe. Fájlokat buktam, leszarom, az új FW formatálja. Ez egy AsyncElegantOTA firmware lenne. Az eredeti FW setup első sora megnézi az eepromot amiből kiderül hogy frissíteni kell-e, ha igen akkor 0x100000 címen levő kódot futtatja. Lehet egy .ino-t fordítani úgy hogy a 0x100000 címen kezdődjön és setupból indítható legyen?
- 882 megtekintés
Hozzászólások
Akkor válassz 8 MB vagy 16 MB flash memóriás board-ot.
- A hozzászóláshoz be kell jelentkezni
Gondolom a hardver adott, mi lenne, ha ebből indulnánk ki?
- A hozzászóláshoz be kell jelentkezni
Mi lenne, ha abból indulnánk ki, hogy a feladathoz választunk eszközt?
- A hozzászóláshoz be kell jelentkezni
Ebben teljesen igazad van.
Jelenleg a feladat:
"A partíció 1MB FW 3MB SPIFFS. A Firmware ~900kB
Ehhez szeretnék valami WiFi-s frissítést."
Szóval a vas már adott és azzal akar valamit kezdeni. :-)
- A hozzászóláshoz be kell jelentkezni
A "vas" az nem a feladat, az már maga az eszköz. A feladat az, hogy ESP8266 alapon lehessen OTA ~900 kB FW esetén, ehhez kellene megfelelő eszközt választani, amiben ehhez van elég külső EEPROM.
- A hozzászóláshoz be kell jelentkezni
van amikor nem forraszthato ki az esp chip a cuccbol. persze en is tudok olyan esp-t keresni mivel fel sem merul a problema.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
van amikor nem forraszthato ki az esp chip a cuccbol.
Nem az ESP chip-ben van az EEPROM, az egy másik chip.
persze en is tudok olyan esp-t keresni mivel fel sem merul a problema.
Három út van: vagy nagyobb EEPROM vagy kisebb igények vagy másik architektúra. Az ESP8266 esetén a chip működése adott, az OTA működést a chip firmware adja, az kezeli az EEPROM újraírását, ezt nem tudod cserélni.
- A hozzászóláshoz be kell jelentkezni
?
Nincs is eeprom. Az a flash végén egy kis rész. Nem értem ez hogy jön ide.
- A hozzászóláshoz be kell jelentkezni
Nincs is eeprom. Az a flash végén egy kis rész.
Ühüm: "Flash memory is a block-erase EEPROM optimized for high density and speed."
Nem értem ez hogy jön ide.
Elég nagy baj az...
- A hozzászóláshoz be kell jelentkezni
Esküszöm nem értelek. Ezt én írtam, törli a flasht, az eeprom első hat bájtját megőrzi.
@echo off
COLOR A
echo Full Format ^!^!^!^!^!^!^!^!^!^!^!
setlocal EnableDelayedExpansion
SET /P M=COM port:
echo -------------------------
echo BACKUP REGISTRATION CODE
esptool.exe --port COM%M% read_flash 0x3FB000 6 code.txt
echo SUCCESS!
echo -------------------------
echo ERASE FLASH
esptool.exe --port COM%M% erase_flash
echo SUCCESS!
echo -------------------------
set "INPUT=code.txt"
set "OUTPUT=eeprom_full.bin"
set "PADBIN=pad_ff.bin"
set "HEX=pad_ff.hex"
set /a TOTAL=4096
for %%I in (%INPUT%) do set /a SIZE=%%~zI
if !SIZE! GEQ !TOTAL! (
echo %INPUT% is already >= 4096 bytes
copy /Y %INPUT% %OUTPUT% >nul
goto :done
)
set /a NEED=!TOTAL! - !SIZE!
set /a LINES=!NEED! / 16
set /a REM=!NEED! %% 16
> %HEX% (
for /L %%i in (1,1,!LINES!) do echo FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
if !REM! NEQ 0 (
set "LINE="
for /L %%j in (1,1,!REM!) do set "LINE=!LINE!FF "
echo !LINE!
)
)
certutil -f -decodehex %HEX% %PADBIN% >nul 2>&1
if errorlevel 1 (
echo HIBA: certutil nem tudta létrehozni a bináris fájlt.
goto :error
)
copy /b %INPUT% + %PADBIN% %OUTPUT% >nul
del %PADBIN%
del %HEX%
echo WRITE REGISTRATION CODE
esptool.exe --port COM%M% write_flash 0x3FB000 eeprom_full.bin
del %OUTPUT%
echo SUCCESS!
goto :done
:error
echo ERROR.
exit /b 1
:done
endlocal
echo -------------------------
Na hol az eeprom?
- A hozzászóláshoz be kell jelentkezni
Esküszöm nem értelek.
A fő probléma az, hogy az ESP8266 működését, felépítését és architektúráját se érted.
Na hol az eeprom?
Mindegy, hogy minek hívod a fájlt, a neve nem kerül kiírásra, az csak a gépeden jelent bármit is, viszont a Flash-ban van ugyanúgy és ahogy írtam, a Flash az egy EEPROM altípus... amit te `eeprom_full.bin` néven nevezel és kiírsz a 0x3FB000 területre - az a memory map specifikáció szerint "Unused" régió, oda azt írsz, amit akarsz, és bárhogy nevezheted a fájlt a gépeden, semmit nem jelent.
Szóval újra: a Flash egy egy EEPROM altípus. Az ESP8266 külső EEPROM nélkül nem működik. Az OTA boot folyamatot az ESP8266 belső ROM firmware kezeli, az meg csak úgy tud működni, hogy van egy firmware partíció és ott van két slot. Ha nincs két slot, akkor nincs OTA. Fájlrendszerből nem fog működni a boot, fájlrendszerből úgy tud működni, hogy ugyanúgy van két slot a firmware partícióban és a fájlrendszerről átmásolja valamelyikbe a firmware-t. Olyan nem lesz, amit szeretnél, de ez amúgy le van írva a specifikációkban is.
- A hozzászóláshoz be kell jelentkezni
Nekem az az ic FLASH. EEPROM az a 24cXX
void (*app)() = (void (*)())0x40300000;
app();
Ezzel setupból elvileg tudom indítani a 0x100000 címet.
Az a kérdés tudok-e egy ElegantOTA fw-t így fordítani.
- A hozzászóláshoz be kell jelentkezni
Nekem az az ic FLASH. EEPROM az a 24cXX
Neked lehet, a 24Cxx az egy konkrét gyártó konkrét egy EEPROM IC típuscsaládja. Ezen kívül van millió fajta EEPROM. Minden olyan IC EEPROM, ami elektromosan törölhető és programozható, ez egy naaaaagy gyűjtőnév. Olvasnivaló a témában: https://en.wikipedia.org/wiki/EEPROM
Az a kérdés tudok-e egy ElegantOTA fw-t így fordítani.
Az ElegantOTA egy pár soros wrapper az ESP8266 saját OTA firmware kódja felett, azzal pedig nem tudsz olyan OTA-t csinálni, hogy "1MB FW 3MB SPIFFS" használatával ~900kB firmware OTA frissíthető legyen. Ez csak úgy megy, ha a firmware partíció 2MB méretű. Maximum olyat tudsz, hogy az firmware partíció aszimmetrikus, és van egy kisebb firmware, ami letölti a nagyobbat, de a legminimálisabb Arduino firmware kb. 300 kB lesz, ESP-IDF esetén ~130 kB, ezzel se fog 900 kB OTA felférni.
- A hozzászóláshoz be kell jelentkezni
Már értem. Kevered a FLASH-t meg az EEPROM-ot.
- A hozzászóláshoz be kell jelentkezni
Már értem. Kevered a FLASH-t meg az EEPROM-ot.
Nem, nem keverem, ahogy idéztem is a specifikációból: "Flash memory is a block-erase EEPROM optimized for high density and speed."
Te kevered:
Nincs is eeprom. Az a flash végén egy kis rész. Nem értem ez hogy jön ide.
Az a "flash végén egy kis rész", az nem EEPROM, mert a Flash egésze egy EEPROM, a "flash végén egy kis rész" az egy szimpla "Unused" memory block az EEPROM-ban, egy 4096 bájt hosszú blokk, amit te valamiért a saját gépeden úgy hívsz, hogy `eeprom_full.bin`. De hívhatod azt bárhogy, lehetne a neve `patyomkin.bin` is, ugyanúgy működne a programod, az ESP8266 ugyanis nem tudja, hogy mi a fájl neve, amiből felmásolsz 4096 bájtot.
- A hozzászóláshoz be kell jelentkezni
EEPROM
a: 24C16
b: EEPROM.begin(512);
Hagyjuk, értelek.
- A hozzászóláshoz be kell jelentkezni
Ez egy univerzális "oprendszer" (az aláírásom) ami ESP8266 4MB bármire is telepíthető.
- A hozzászóláshoz be kell jelentkezni
Hja, tudom, ezért lenne nagyon hasznos, ha nem csak felületesen ismernéd az ESP8266 működését és felépítését...
- A hozzászóláshoz be kell jelentkezni
Én nem szenvednék teljes firmware OTA frissítésésel, inkább olyat használnék, ahol tudod változtatni a filerendszeren a kódot. Pl. NodeMCU.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Sokkal kevesebbet (és lassabban) tudsz futtatni, ha interpretált kóddal futsz neki, lényegesen jobb lehetőségeid vannak Arduino alapokon és ESP-IDF esetén meg teljesen kinyílik a világ. De ez az OTA lehetőséget nem érinti, azt a chip saját firmware kódja végzi és kötött a működése.
- A hozzászóláshoz be kell jelentkezni
Tisztában vagyok vele, hogy egy interpreter nyelv lassabb, mint a natív fordított. De rengeteg olyan alkalmazás van, ahol ez az interpreter sebesség is bőven elég, nekem pl. eddig megfelelt mindenre: Villanyóra P1 port, szenzorok olvasása, ventilátorok vezérlése, mindezek ESP-01-el, ami a leggyengébb ESP8266 modul.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Oké, de ha egy Arduino bin ~900kB, akkor az vélhetően egyáltalán nem oldható meg interpretált módon. Az összevetés kedvéért, egy komplett Tasmota ~519k.
- A hozzászóláshoz be kell jelentkezni
Világos, nekem ilyen úri huncutságokra még nem volt szükségem.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni