-
Data: 2018-10-31 14:20:09
Temat: Re: Alternatywa dla ESP8266/ESP32? Moduł EMW3165.
Od: "Grzegorz Niemirowski" <g...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Atlantis <m...@w...pl> napisał(a):
> Pierwsze pytanie, a raczej wątpliwość: czy stosowane przeze mnie
> biblioteki (przede wszystkim ta do serwera http) będą zgodne z
> alternatywnym SDK?
To alternatywne bazuje w dużym stopniu na oficjalnym więc ewentualne
przeportowanie nie powinno być trudne.
> Po drugie, czy ta modyfikacja dotyczy tylko kodu użytkownika? Bo z tego
> co widzę, to u mnie głównym źródłem problemu są biblioteki z SDK, które
> linker umieszcza w RAM-ie.
Dotyczy kodu użytkownika, bo brane są oryginalne skrypty linkera. Nie bałbym
się jednak tych skryptów edytować ani tym bardziej z ich względu zmieniać w
ogóle platformę :) Jako przykład wziąłem ten projekt:
https://github.com/QB4-dev/esp_nano_httpd_basic_exam
ple Po kompilacji
sprawdzam rozmiar sekcji:
.irom0.text 203076 1075908608
.text 25796 1074790400
Nie jest źle, większość poszła do Flasha. Jednak IRAM jest w większości
zapełniony i trzeba coś z tym zrobić. Komendą readelf sprawdzam co poszło do
IRAMu. Okazuje się, że mnóstwo znajdujących się tam funkcji pochodzi z
biblioteki libpp. Trzeba by ją przenieść do Flasha. Zaglądam do skryptu
linkera (eagle.app.v6.old.1024.app1.ld) i widzę, że są już tam linijki
przenoszące niektóre biblioteki do sekcji irom0.text. Dodałem więc
analogiczną linijkę dla libpp:
*libpp.a:(.literal.* .text.*)
Niestety nic to nie dało. Szybkie googlanie podpowiedziało, że trzeba
przenieść też sekcje bez kropki w środku nazwy. Dopisana linijka będzie więc
miała postać:
*libpp.a:(.literal.* .text .literal .text.*)
Rekompilacja i... sukces!
.irom0.text 218020 1075908608
.text 10628 1074790400
Zaoszczędzone 15 kB :) Google podpowiada, że mozna jeszcze przenieść libm.
Wtedy mamy:
.irom0.text 223188 1075908608
.text 3496 1074790400
Jeszcze lepiej, zużyte tylko nieco ponad 10% IRAMu a prawie wszystko mamy we
Flashu. Wystarczyło dopisać dwie linijki. I pewnie obejdzie sę bez zmiany
SDK. Być może właśnie na te modyfikacje skryptu linkera natrafiałeś.
A jeśli nie chcesz modyfikować skryptu linkera, to możesz zrobić z drugiej
strony: zmodyfikować bibliotekę zmieniając w niej nazwy sekcji. Mozna to
zrobić komendą objcopy:
xtensa-lx106-elf-objcopy --rename-section .text=.irom0.text --rename-section
.literal=.irom0.literal libpp.a
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Następne wpisy z tego wątku
- 31.10.18 15:15 Atlantis
- 31.10.18 16:02 Grzegorz Niemirowski
- 02.11.18 10:00 Atlantis
- 02.11.18 10:33 Grzegorz Niemirowski
- 02.11.18 10:51 Atlantis
- 05.11.18 00:29 Grzegorz Niemirowski
- 05.11.18 13:10 Atlantis
- 05.11.18 14:58 Grzegorz Niemirowski
- 07.11.18 22:18 Cezar
Najnowsze wątki z tej grupy
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
- wzmacniacz mocy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
Najnowsze wątki
- 2025-06-20 5w30 zamiast 0w30
- 2025-06-19 Klima i samodzielne uzupełnienie
- 2025-06-20 Upgrade z i7-6xxx
- 2025-06-19 Czy ołowiane perowsiki, drukowane na folii to był fake ?
- 2025-06-20 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-06-20 Gdynia => Sales Executive / KAM <=
- 2025-06-20 Wrocław => Senior Key Account Manager IT <=
- 2025-06-20 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-06-20 Warszawa => Fullstack .NET Developer <=
- 2025-06-20 Białystok => Software Engineer .Net <=
- 2025-06-20 Warszawa => Inżynier oprogramowania .Net <=
- 2025-06-20 Białystok => Kotlin Developer <=
- 2025-06-20 Gdynia => MLOps Engineer <=
- 2025-06-20 Warszawa => Strategic Account Manager <=
- 2025-06-20 Warszawa => IT Recruiter <=