mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM7 und Cortex-M3. Wie kann ich die Zeit messen, die für eine Funktion gebraucht wird


Autor: Chris __ (jetronic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich möchte gerne die Laufzeit einer von mir definierten Funktion wissen.
Das ganze möchte ich unter C mit der IAR Workbench for ARM IDE 
realisieren.

Es soll in etwa so aussehen:
.
.
.
//Timer starten

meine_definierte_Funktion();

//Timer stoppen

//Ausgabe der Laufzeit
.
.
.

Warum das ganze, ich möchte den gleichen Code auf einem ARM7 und einem 
Cortex-M3 ausführen. Dann die beiden Laufzeiten vergleichen, und so auch 
die Performance schließen.

Für Vorschläge bzw. Anregungen wäre ich dankebar!


Danke für die Mühe,
Chris

Autor: thorstendb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Installier dir die Demo von Keil µVision.

Lass das ganze im Simulator laufen und mach Performance Analysis 
(integriert in der GUI).

So ists am einfachsten.


VG,
/th.

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Variante:

IO-Pin setzen

Funktion aufrufen

IO-Pin rücksetzen


..da kann man schön mit dem Oszi messen.

Autor: Chris __ (jetronic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Vorschlag von "Baster" finde ich super,
das per GUI finde ich zu undurchsichtig, bzw. ich würde dann gern wissen 
wie genau das funktioniert.

Da ist die Idee mit dem IO-Pin echt toll.


Falls es noch weiter Ideen gibt, bitte posten.

Danke euch beiden!

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Lass einen Timer durchlaufen, und vergleiche den Zählerstand vor und 
nach dem Funktionsaufruf. Ich verwende dafür ein paar Makros, siehe 
Anhang. Das sieht dann zum Beispiel so aus:
PROFILE_START("meine_definierte_Funktion");
meine_definierte_Funktion();
PROFILE_END();

Ausgabe:
meine_definierte_Funktion: 22 ms

Autor: Jan D. (nbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Cortex-M3 kannst du dir über den System Timer (SysTick) die genaue 
Anzahl der benötigten Takte ausgeben lassen.

Hier mal meine Funktionen vom STM32
/*!
 * \fn      SysTick_Start(void)
 * \brief   Startet die Taktzählung
 ******************************************************************************/
void SysTick_Start(void)
{
  /* Enable the SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Enable);
}

/*!
 * \fn      SysTick_Stop(void)
 * \return  SysTicks Anzahl der gezählten Takte
 * \brief   Stopt die Taktzählung, gibt das Ergebnis zurück und setzt den 
 *          Zähler zurück
 ******************************************************************************/
u32 SysTick_Stop(void)
{ 
  u32 SysTicks;
  
  /* Beenden der Taktzälung */
  SysTick_CounterCmd(SysTick_Counter_Disable);
  /* Auslesen der benötigten Takte */
  SysTicks = 0xFFFFFF - SysTick_GetCounter();
  /* Clear the SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Clear);
  
  return SysTicks;
}

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris __ schrieb:
> Falls es noch weiter Ideen gibt, bitte posten.

Beim Cortex-M3 gibt's auch ein cycle count Register.

Gruß
Marcus

Autor: Chris __ (jetronic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen vielen Danke alle zusammen!

Da habe ich ja jetzt viel zum testen,
ein super Forum ist das einfach!!

Gruß
Chris

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.