eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaMCU - start programu z RAMRe: MCU - start programu z RAM
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
    e.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.or
    g!reader01.eternal-september.org!.POSTED!not-for-mail
    From: heby <h...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: MCU - start programu z RAM
    Date: Mon, 13 Feb 2023 11:49:15 +0100
    Organization: A noiseless patient Spider
    Lines: 31
    Message-ID: <tsd4jh$24ec1$1@dont-email.me>
    References: <0...@g...com>
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Injection-Date: Mon, 13 Feb 2023 10:49:21 -0000 (UTC)
    Injection-Info: reader01.eternal-september.org;
    posting-host="57f7d59c8e5b2eed543ea1086ff471c2";
    logging-data="2242945";
    mail-complaints-to="a...@e...org";
    posting-account="U2FsdGVkX1/3HBsZ7WuupIUT/l7gPVx7"
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
    Thunderbird/102.7.2
    Cancel-Lock: sha1:3wm0RxSP26bHrIwowjHczkS3A8g=
    Content-Language: en-US
    In-Reply-To: <0...@g...com>
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:778255
    [ ukryj nagłówki ]

    On 13/02/2023 11:29, Stachu Chebel wrote:
    > Jak to zrobić, żeby po włączeniu urządzenia program przekopiował się
    > z FLAH do RAM i następnie rozpoczął życie w RAM?

    Aby był uruchamialny z obu miejsc, wymaga to posiadania kodu który jest
    niezależny od lokalizacji (PIC). To nie jest domyslny tryb kompilacji,
    zerknij na flagę pic w gcc, modyfikuje ona kod do stanu, w którym skoki
    są wyłącznie względne.

    Druga sprawa: zazwyczaj nie chcesz całego programu - zazwyczaj chcesz
    kilka funkcji.

    Inny workaround to zmuszenie linkera do zlinkowania częsci programu w
    RAM i wydłubanie tej sekcji z pliku elf, a nastepnie potraktowanie jej
    jako zwykłej tablicy danych do skopiowania do RAM. Widziałem sztuczke,
    kiedy automatycznie kompilowało się do sekcji .data, wiec kopiowanie do
    RAM ogarniała inicjalizacja.

    Jeszcze inny, to niejakie gotowce, typu __RAM_FUNC.

    To jest ogólnie trudne zagadnienie z poziomu ogarniania linkera,
    kompilacji ręcznej, pisania makefiles, opcji w narzędziach itd. Trudno o
    ogólną odpowiedź, to są rzeczy specyficzne do kompilatora i narzędzi na
    około niego. Niewykluczone, że narzędzia, z których korzystasz, mają to
    ogarnięte w postaci prostych do użycia modyfikatorów funkcji, flaczy czy
    innych wynalazków.

    Tu masz kilka podpowiedzi:

    https://stackoverflow.com/questions/15137214/how-to-
    run-code-from-ram-on-arm-architecture

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: