-
1. Data: 2018-10-19 18:22:48
Temat: ESP8266 - rozmiar flasha
Od: Atlantis <m...@w...pl>
Pracuję właśnie nad pewnym projektem, który nie wymaga zbyt potężnego
MCU ani dużej ilości linii IO. Tak naprawdę chodzi tylko o komunikację z
kilkoma układami I2C, machanie paroma liniami, generowanie jednego
sygnału PWM oraz czytanie jednego wejścia analogowego.
Pomyślałem sobie, że spokojnie mogę to załatwić za pomocą ESP8266.
Ponieważ przy okazji chciałbym mieć panel WWW, przez który mogę sobie
ten układ skonfigurować, wziąłem sobie za podstawę skopiowany kiedyś
GitHuba projekt esphttpd z moimi własnymi modyfikacjami i gotową stroną
konfiguracyjną. Potem zacząłem dodawać biblioteki niezbędne z punktu
widzenia mojej funkcjonalności.
Wszystko kompilowało się, do czasu. W pewnym momencie dodałem o jeden
plik za dużo i linker zaczął sypać błędami. Zacząłem eksperymentować,
zakomentowując (na razie) zbędne funkcje. Okazało się, że w pewnym
momencie projektów znów zaczyna się kompilować.
Czyli brak pamięci flash...
Zajrzałem do Makefile. Znajduje się tam następujące ustawienie:
#SPI flash size, in K
ESP_SPI_FLASH_SIZE_K=4096
Próbowałem zwiększyć tę wartość, ale nic to nie dało.
Stąd kilka pytań:
1) Jaki największy flash dostanę w module z ESP8266?
2) Co zmienić w projekcie, żeby prawidłowo się kompilował pod taki
większy model?
W tej chwili, jeśli uda się skompilować projekt, powstają dwa pliki:
0x00000.bin (36,9 kB) oraz 0x40000.bin (223,6 kB).
Ewentualnie, istnieje jakaś łatwa do ogarnięcia alternatywa?
-
2. Data: 2018-10-19 18:38:24
Temat: Re: ESP8266 - rozmiar flasha
Od: s...@g...com
W dniu piątek, 19 października 2018 11:23:13 UTC-5 użytkownik Atlantis napisał:
> Pracuję właśnie nad pewnym projektem, który nie wymaga zbyt potężnego
> MCU ani dużej ilości linii IO. Tak naprawdę chodzi tylko o komunikację z
> kilkoma układami I2C, machanie paroma liniami, generowanie jednego
> sygnału PWM oraz czytanie jednego wejścia analogowego.
>
> Pomyślałem sobie, że spokojnie mogę to załatwić za pomocą ESP8266.
> Ponieważ przy okazji chciałbym mieć panel WWW, przez który mogę sobie
> ten układ skonfigurować, wziąłem sobie za podstawę skopiowany kiedyś
> GitHuba projekt esphttpd z moimi własnymi modyfikacjami i gotową stroną
> konfiguracyjną. Potem zacząłem dodawać biblioteki niezbędne z punktu
> widzenia mojej funkcjonalności.
>
> Wszystko kompilowało się, do czasu. W pewnym momencie dodałem o jeden
> plik za dużo i linker zaczął sypać błędami. Zacząłem eksperymentować,
> zakomentowując (na razie) zbędne funkcje. Okazało się, że w pewnym
> momencie projektów znów zaczyna się kompilować.
>
> Czyli brak pamięci flash...
>
> Zajrzałem do Makefile. Znajduje się tam następujące ustawienie:
>
> #SPI flash size, in K
> ESP_SPI_FLASH_SIZE_K=4096
>
> Próbowałem zwiększyć tę wartość, ale nic to nie dało.
>
> Stąd kilka pytań:
>
> 1) Jaki największy flash dostanę w module z ESP8266?
> 2) Co zmienić w projekcie, żeby prawidłowo się kompilował pod taki
> większy model?
>
> W tej chwili, jeśli uda się skompilować projekt, powstają dwa pliki:
> 0x00000.bin (36,9 kB) oraz 0x40000.bin (223,6 kB).
>
> Ewentualnie, istnieje jakaś łatwa do ogarnięcia alternatywa?
Nie wiem czy tak daleko zaszedles:
https://github.com/espressif/esptool#esp8266-and-fla
sh-size
nie badalem tematu ale w zaleznosci od tego czy chcesz OTA updates mozesz
wygospodarowac calkiem sporo miejsca.
Przy czym nie jestem pewien czy juz tego nie zrobiles.
-
3. Data: 2018-10-19 19:19:25
Temat: Re: ESP8266 - rozmiar flasha
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Atlantis <m...@w...pl> napisał(a):
> Zajrzałem do Makefile. Znajduje się tam następujące ustawienie:
> #SPI flash size, in K
> ESP_SPI_FLASH_SIZE_K=4096
> Próbowałem zwiększyć tę wartość, ale nic to nie dało.
Błędy lecą z linkera więc sprawdź skrypt linkera. Może korzysta on ze
zmiennej z Makefile a może nie.
> Stąd kilka pytań:
> 1) Jaki największy flash dostanę w module z ESP8266?
Do 4 MB. Przykładowo ESP-WROOM-02 ma 2 MB. Najtańsze i najpopularniejsze
(chyba nadal) ESP-01 mają 0,5 MB.
https://en.wikipedia.org/wiki/ESP8266
> 2) Co zmienić w projekcie, żeby prawidłowo się kompilował pod taki
> większy model?
Skrypt linkera.
> Ewentualnie, istnieje jakaś łatwa do ogarnięcia alternatywa?
ESP32 :)
https://en.wikipedia.org/wiki/ESP32
Pytanie ile tego Flasha potrzebujesz. Nie napisałeś jaki masz moduł. ESP8266
to sam mikrokontroler.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
-
4. Data: 2018-10-19 20:19:39
Temat: Re: ESP8266 - rozmiar flasha
Od: Atlantis <m...@w...pl>
On 10/19/18 7:19 PM, Grzegorz Niemirowski wrote:
> Błędy lecą z linkera więc sprawdź skrypt linkera. Może korzysta on ze
> zmiennej z Makefile a może nie.
Skrypt linkera jest generowany w locie, przez Makefile:
https://github.com/Spritetm/esphttpd
Można tam ustawić różne tryby kompilacji: OTA, separate (wsad i
skompresowana strona www w osobno wgrywanych plikach) oraz combined
(wsad i www w jednym pliku).
Większość moich plików pochodzi z tego projektu - zmieniłem głównie
część webową i dodałem własne funkcje do obsługi cgi. Dzisiaj zacząłem
dodawać kolejne biblioteki i w pewnym momencie wszystko się wysypało,
zgodnie z opisem z pierwszej wiadomości.
> ESP32 :)
> https://en.wikipedia.org/wiki/ESP32
Jeszcze z nim nie eksperymentowałem. SDK jest podobne do tego z ESP8266?
Można dostać moduł ze złączem zewnętrznej anteny?
> Pytanie ile tego Flasha potrzebujesz. Nie napisałeś jaki masz moduł.
> ESP8266 to sam mikrokontroler.
Jeszcze nie podjąłem decyzji. Generalnie wymóg jest jeden: złącze
zewnętrznej anteny - urządzenie będzie zamknięte w metalowej obudowie.
-
5. Data: 2018-10-19 21:14:47
Temat: Re: ESP8266 - rozmiar flasha
Od: Jakub Rakus <s...@o...pl>
On 19.10.2018 20:19, Atlantis wrote:
> Jeszcze nie podjąłem decyzji. Generalnie wymóg jest jeden: złącze
> zewnętrznej anteny - urządzenie będzie zamknięte w metalowej obudowie.
ESP32-WROVER-I
--
Pozdrawiam
Jakub Rakus
-
6. Data: 2018-10-20 13:12:56
Temat: Re: ESP8266 - rozmiar flasha
Od: Marek <f...@f...com>
On Fri, 19 Oct 2018 19:19:25 +0200, "Grzegorz Niemirowski"
<g...@p...onet.pl> wrote:
> ESP32 :)
Tak btw. miło mnie zaskoczyło środowisko Arduino pod esp32, że
posiada zintegrowany freertos.
--
Marek
-
7. Data: 2018-10-22 11:16:31
Temat: Re: ESP8266 - rozmiar flasha
Od: Atlantis <m...@w...pl>
Przy próbie kompilacji dostaję następujące komunikaty. Może komuś coś to
mówi?
make[1]: Wejście do katalogu
'/home/marek/Dropbox/Programowanie/ESP8266/timelord_
nixie/libesphttpd'
CC espfs/espfs.c
CC espfs/heatshrink_decoder.c
CC core/httpd-nonos.c
CC core/httpd-freertos.c
CC core/sha1.c
CC core/httpdespfs.c
CC core/auth.c
CC core/base64.c
CC core/httpd.c
CC util/cgiwebsocket.c
CC util/cgiflash.c
CC util/captdns.c
CC util/cgiwifi.c
AR libesphttpd.a
make[2]: Wejście do katalogu
'/home/marek/Dropbox/Programowanie/ESP8266/timelord_
nixie/libesphttpd/espfs/mkespfsimage'
cc -I../../lib/heatshrink -I../../include -I.. -std=gnu99
-DESPFS_HEATSHRINK -c -o main.o main.c
cc -I../../lib/heatshrink -I../../include -I.. -std=gnu99
-DESPFS_HEATSHRINK -c -o heatshrink_encoder.o heatshrink_encoder.c
cc -o mkespfsimage main.o heatshrink_encoder.o
make[2]: Opuszczenie katalogu
'/home/marek/Dropbox/Programowanie/ESP8266/timelord_
nixie/libesphttpd/espfs/mkespfsimage'
ui/redirect.tpl (66%, heatshrink)
ui/form.css (73%, heatshrink)
ui/menu.css (65%, heatshrink)
ui/wifi/icons.png (100%, none)
ui/wifi/140medley.min.js (74%, heatshrink)
ui/wifi/wifi.tpl (54%, heatshrink)
ui/wifi/connecting.html (60%, heatshrink)
ui/wifi/wifi.css (93%, heatshrink)
ui/status.tpl (51%, heatshrink)
ui/menu.js (66%, heatshrink)
ui/config.tpl (37%, heatshrink)
ui/style.css (76%, heatshrink)
ui/index.tpl (78%, heatshrink)
ui/pass.tpl (45%, heatshrink)
make[1]: Opuszczenie katalogu
'/home/marek/Dropbox/Programowanie/ESP8266/timelord_
nixie/libesphttpd'
CC user/stdout.c
CC user/config.c
CC user/io.c
CC user/ds3231.c
CC user/user_main.c
CC user/cgi.c
CC user/i2c_master.c
CC user/rtc.c
CC user/pcf8574.c
AR build/httpd_app.a
LD build/httpd.user1.out
/opt/Espressif/ESP8266_SDK/lib/liblwip.a(sntp.o):(.b
ss+0x24): multiple
definition of `__tzyear'
/opt/Espressif/ESP8266_SDK/lib/libc.a(tzset_r.o):(.b
ss+0xc): first
defined here
/opt/Espressif/ESP8266_SDK/lib/liblwip.a(sntp.o):(.b
ss+0x28): multiple
definition of `__tznorth'
/opt/Espressif/ESP8266_SDK/lib/libc.a(tzset_r.o):(.d
ata+0x0): first
defined here
/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/
lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx
106-elf/bin/ld:
build/httpd.user1.out section `.text' will not fit in region `iram1_0_seg'
/opt/Espressif/ESP8266_SDK/lib/libc.a(mallocr.o):(.l
iteral+0x10):
undefined reference to `_sbrk_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(mallocr.o): In function `_malloc_r':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdlib/\build\tree\RC-2010.1_kuma\p4root\Xtensa
\Target-libs\newlib\newlib\libc\stdlib/mallocr.c:215
2:
undefined reference to `_sbrk_r'
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdlib/\build\tree\RC-2010.1_kuma\p4root\Xtensa
\Target-libs\newlib\newlib\libc\stdlib/mallocr.c:218
9:
undefined reference to `_sbrk_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(freer.o): In function
`_malloc_trim_r':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdlib/\build\tree\RC-2010.1_kuma\p4root\Xtensa
\Target-libs\newlib\newlib\libc\stdlib/mallocr.c:330
9:
undefined reference to `_sbrk_r'
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdlib/\build\tree\RC-2010.1_kuma\p4root\Xtensa
\Target-libs\newlib\newlib\libc\stdlib/mallocr.c:335
1:
undefined reference to `_sbrk_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(freer.o):C:\bu
ild\build\RC-2010.1\lxinnovation\delivery\lx106\1041
96\xbuild\Target-libs\newlib\xtensa-elf\newlib\libc\
stdlib/\build\tree\RC-2010.1_kuma\p4root\Xtensa\Targ
et-libs\newlib\newlib\libc\stdlib/mallocr.c:3327:
more undefined references to `_sbrk_r' follow
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o):(.lit
eral+0x0): undefined
reference to `_read_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o):(.lit
eral+0x4): undefined
reference to `_write_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o):(.lit
eral+0x8): undefined
reference to `_lseek_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o):(.lit
eral+0xc): undefined
reference to `_close_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o): In function `__sread':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdio/\build\tree\RC-2010.1_kuma\p4root\Xtensa\
Target-libs\newlib\newlib\libc\stdio/stdio.c:47:
undefined reference to `_read_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o): In function `__swrite':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdio/\build\tree\RC-2010.1_kuma\p4root\Xtensa\
Target-libs\newlib\newlib\libc\stdio/stdio.c:84:
undefined reference to `_write_r'
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdio/\build\tree\RC-2010.1_kuma\p4root\Xtensa\
Target-libs\newlib\newlib\libc\stdio/stdio.c:76:
undefined reference to `_lseek_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o): In function `__sseek':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdio/\build\tree\RC-2010.1_kuma\p4root\Xtensa\
Target-libs\newlib\newlib\libc\stdio/stdio.c:103:
undefined reference to `_lseek_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(stdio.o): In function `__sclose':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdio/\build\tree\RC-2010.1_kuma\p4root\Xtensa\
Target-libs\newlib\newlib\libc\stdio/stdio.c:120:
undefined reference to `_close_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(makebuf.o):(.l
iteral+0x4):
undefined reference to `_fstat_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(makebuf.o): In function `__smakebuf':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\stdio/\build\tree\RC-2010.1_kuma\p4root\Xtensa\
Target-libs\newlib\newlib\libc\stdio/makebuf.c:52:
undefined reference to `_fstat_r'
/opt/Espressif/ESP8266_SDK/lib/libc.a(sysfstat.o): In function `fstat':
C:\build\build\RC-2010.1\lxinnovation\delivery\lx106
\104196\xbuild\Target-libs\newlib\xtensa-elf\newlib\
libc\syscalls/\build\tree\RC-2010.1_kuma\p4root\Xten
sa\Target-libs\newlib\newlib\libc\syscalls/sysfstat.
c:12:
undefined reference to `_fstat_r'
collect2: error: ld returned 1 exit status
Makefile.ota:50: polecenia dla obiektu 'build/httpd.user1.out' nie
powiodły się
make: *** [build/httpd.user1.out] Błąd 1
-
8. Data: 2018-10-22 11:51:37
Temat: Re: ESP8266 - rozmiar flasha
Od: Zbych <a...@o...pl>
W dniu 22.10.2018 o 11:16, Atlantis pisze:
> Przy próbie kompilacji dostaję następujące komunikaty. Może komuś coś to
> mówi?
> /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/
lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx
106-elf/bin/ld:
> build/httpd.user1.out section `.text' will not fit in region `iram1_0_seg'
Nic nie robiłem na 8266, więc to tylko domysły, ale sekcja .text jest
upychana w iram1 (40100000h), który według wiki ma zaledwie 32kB i robi
normalnie za cache. Flash SPI powinien być mapowany od 40200000h, więc
wychodzi że używasz skryptów linkera skrojonych albo pod bootloader albo
inny mały program, który w całości mieści się w cache.
-
9. Data: 2018-10-22 12:07:57
Temat: Re: ESP8266 - rozmiar flasha
Od: Atlantis <m...@w...pl>
On 22.10.2018 11:51, Zbych wrote:
> Nic nie robiłem na 8266, więc to tylko domysły, ale sekcja .text jest
> upychana w iram1 (40100000h), który według wiki ma zaledwie 32kB i robi
> normalnie za cache. Flash SPI powinien być mapowany od 40200000h, więc
> wychodzi że używasz skryptów linkera skrojonych albo pod bootloader albo
> inny mały program, który w całości mieści się w cache.
To dosyć dziwne, bo:
1) Skrypt linkera jest generowany w locie, przez Makefile.
2) Makefile pochodzi z oryginalnego projektu esphttpd
(https://github.com/Spritetm/esphttpd). W ogóle cały mój projekt bazuje
na tym projekcie, z pewnymi modyfikacjami (inna strona www, dodane
funkcje do obsługi cgi, trochę własnego kodu).
3) Jeśli tylko zakomentować kilka (w tej chwili) niekrytycznych funkcji,
to kod się skompiluje, mając zdecydowanie więcej niż 32kB.
Skrypt linkera wygląda następująco:
MEMORY { irom0_0_seg : org = 0x40240000, len = 0xFFFFFFFFFFFFC000 }
-
10. Data: 2018-10-22 12:53:35
Temat: Re: ESP8266 - rozmiar flasha
Od: Zbych <a...@o...pl>
W dniu 22.10.2018 o 12:07, Atlantis pisze:
> 3) Jeśli tylko zakomentować kilka (w tej chwili) niekrytycznych funkcji,
> to kod się skompiluje, mając zdecydowanie więcej niż 32kB.
Pokaż jak wygląda mapa tak wygenrowanej binarki (objdump -h *.elf)