Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

LPC1225/321 - Zapis danych do wewnętrznej pamięci flash mikrokontrolera.

docencior 22 Mar 2015 14:23 1104 4
  • #1
    docencior
    Level 10  
    Witam

    Chciałbym mieć możliwość zapisywania tablicy z 10 elementami do pamięci flash mikrokontrolera LPC1225/321. uC zawiera 80kB pamięci flash. Używam LPCxpresso.

    Doczytałem, w UM, że można wykorzystać IAP do operacji czyszczenia i zapisywania danych do wewnętrznej pamięci (przypuszczam, że można też odczytywać te dane...).

    Znalazłem więc następującą bibliotekę:

    Code: c
    Log in, to see the code


    Code: c
    Log in, to see the code


    Średnio póki co to rozumiem. Powyższe pliki są wzięte z LPC11xx ale porównałem IAP commands i adres ROMu gdzie są zapisane z UM od LPC1225 i wszystko wydaje się być identyczne.

    Teraz proszę o pomoc bo mogę pisać głupoty. Skoro bootloader używa pamięci flash od adresu 0 i idzie w górę to ja bym chciał użyć ostatnich 256 bajtów do przechowywania swojej tablicy.

    Jak więc stworzyć obszar w pamięci flash, który będzie używany do własnych celów?
  • Helpful post
    #2
    BlueDraco
    MCUs specialist
    Nie musisz go wcale "stwarzać". Wiedząc, że Twój kod zajumje początek Flash, możesz swobodnie używać adresów z końca pamięci.
    Wygodnie będzie zdefiniować adres, od którego zaczyna się Twoja pamięć danych jako stałą:

    #define MY_FLASH_ADDRESS 0x8000

    a następnie zgrabnie ustalić go jako adres struktury danych, np.

    #define MY_DATA (*((struct my_data_ *)MY_FLASH_ADDRESS)))

    i wtedy możesz odwoływać się do danych w pamięci Flash jako do pól struktury:

    x = MY_DATA.pole_a;

    To samo można też osiągnąć poprzez skrypt linkera i zastosowanie #pragma section
  • #5
    docencior
    Level 10  
    Dziekuję, wszystko jasne i wszystko działa.