logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C GCC] Jak zachować nieużywane zmienne w pamięci flash procesora ARM?

TvWidget 06 Lis 2017 11:48 717 4
REKLAMA
  • #1 16804658
    TvWidget
    Poziom 39  
    Posty: 4410
    Pomógł: 472
    Ocena: 697
    Potrzebuję umieścić w pamięci flash procesora ARM kilka wartości. Utworzyłem więc odpowiednią sekcję i zadeklarowałem w niej potrzebne zmienne. Jeśli jednak nie są one jawnie używane przez program to kompilator je usuwa. Czy można się jakoś przed tym zabezpieczyć ?
  • REKLAMA
  • #2 16804690
    czareqpl
    Poziom 33  
    Posty: 1955
    Pomógł: 196
    Ocena: 580
    Możesz sobie napisać taką funkcję proforma:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W ten sposób zmienna będzie jakkolwiek używana, więc nie ulegnie redukcji.

    Możesz też użyć dyrektywy volatile.
  • REKLAMA
  • #3 16804736
    TvWidget
    Poziom 39  
    Posty: 4410
    Pomógł: 472
    Ocena: 697
    Volatile wypróbowałem już wcześniej. Nic to nie zmienia.
    Kompilator jest cwany i sprawdza czy wartość ze zmiennej rzeczywiście wpływa na działanie programu. Jeśli tak nie będzie to ją usunie.
  • REKLAMA
  • Pomocny post
    #4 16804743
    rajszym
    Poziom 21  
    Posty: 272
    Pomógł: 48
    Ocena: 18
    TvWidget napisał:
    Czy można się jakoś przed tym zabezpieczyć ?

    W skrypcie linkera należy włączać sekcję poprzez zapis:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    albo użyć atrybutu 'used':
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 16804783
    TvWidget
    Poziom 39  
    Posty: 4410
    Pomógł: 472
    Ocena: 697
    rajszym napisał:
    użyć atrybutu 'used':
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zadziałało !
    Dziękuję.
REKLAMA