eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › ESP8266 - rozmiar flasha
Ilość wypowiedzi w tym wątku: 19

  • 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)


strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: