eGospodarka.pl
eGospodarka.pl poleca

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

  • 11. Data: 2018-10-22 13:06:59
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Atlantis <m...@w...pl>

    On 22.10.2018 12:53, Zbych wrote:

    > Pokaż jak wygląda mapa tak wygenrowanej binarki (objdump -h *.elf)

    httpd.out: file format elf32-little

    Sections:
    Idx Name Size VMA LMA File off Algn
    0 .data 00000864 3ffe8000 3ffe8000 000000e0 2**4
    CONTENTS, ALLOC, LOAD, DATA
    1 .rodata 00001188 3ffe8870 3ffe8870 00000950 2**4
    CONTENTS, ALLOC, LOAD, READONLY, DATA
    2 .bss 000066c0 3ffe99f8 3ffe99f8 00001ad8 2**4
    ALLOC
    3 .irom0.text 00037448 40240000 40240000 00009120 2**4
    CONTENTS, ALLOC, LOAD, CODE
    4 .text 0000763c 40100000 40100000 00001ad8 2**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    5 .xtensa.info 00000038 00000000 00000000 00040568 2**0
    CONTENTS, READONLY
    6 .xt.prop 0002bdc4 00000000 00000000 000405a0 2**0
    CONTENTS, READONLY
    7 .xt.lit 000015e8 00000000 00000000 0006c364 2**0
    CONTENTS, READONLY
    8 .comment 00002050 00000000 00000000 0006d94c 2**0
    CONTENTS, READONLY
    9 .debug_frame 000011fc 00000000 00000000 0006f99c 2**2
    CONTENTS, READONLY, DEBUGGING
    10 .debug_info 0000f518 00000000 00000000 00070b98 2**0
    CONTENTS, READONLY, DEBUGGING
    11 .debug_abbrev 00002a70 00000000 00000000 000800b0 2**0
    CONTENTS, READONLY, DEBUGGING
    12 .debug_loc 000046ee 00000000 00000000 00082b20 2**0
    CONTENTS, READONLY, DEBUGGING
    13 .debug_aranges 00000678 00000000 00000000 00087210 2**3
    CONTENTS, READONLY, DEBUGGING
    14 .debug_ranges 000006f0 00000000 00000000 00087888 2**0
    CONTENTS, READONLY, DEBUGGING
    15 .debug_line 0000544c 00000000 00000000 00087f78 2**0
    CONTENTS, READONLY, DEBUGGING
    16 .debug_str 000021fb 00000000 00000000 0008d3c4 2**0
    CONTENTS, READONLY, DEBUGGING
    17 .debug_pubnames 0000011a 00000000 00000000 0008f5bf 2**0
    CONTENTS, READONLY, DEBUGGING


  • 12. Data: 2018-10-22 13:47:52
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Zbych <a...@o...pl>

    W dniu 22.10.2018 o 13:06, Atlantis pisze:
    > On 22.10.2018 12:53, Zbych wrote:
    >
    >> Pokaż jak wygląda mapa tak wygenrowanej binarki (objdump -h *.elf)
    >
    > httpd.out: file format elf32-little
    >
    > Sections:
    > Idx Name Size VMA LMA File off Algn
    > 3 .irom0.text 00037448 40240000 40240000 00009120 2**4
    > CONTENTS, ALLOC, LOAD, CODE
    > 4 .text 0000763c 40100000 40100000 00001ad8 2**2
    > CONTENTS, ALLOC, LOAD, READONLY, CODE

    No to teraz pytanie kiedy kod trafia do sekcji .irom0.text a kiedy do
    .text.
    Masz tam jakieś atrybuty przy funkcjach? __attribute__((section("blabla")))


  • 13. Data: 2018-10-22 14:30:10
    Temat: Re: ESP8266 - rozmiar flasha
    Od: "Grzegorz Niemirowski" <g...@p...onet.pl>

    Atlantis <m...@w...pl> napisał(a):
    > To dosyć dziwne, bo:
    > 1) Skrypt linkera jest generowany w locie, przez Makefile.

    Właśnie, takie coś byłoby dziwne :) Skąd ta teoria? Skrypt nie jest
    generowany, jest jedynie wybierany dynamicznie z mapy.
    Makefile.ota:LD_MAP_2:=512:eagle.app.v6.new.512.app2
    .ld
    1024:eagle.app.v6.new.1024.app2.ld 2048:eagle.app.v6.new.2048.ld
    4096:eagle.app.v6.new.2048.ld
    Makefile.ota:LD_SCRIPT_USR2 := $(call
    maplookup,$(ESP_SPI_FLASH_SIZE_K),$(LD_MAP_2))
    Skrypty linkera podchodzą z SDK. Który skrypt jest wybierany, możesz
    sprawdzić uruchamiając make z parametrem VERBOSE=1

    --
    Grzegorz Niemirowski
    https://www.grzegorz.net/


  • 14. Data: 2018-10-22 14:33:41
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Atlantis <m...@w...pl>

    On 22.10.2018 13:47, Zbych wrote:

    > No to teraz pytanie kiedy kod trafia do sekcji .irom0.text a kiedy do
    > .text.
    > Masz tam jakieś atrybuty przy funkcjach? __attribute__((section("blabla")))

    Standardowo przy swoich funkcjach daję ICACHE_FLASH_ATTR. Gdzieś w
    plikach nagłówkowych SDK jest to zdefiniowane jako
    __attribute__((section(".irom0.text."))).

    Z tego co pamiętam, powoduje to, że taki kod jest wykonywany (wolniej)
    bezpośrednio z flasha.

    Próbowałem usunąć ten argument z paru funkcji, ale nic to nie daje - kod
    dalej nie chce się kompilować.

    Jakiś pomysł? Co może być nie tak?


  • 15. Data: 2018-10-22 16:00:37
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Zbych <a...@o...pl>

    W dniu 22.10.2018 o 14:33, Atlantis pisze:
    > On 22.10.2018 13:47, Zbych wrote:
    >
    >> No to teraz pytanie kiedy kod trafia do sekcji .irom0.text a kiedy do
    >> .text.
    >> Masz tam jakieś atrybuty przy funkcjach? __attribute__((section("blabla")))
    >
    > Standardowo przy swoich funkcjach daję ICACHE_FLASH_ATTR. Gdzieś w
    > plikach nagłówkowych SDK jest to zdefiniowane jako
    > __attribute__((section(".irom0.text."))).
    >
    > Z tego co pamiętam, powoduje to, że taki kod jest wykonywany (wolniej)
    > bezpośrednio z flasha.
    >
    > Próbowałem usunąć ten argument z paru funkcji, ale nic to nie daje - kod
    > dalej nie chce się kompilować.

    Jak usuwasz ICACHE_FLASH_ATTR to przemieszczasz funkcję z irom0.text do
    .text, który ma tylko 32kB, więc tylko pogarszasz sytuację. Zrób
    dokładnie odwrotnie i dodaj do kilku funkcji ICACHE_FLASH_ATTR.




  • 16. Data: 2018-10-22 17:43:04
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Atlantis <m...@w...pl>

    On 10/22/18 4:00 PM, Zbych wrote:

    > Jak usuwasz ICACHE_FLASH_ATTR to przemieszczasz funkcję z irom0.text do
    > .text, który ma tylko 32kB, więc tylko pogarszasz sytuację. Zrób
    > dokładnie odwrotnie i dodaj do kilku funkcji ICACHE_FLASH_ATTR.

    Prawie wszędzie pododawałem ICACHE_FLASH_ATTR. W swoim kodzie miałem
    tylko kilka funkcji bez tego parametru (m.in. główną pętlę i kilka
    callbacków, które w przykładach były zrealizowane w ten sposób, więc
    zostawiłem). Nic się nie zmieniło. Zresztą funkcja która "przeważa" też
    jest ICACHE_FLASH_ATTR...

    Nie wiem jak biblioteka esphttpd, ale w moim kodzie prawie wszystko w
    tej chwili powinno trafiać do irom0.text.


  • 17. Data: 2018-10-22 18:54:18
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Zbych <a...@o...pl>

    Atlantis wrote on 22.10.2018 17:43:
    > On 10/22/18 4:00 PM, Zbych wrote:
    >
    >> Jak usuwasz ICACHE_FLASH_ATTR to przemieszczasz funkcję z irom0.text do
    >> .text, który ma tylko 32kB, więc tylko pogarszasz sytuację. Zrób
    >> dokładnie odwrotnie i dodaj do kilku funkcji ICACHE_FLASH_ATTR.
    >
    > Prawie wszędzie pododawałem ICACHE_FLASH_ATTR. W swoim kodzie miałem
    > tylko kilka funkcji bez tego parametru (m.in. główną pętlę i kilka
    > callbacków, które w przykładach były zrealizowane w ten sposób, więc
    > zostawiłem). Nic się nie zmieniło. Zresztą funkcja która "przeważa" też
    > jest ICACHE_FLASH_ATTR...
    >
    > Nie wiem jak biblioteka esphttpd, ale w moim kodzie prawie wszystko w
    > tej chwili powinno trafiać do irom0.text.

    Zawsze możesz sprawdzić czy funkcje trafiają do tego segmentu co trzeba
    albo porównując rozmiar poszczególnych segmentów, albo robiąc
    szczegółową mapę z nazwami funkcji.



  • 18. Data: 2018-10-24 09:43:34
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Atlantis <m...@w...pl>

    On 22.10.2018 18:54, Zbych wrote:

    > Zawsze możesz sprawdzić czy funkcje trafiają do tego segmentu co trzeba
    > albo porównując rozmiar poszczególnych segmentów, albo robiąc
    > szczegółową mapę z nazwami funkcji.

    W jaki sposób? ;)
    Czyli mam rozumieć, że źródło problemu nie leży w zbyt małej ilości
    flasha, ale raczej jest jakiś problem ze skryptem linkera?


  • 19. Data: 2018-10-24 11:39:04
    Temat: Re: ESP8266 - rozmiar flasha
    Od: Zbych <a...@o...pl>

    W dniu 24.10.2018 o 09:43, Atlantis pisze:
    > On 22.10.2018 18:54, Zbych wrote:
    >
    >> Zawsze możesz sprawdzić czy funkcje trafiają do tego segmentu co trzeba
    >> albo porównując rozmiar poszczególnych segmentów, albo robiąc
    >> szczegółową mapę z nazwami funkcji.
    >
    > W jaki sposób? ;)
    > Czyli mam rozumieć, że źródło problemu nie leży w zbyt małej ilości
    > flasha, ale raczej jest jakiś problem ze skryptem linkera?

    Problem polega na tym, że ktoś bezmyślnie przyjął położenie segmentu
    .text. Domyślnie funkcje powinny być w większym (i wolniejszym)
    segmencie a tylko wybrane funkcje powinny trafiać do tego szybszego (i
    mniejszego) segmentu. A według tego co piszesz jest dokładnie na odwrót.

    Możesz kazać linkerowi wyprodukować plik z mapą (-Wl,-Map=aaaaa.map) -
    powinny być tam widoczne wszystkie funkcje i segmenty, do których trafiły.

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: