eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAlternatywa dla ESP8266/ESP32? Moduł EMW3165. › Re: Alternatywa dla ESP8266/ESP32? Moduł EMW3165.
  • 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/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: