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

Jak skonfigurować KEIL uVision 3 dla zmiennych w XRAM na AT89C51ED2?

dwitek 06 Gru 2008 20:18 1575 4
REKLAMA
  • #1 5825874
    dwitek
    Poziom 12  
    Posty: 92
    Ocena: 3
    Mam takie pytanie, z racji, że dodając kolejną zmienną do pisanego programu kompilator (KEIL uVision 3) odmówił kompilacji programu, doszedłem do wniosku że zmienne przekroczyły dostąpny standardowy RAM. W prcesorze tym jest 256B RAM'u oraz 1792B XRAM'u.

    Jak prawidło skonfigurować KEIL'a, aby umieszczał zmienne w tym RAM'ie.

    Standardowo miałem ustawione w opcjach:
    Jak skonfigurować KEIL uVision 3 dla zmiennych w XRAM na AT89C51ED2?

    i KEIL nie chciał się skompilować (a w zasadzie chyba zlinkować) po dołożeniu tylko jednej dodatkowej zmiennej)


    Dokonałem zmian:
    Jak skonfigurować KEIL uVision 3 dla zmiennych w XRAM na AT89C51ED2?

    i niby się wszystko kompiluje, wgrywa i działa, ale chyba nie do końca poprawnie. Poprzednia wersja programu, bez tej zmiennej działał idealnie, po dołożeniu tylko 1 zmiennej, żadnych zmian w programiu, program niby działa, ale albo nie działa mi jakiś klawisz, ale bez powodu załącza się któreś wyjście. Wcześniej wszystko było OK.

    Więc przypuszczam że zmienne są niepoprawnie zpisywane/odczytywane.
  • REKLAMA
  • #2 5826094
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Z tego co pamiętam, to Keil ma niezły manual, więc dlaczego do niego nie zaglądasz :?:
    Poczytaj o xdata.

    Piotrek
  • REKLAMA
  • #3 5826157
    dwitek
    Poziom 12  
    Posty: 92
    Ocena: 3
    XDATA przy deklaracji zmiennych kiedyś używałem, ale jak korzystałem przy procku 8031 z dodatkowego zewnętrznego RAM'u, ale tutaj wydaje mi się, że być może korzysta się z XDATA, ale na pewno trzeba odpowiednio skonfigurować ustawienia w opcjach Target'u, bo to okienko ma róźny wygląd w zależności od wybranego procka
  • REKLAMA
  • #4 5826206
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    Jeśli korzystasz z modelu LARGE, to domyślnie wszystkie zmienne (globalne, lokalne, parametry funkcji) są alokowane w XRAMie.

    Sprawdź, czy Twój procesor nie potrzebuje dodatkowego kodu inicjalizującego - zresztą Keil pyta o to przy zakładaniu projektu.

    Pozdrawiam,
    Dr.Vee
  • #5 5826210
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Musisz w opcjach projektu "zaptaszkować" xdata, by kompilator wygenerował odpowiedni "startup", a w samym kodzie, zmienne deklarujesz jako xdata.
    Jeśli pominiesz jedną z tych opcji, to program poleci w maliny.

    Piotrek
REKLAMA