Goto page Previous 1, 2
Atlantis
Guest
Mon Oct 22, 2018 3:43 pm
On 10/22/18 4:00 PM, Zbych wrote:
Quote:
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.
Zbych
Guest
Mon Oct 22, 2018 4:54 pm
Atlantis wrote on 22.10.2018 17:43:
Quote:
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.
Atlantis
Guest
Wed Oct 24, 2018 7:43 am
On 22.10.2018 18:54, Zbych wrote:
Quote:
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?
Zbych
Guest
Wed Oct 24, 2018 9:39 am
W dniu 24.10.2018 o 09:43, Atlantis pisze:
Quote:
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.
Goto page Previous 1, 2