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.

Jak sprawdzić czas trwania funkcji biblioteki CMSIS ?

jarecki1989 17 Lis 2013 13:36 828 5
  • #1 17 Lis 2013 13:36
    jarecki1989
    Poziom 24  

    Witam, mam za zadanie sprawdzić czas trwania oraz ilość pamięci zajmowanej przez funkcję biblioteki CMSIS. Konkretnie chodzi o funkcję transformacji Parka, którą podaję poniżej. Nie mam pojęcia jak to zrobić, kiedyś korzystałem z narzędzi dostępnych w Keil`u jednak nie pamiętam jak to się robiło. Proszę o pomoc i z góry dziękuję.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 5
  • Pomocny post
    #2 17 Lis 2013 13:45
    SeerKaza
    Poziom 20  

    kompilujesz i wchodzisz do listingu w listingu widzisz ile pamięci zajmuje oraz jakie asemblerowe rozkazy są wykonywane. W nocie rdzenia jest ilość cykli na wykonanie rozkazu (wiekszość powinna się równać 1 bo to RISC ale moga być też rozkazy na kilka taktów (ARM to niej est pełny RISC)) Jak masz ilość cykli to znając częstotliwość wiesz ile czasu będzie się wykonywać dana funkcja . Uwaga ten sposób jest zawodny gdy jest wiele skoków i funkcji warunkowych. Ale jak widzę u ciebie to proste operacje arytmetyczne. Więc da się policzyć.

    0
  • #3 17 Lis 2013 14:03
    tadzik85
    Poziom 38  

    Lepiej użyć timera.

    Liczenie da ci jedynie wynik przybliżony.

    0
  • #4 17 Lis 2013 14:41
    jarecki1989
    Poziom 24  

    Po kompilacji otrzymałem:

    Program Size: Code=1284 RO-data=224 RW-data=4 ZI-data=4196

    A, np. dla linijki:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    wyszło 14 rozkazów MOVS - 14 cykli, częstotliwość 10Mhz czyli ta linijka zajmie mi ok 140ns ? Dobrze rozumie ?

    0
  • Pomocny post
    #5 17 Lis 2013 14:47
    SeerKaza
    Poziom 20  

    10MHz to 10 rozkazów na us czyli jeden rozkaz 100n więc całoścć1,4us

    0
  • #6 17 Lis 2013 15:53
    jarecki1989
    Poziom 24  

    No tak ... mój błąd. Jeszcze jedno pytanie, w Keilu jest coś takiego jak Performance Analyzer podczas debugowania włączam go i jest widoczna moja funkcja jednak wszędzie wyświetla się 0%. Co trzeba jeszcze ustawić żeby to zadziałało ?

    0