Moja prezentacja nawiązuje do projektu: ESP3D, i wykonania niewielkich jego modyfikacji.
Dotyczyć będzie przygotowania wirtualnego dysku w pamięci flash modułu ESP8266 – a dokładnie modyfikacji pojemności nośnika elektronicznego. Sęk w tym, że do uruchomienia tego projektu przystąpiłem wygrzebując z szuflady moduł w wersji sprzętowej ESP-11, który na swoim pokładzie posiada przylutowaną pamięć flash 25Q40BT 512kB (4Mbit SPI flash). Co umożliwia uruchomienie projektu, ale stwarza pewne niewielkie komplikacje. Szczegóły o tym przedstawię w dalszej części.
Aby cieszyć się wspomnianą funkcjonalnością
niezbędne jest posiadanie uruchomionego dodatku w środowisku Arduino: SPIFFS Uploader tool (zagwarantuje wysyłanie zawartości wirtualnego dysku),
Szczegółowy opis projektu i proces instalacji zaprezentowany jest na witrynie ESP3D/wiki/Install-Instructions. Tak jak już wspomniałem na wstępie, projekt dopuszcza zastosowanie wybranej wersji modułu ESP. Lecz przygotowana przez autora organizacja pamięci flash, uniemożliwia jego prawidłowe uruchomienie. Stało się tak dzięki ciągłemu rozwojowi projektu, a autor wręcz zaleca zastosowanie modułu z pamięcią o większym rozmiarze. Ma to też swoje inne zalety funkcjonalne.
Mnie zależało tylko aby uruchomić projekt w celu zapoznania się z jego możliwościami i wykonania próby uruchomienia z drukarką Geeetech I3 M201, którą posiadam. Tak więc ochoczo zabrałem się do pracy przy pomocy Jacka Juniora vel panicz. Syn jak to zwykle bywa marudząc przygotował mi środowisko Arduino, oraz szablon niezbędnego projektu.
W lokalizacji programu :
1 |
kaktus@programator:~/.arduino15/packages/esp8266/hardware/esp8266/2.4.1 |
istnieje plik definicji z opisem organizacji przestrzeni pamięci o nazwie boards.txt, i właśnie jego zawartość należy zmodyfikować. Jego zawartość program wyświetla w menu. Plik ten zawiera również odwołanie do kolejnych plików konfiguracyjnych.
Treść dodana do pliku boards.txt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
generic.menu.FlashSize.512K96=512K (96K SPIFFS) generic.menu.FlashSize.512K96.build.flash_size=512K generic.menu.FlashSize.512K96.build.flash_size_bytes=0x80000 generic.menu.FlashSize.512K96.build.flash_ld=eagle.flash.512k96.ld generic.menu.FlashSize.512K96.build.spiffs_pagesize=256 generic.menu.FlashSize.512K96.upload.maximum_size=401392 generic.menu.FlashSize.512K96.build.rfcal_addr=0x7C000 generic.menu.FlashSize.512K96.build.spiffs_start=0x63000 generic.menu.FlashSize.512K96.build.spiffs_end=0x7B000 generic.menu.FlashSize.512K96.build.spiffs_blocksize=4096 generic.menu.FlashSize.512K112=512K (112K SPIFFS) generic.menu.FlashSize.512K112.build.flash_size=512K generic.menu.FlashSize.512K112.build.flash_size_bytes=0x80000 generic.menu.FlashSize.512K112.build.flash_ld=eagle.flash.512k112.ld generic.menu.FlashSize.512K112.build.spiffs_pagesize=256 generic.menu.FlashSize.512K112.upload.maximum_size=385008 generic.menu.FlashSize.512K112.build.rfcal_addr=0x7C000 generic.menu.FlashSize.512K112.build.spiffs_start=0x5F000 generic.menu.FlashSize.512K112.build.spiffs_end=0x7B000 generic.menu.FlashSize.512K112.build.spiffs_blocksize=4096 generic.menu.FlashSize.512K120=512K (120K SPIFFS) generic.menu.FlashSize.512K120.build.flash_size=512K generic.menu.FlashSize.512K120.build.flash_size_bytes=0x80000 generic.menu.FlashSize.512K120.build.flash_ld=eagle.flash.512k120.ld generic.menu.FlashSize.512K120.build.spiffs_pagesize=256 generic.menu.FlashSize.512K120.upload.maximum_size=376816 generic.menu.FlashSize.512K120.build.rfcal_addr=0x7C000 generic.menu.FlashSize.512K120.build.spiffs_start=0x5D000 generic.menu.FlashSize.512K120.build.spiffs_end=0x7B000 generic.menu.FlashSize.512K120.build.spiffs_blocksize=4096 |
Kolejna czynność to:
wykonanie nowych plików konfiguracyjnych „.ld”
Lokalizacja tego rodzaju plików środowiska, zainstalowanych w moim systemie:
1 |
kaktus@programator:~/.arduino15/packages/esp8266/hardware/esp8266/2.4.1/tools/sdk/ld$ |
zawartość pliku: eagle.flash.512k96.ld
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* Flash Split for 512K chips / / sketch 391KB / / spiffs 96KB / / eeprom 20KB */ MEMORY { dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 irom0_0_seg : org = 0x40201010, len = 0x69ff0 } PROVIDE ( _SPIFFS_start = 0x40263000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); PROVIDE ( _SPIFFS_page = 0x100 ); PROVIDE ( _SPIFFS_block = 0x1000 ); INCLUDE "../ld/eagle.app.v6.common.ld" |
zawartość pliku: eagle.flash.512k112.ld
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* Flash Split for 512K chips / / sketch 379KB / / spiffs 112KB / / eeprom 20KB */ MEMORY { dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 irom0_0_seg : org = 0x40201010, len = 0x69ff0 } PROVIDE ( _SPIFFS_start = 0x4025F000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); PROVIDE ( _SPIFFS_page = 0x100 ); PROVIDE ( _SPIFFS_block = 0x1000 ); INCLUDE "../ld/eagle.app.v6.common.ld" |
konfiguracja z pliku: eagle.flash.512k120.ld
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* Flash Split for 512K chips / / sketch 371KB / / spiffs 120KB / / eeprom 20KB */ MEMORY { dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 irom0_0_seg : org = 0x40201010, len = 0x69ff0 } PROVIDE ( _SPIFFS_start = 0x4025D000 ); PROVIDE ( _SPIFFS_end = 0x4027B000 ); PROVIDE ( _SPIFFS_page = 0x100 ); PROVIDE ( _SPIFFS_block = 0x1000 ); INCLUDE "../ld/eagle.app.v6.common.ld |
Tym sposobem utworzone zostaną kolejne profile umożliwiające skonfigurowanie przestrzeni pamięci w taki a nie inny sposób. Aby utworzyć prawidłowy skrypt niezbędne jest zdobycie wiedzy o organizacji pamięci oraz zastosowanego systemu plików, i wykonaniu potrzebnych obliczeń. Oczywiście ta część zadania przypadła Juniorowi. Docelowo konfiguracji powstało kilka, z uwagi, że doświadczalnie dobieraliśmy podział, który umożliwił prawidłowe wgranie i działanie projektu, z użyciem modułu ESP-11 (z układem 25Q40BT na pokładzie).
Bez nowego podziału dostępnej przestrzeni projekt albo nie mógł zostać wgrany do pamięci modułu, albo pliki serwera web nie mieściły się w przygotowanej przestrzeni. Dzięki nowej konfiguracji projekt uruchomiłem z powodzeniem! 😛 Profil konfiguracji spełniający wymagania aplikacji to między innym ten z 112kB SPIFFS.
Tak prezentuje się moduł ESP-11 podczas testów funkcjonalnych projektu ESP3D. 😀
Zaprezentuję jeszcze kilka widoków z funkcjonowania web panelu ESP3D.