eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaC++ ośla łączkaRe: C++ ośla łączka
  • Data: 2023-02-16 15:37:23
    Temat: Re: C++ ośla łączka
    Od: "J.F" <j...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Thu, 16 Feb 2023 13:20:42 +0100, Piotr Gałka wrote:
    > A teraz pytanie brata na które nie znamy odpowiedzi.
    >
    > Ogólnie to jest pierwsze podejście do procesorów ARM (nie wiem z którym
    > w tej chwili walczy (Silabs EFM32PG22..., EFM32PG23..., a może EFM32TG11..).
    > Zanim użyje procesor po raz pierwszy musi opanować podstawowe działania
    > no i jest właśnie na tym etapie.
    >
    > On by potrzebował sizeof(funkcja).

    I to ma zwrocic rozmiar kodu funkcji, czy rozmiar typu zwracanego
    przez funkcję?

    > Ale jak próbuje to zrobić to dostaje 1.
    > Zasugerowałem, że może jak wstawi etykietę (przypomnieliśmy sobie, że
    > chyba w C coś takiego jest) na nawiasie zamykającym funkcję to uda się
    > policzyć różnicę między jej adresem a adresem początku funkcji.
    > Właśnie mi krzyknął (jego pokój jest piętro niżej), że z zewnątrz
    > funkcji nie ma dostępu do tej etykiety.

    Nie liczylbym na to, ze to zadziała poprawnie.

    Ale jak chcecie miec klopoty ... dodajcie do funkcji kolejny argument,
    ktory przy wywolaniu zwroci róznice miedzy etykietami.
    Albo gdzies zapamieta, bo przeciez typ funkcji moze byc inny.

    > Napiszę do czego mu to potrzebne bo czasem może rozwiązanie głównego
    > problemu robi się inaczej niż on kombinuje.
    >
    > Wczoraj wieczorem wspólnie tłumaczyliśmy dwa akapity datasheet, czy
    > manuala (nie wiem - on mi po prostu podświetlił akapit na ekranie i
    > chodziło o to jak to rozumiemy).
    >
    > Tam było, że jak się coś robi z programowaniem flasha z wnętrza programu
    > to ogólnie nie ma gwarancji, że wszystko się uda. I to zdanie było
    > ogólne - czyli nawet jak ruszasz inną stronę niż jesteś to może coś nie
    > zadziałać. Nie napisali co dokładnie, ale skoro może coś się nie udać to
    > my tego nie chcemy. Napisali, żeby przekopiować odpowiednią funkcję do
    > RAMu, wywołać ją i z niej uruchomić proces kasowania, czy programowania
    > flasha.

    Kopiowanie pod inny adres wymaga relokowalnego kodu - czesto taki
    jest, ale warto by sie upewnic.

    > Już opanował wywoływanie funkcji po jej skopiowaniu do RAMu.
    > Z adresem początku sobie radzi, choć mówi, że wskaźnik na funkcję jest
    > zawsze większy o 1 od prawdziwego adresu i ustalając fragment do
    > kopiowania on musi tę jedynkę odejmować.

    Ciekawe, bardzo ciekawe.

    A niech wywola gdzies funkcje ze wskaznika, i zobaczy jak to sie
    skompiluje - tez bedzie cofnięcie o bajt?
    Chyba, ze przed punktem startowym funkcji jest cos waznego zapisane.

    > Wszystko już działa, tylko, że na razie rozmiar funkcji bierze z sufitu
    > na zapas.
    > No i jedyne co brakuje do odhaczenia kolejnej funkcjonalności to
    > ustalenie w jednej funkcji jaki jest sizeof drugiej funkcji.

    To chyba nie ma.

    Napisalbym to w assemblerze, zeby wiadomo bylo, ze nic sie nie sp*,
    lub postaral sie skorzystac z jakiejs dynamicznie ladowanej biblioteki
    lub pozostal przy zapasie :-)

    > Może wiesz (lub ktoś inny) jak to się robi.

    https://developer.arm.com/documentation/ka003803/lat
    est

    cos takiego?

    :-(

    J.

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: