Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32F030 - emulacja EEPROM

matti0010 10 Kwi 2017 11:38 1884 34
  • #31 10 Kwi 2017 11:38
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Świetna edukacja. Napisz od razu odpowiedź na pytanie "czemu we flash zapisuje się tylko >to jest test zapisywania w pamięci flash<, a nie cały string >to jest test zapisywania w pamięci flash 1234567890<?".

  • #32 10 Kwi 2017 12:57
    Chris_W
    Poziom 36  

    Dlatego że wyciąłem z jakiś moich przykładów testowych, nie dopieszczałem przed wydrukowaniem ;)

  • #33 18 Kwi 2017 20:40
    matti0010
    Poziom 11  

    Witajcie ponownie :)

    Wybaczcie, że dopiero teraz odpisuję. Ogólnie "odpaliłem" wreszcie te emulację EEPROMa w FLASH. Działa, ale mam jedno pytanie, wirtualny adres zmiennych, czy muszę jakoś uważać na to co tam wpiszę? Chodzi mi o tę linijkę kodu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    To pytanie dedykuję głównie dla @rb401, lecz jak ktoś inny może udzielić mi odpowiedzi to też będę wdzięczny :) Standardowo kod z main'a:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pewnie jeszcze się odezwę, bo chcę spróbować zrobić to z wykorzystaniem rejestrów a nie gotowych funkcji, dopiero wtedy to tak naprawdę zrozumie. Niemniej jednak bardzo mi pomogliście licznymi przykładami więc mam na czym bazować i się wzorować :)

  • #34 19 Kwi 2017 01:27
    rb401
    Poziom 29  

    matti0010 napisał:
    Działa, ale mam jedno pytanie, wirtualny adres zmiennych, czy muszę jakoś uważać na to co tam wpiszę?


    Wykluczone jest tylko użycie liczby 0xFFFF. A po za tym mogą być to dowolne wartości liczbowe (0x0000..0xfffe), byle by nie powtarzające się (u Ciebie się powtarzają).
    To wstępne zdefiniowanie używanych adresów wirtualnych jest potrzebne dla algorytmu w momencie kiedy przepisuje na nową stronę wartości zmiennych. By nie musieć szukać wszystkich możliwych adresów, bo to by niepotrzebnie długo trwało.
    Ale to że akurat robione jest to za pomocą tablicy zajmującej pamięć to pomysł programistów z STM.
    Kiedyś nawet przerabiałem ten algorytm, tak by zupełnie wywalić tą tablicę a adresy wirtualne były po prostu kolejnymi liczbami od 0 do NB_OF_VAR-1. Ale jeśli to nie przeszkadza i nie ma jakiegoś szczególnego przymusu na oszczędność pamięci, to rozwiązanie z tablicą jest do przyjęcia.

    matti0010 napisał:
    chcę spróbować zrobić to z wykorzystaniem rejestrów a nie gotowych funkcji, dopiero wtedy to tak naprawdę zrozumie.


    Równie dobrze możesz wejść w użyte funkcje HAL i zobaczyć jak on robi to "na rejestrach". Moim zdaniem takie "spacery" po źródłach HAL w konfrontacji z własną wiedzą o rejestrach są bardzo pożyteczne. Bo pozwalają widzieć HAL nie jako czarną skrzynkę, która nie wiadomo co robi, ale coś użytkowego, co ułatwia pracę, ale i też w razie problemów daje się sprawdzić i ewentualnie uzupełnić, podeprzeć swoim kodem, przy pełnej świadomości tego co się faktycznie wykonuje.

  • #35 19 Kwi 2017 08:26
    matti0010
    Poziom 11  

    rb401 napisał:

    matti0010 napisał:
    chcę spróbować zrobić to z wykorzystaniem rejestrów a nie gotowych funkcji, dopiero wtedy to tak naprawdę zrozumie.


    Równie dobrze możesz wejść w użyte funkcje HAL i zobaczyć jak on robi to "na rejestrach". Moim zdaniem takie "spacery" po źródłach HAL w konfrontacji z własną wiedzą o rejestrach są bardzo pożyteczne. Bo pozwalają widzieć HAL nie jako czarną skrzynkę, która nie wiadomo co robi, ale coś użytkowego, co ułatwia pracę, ale i też w razie problemów daje się sprawdzić i ewentualnie uzupełnić, podeprzeć swoim kodem, przy pełnej świadomości tego co się faktycznie wykonuje.


    Dokładnie takie mam podejście. Nie lubią korzystać z czegoś w sposób bezrozumny. Nieraz już modyfikowałem HALa by coś zmienić. Tylko czasem ST zaciemnia w tych bibliotekach niektóre rzeczy (np. trudno potem dojść do tego gdzie szukać jakiego rejestru, wiadomo jak to jest rozwalone po RM).

    Teraz chyba już jako tako rozumie o co chodzi. Tamta linia kodu była ostatnią, którą nie do końca rozumiałem. Dzięki wielkie :)

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME