Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATxmega128 - Symulacja dzialania programu - jak wlaczyc eeprom?

JohnCTN 18 Maj 2015 19:26 723 7
  • #1 18 Maj 2015 19:26
    JohnCTN
    Poziom 17  

    Witam.

    Mam banalny problem podczas symulowania programu zauważyłem, ze nie mam zawartości pamięci wewn. eeprom. Jak włączyć pamięć eeprom by była widoczna podczas symulacji programu? Pytam bo w moim programie mapuje eeprom do ramu a tam mam same FF zamiast prawdziwa zawartość eepromu.

    0 7
  • #2 18 Maj 2015 19:36
    tmf
    Moderator Mikrokontrolery Projektowanie

    A w jakim programie? W AVR Studio trzeba było wgrać odpowiedni plik, w Atmel Studio 0xFF dla EEPROM jest ok, bo to domyślna wartość tej pamięci. Jeśli jednak w EEPROM masz jakieś dane to powinieneś je widzieć. Jeśli masz 0xFF to znaczy, że nie inicjakizujesz EEPROM (nic w nim nie ma), ustawiłeś na podglądzie niewłaściwy adres/typ pamięci, jeśli oglądasz EEPROM w obszarze zmapowanym w przestrzeń SRAM to nie konfigurujesz odpowiednio kontrolera pamięci.

    0
  • #3 18 Maj 2015 19:47
    JohnCTN
    Poziom 17  

    Program Atmel studio 6.2.

    Podczas wgrania do układu zawartości flash i eeprom, wszystko jest OK.
    ale jak włączę debugowanie softwarowe, to w okienku "memory1" mogę sobie przełączać co chce widzieć i nie mam zawartości ani w eeprom, ani w mapped eeprom.

    chodzi mi o to abym mógł widzieć zawartość podczas emulowania softwarowego (symulacja działania kodu) i wtedy jak dojde do procedury mapowania eepromu w int ram 0x1000 to by symulacja dzialala prawidłowo, ale ze już w samym eeprom są same FF to w mapowanej RAM od 0x1000 tez są same FF

    0
  • #4 18 Maj 2015 19:54
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ok, ale dlaczego uważasz, że tam powinno być coś innego? Jak umieszczasz dane w EEPROM? Najlepiej pokaż fragment programu do symulacji.

    0
  • #5 18 Maj 2015 22:47
    JohnCTN
    Poziom 17  

    powinno być cos innego bo umieściłem tam tablice i jak programuje xmega128 to programuje tez dodatkowo wewnętrzny eeprom i wszystko działa.

    Zawartość eeproma wewnętrznego mam w pliku projekt.asm (jak kompiluje to mam plik "projekt.eep" , a zawartość eeproma mam zaczętą od dyrektywy ".ESEG" a poniżej etykiety i rozne ".db"

    więc jak kompiluje, to zawartość eeproma jest "odgórnie" ustalona ze wszystkimi danymi które znajduja się po ".ESEG" więc jak symuluje to powinno chyba coś być w "eeprom" a nie same 0xFF.


    Ogólnie mówiąc to moje pytanie powinno wyglądać tak:
    Jak dołączyć zawartość wewn. eeproma do symulacji? Może trzeba gdzieś zaznaczyć aby program dołączał plik projekt.eep podczas symulacji - jak tak to gdzie to zaznaczyć ?

    0
  • #6 19 Maj 2015 19:47
    JohnCTN
    Poziom 17  

    ATxmega128 - Symulacja dzialania programu - jak wlaczyc eeprom?


    tutaj na screnie widać o co mi chodzi :-)

    mam wyraźnie w kodzie "ESEG" podczas kompilacji wszystko ładnie się kompiluje i tworzy osobny plik dla eeproma (rozszerzenie .eep).

    Ale podczas symulacji, nie mam nic w eepromie co widać w okienku "memory"
    Wiec w takim wypadku symulacja się nie sprawdza, gdyż muszę odczytywać zawartość eeprom aby układ poprawnie się uruchomił a skoro nic nie ma to sprawdzanie działania programu jest bez sensu :-(

    0
  • #7 20 Maj 2015 19:28
    JohnCTN
    Poziom 17  

    Dzizes.....

    Nic nie piszecie, czy to więc oznacza, ze podczas symulacji nie ma możliwości bym mógł sprawdzić przebieg programu, który używa tablic zapisanych w pamięci wewnętrznej eeprom ???? masakra jakaś :-(

    0
  • #8 20 Maj 2015 21:29
    tmf
    Moderator Mikrokontrolery Projektowanie

    Chyba już nikt nie używa asemblera :) Jest to błąd AS i raczej nie ma co liczyć na jego naprawienie, bo nikt nie jest zainteresowany asemblerem (a przynajmniej zainteresowanie jest marginalne). Jest kilka obejść problemu:
    - przejście na asembler z gcc, który wygeneruje plik elf i AS sobie z tym poradzi i EEPROM będzie widoczny. Dodatkowy zysk jest taki, że korzystamy z make, linkera i mamy większe możliwości i lepszą kontrolę nad projektem, dodatkowo łatwo można mieszać asembler z innymi językami (C, C++ itd.).
    - użycie plików stymulacji i ładowanie EEPROM przy pomocy tych plików (dyrektywa $memload EEPROM).
    - jeśli to kilka bajtów to można je ręcznie wklepać do EEPROM po rozpoczęciu symulacji.
    Nie pytaj o szczegóły, sam musisz to rozkminić, bo jak pisałem na wstępie zainteresowanie czystym asemblerem (w tym moje, które skończyło się jakieś 10 lat temu) jest marginalne.

    0