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

[Avr Studio][JTAG][C] pomiar czasu wykonywania algorytmu

rdyla 01 Lut 2010 16:39 3108 6
  • #1 7627128
    rdyla
    Poziom 12  
    Witam, mam problem tego typu, że nie wiem w jaki sposób zmierzyć czas wykonywania algorytmu (funkcji) przy użyciu JTAG'a w AvrStudio? w trybie debuggera programowego, wyswietla się funkcja 'Stop Watch', dzięki której możemy zmierzyć czas, jednak w trybie JTAG'a przy 'Stop Watch' nie jest NIC wyswietlane. Więc, pozostaje mi tylko opcja pomiaru instrukcji licznika programu? czy to nie jest dobry pomysl?? A jeśli to jest dobry pomysl to mogę zrobić to w ten sposób?:
    zakładając, że uK taktowany jest zegarem 8MHz to czas wykonywania 1 instrukcji wynosi 125ns, tylko czy wszystkie instrukcje wykonywane są w 1 takcie zegara? chyba nie...Proszę o poradę:)
  • #2 7627170
    _Robak_
    Poziom 33  
    Jak chcesz zmierzyć dokładnie czas wykonania funkcji to wykorzystaj timery, na początku funkcji je wyzeruj potem zatrzymaj i w odpowiednim momencie wyświetl wynik na ekranie po rsie albo na lcd:)
  • #3 7627517
    rdyla
    Poziom 12  
    Pomysł dobry, jednak konieczne jest wprowadzanie zmian w programie, a czy da się prościej przy użyciu funkcji w AvrStudio??
  • Pomocny post
    #4 7627544
    _Robak_
    Poziom 33  
    Jeśli nie masz w trybie debuggera tego fajowego zegarka to inaczej jak za pomocą licznika nie mam pomysłu. A za pomocą PC nie bardzo zmierzysz cokolwiek, przeczytaj sobie w ogóle do czego służy ;) Zmierz może sobie w trybie symulatora, jak nie chcesz się bawić w zmianę programu.
  • #5 7627671
    rdyla
    Poziom 12  
    Ok, dzięki za porady, pozostanę chyba przy debbugerze programowym do pomiaru czasu wykonywania fragmentów programu, ale pomysl z timerami tez nie jest zły:) Pozdro
  • Pomocny post
    #6 7628045
    tmf
    VIP Zasłużony dla elektroda
    Zauwaz, ze w trybie JTAG komputer nie ma jak dostac informacji o ilosci wykonanych instrukcji, procesor wykonuje je niezaleznie od komputera, inaczej niz w trybie emulacji, kiedy to komputer emuluje AVRa, wiec wie ile wykonal instrukcji. Program Counter to rejestr PC wskazujacy na kolejna instrukcje do wykonania, wiec ci nie pomoze. Pomysl z timerami jest chyba jedyny skuteczny i wcale nie musisz modyfikowac swojego programu. Timer odpalisz w trakcie sesji JTAG modyfikujac bezposrednio bity za niego odpowiadajace. Nie musisz takze zczytywac nic przed i za procedura - wystarczy, ze wstawisz breakpointy i zczytasz licznik timera na PC (najwygodniej jest wykorzystac 16-bitowy timer, co da ci max. 64k taktow i 2x tyle jesli wykorzystasz bit przeniesienia z timera).
  • #7 7628671
    rdyla
    Poziom 12  
    nie wpadłbym na ten patent:) Chyba przekonałeś mnie do timerów :) Dzięki
REKLAMA