www.mikrocontroller.net

Forum: Compiler & IDEs Laufzeiten von Routinen ermitteln


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine recht komplexe Routine, bei der ich die zu erwartende
reine Laufzeit abschätzen möchte. Eine Hardware, auf der ich die
Routine unter Praxisbedingungen ausmessen könnte, habe ich nicht.

Ist der avr-gcc in der Lage, mir diese Information automatisch zu
liefern, z.B. eine Aussage wie "1 Durchlauf dieser Routine benötigt
xyz Clock Cycles"?

Andererseits bin ich ja darauf angewiesen, durch den generierten
Assemblercode zu gehen und mir da für jede Assembleranweisung die
benötigten ClockCycles aufzuschreiben und später aufzuaddieren - dazu
folgende Frage:

Die mit dem WinAVR makefile-Template generierten Listings enthalten ja
hauptsächlich den Assemblercode, gibt es einen Compilerswitch, um auch
die Kommentare aus den C-Sourcen in das Listing reinzupacken? Ich habe
schon in das gcc-Manual geschaut (ich schwöre ;)), allerdings hat mir
die Aussage "...-Wa,option: Pass option as an option to the assembler.
If option contains commas, it is split into multiple options at the
commas. ..." nicht weitergeholfen, da nirgendwo beschrieben steht,
welche Schalter sich hinter 'options' verbergen können.

Ich hoffe, Ihr (Du, Jörg :) ) könnt mir helfen.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simuliere dein Programm einfach im AVR Studio. Dort kannst du die
Frequenz des Prozessors einstellen und hast eine Stoppuhr. Die kannst
du vor dem Aufruf der Funktion auf 0 zurücksetzen und siehst dann,
wieviel Zeit die Funktion benötigt hat.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Idee,

allerdings habe ich das AVR Sudio weder installiert, noch verfügbar -
ausserdem würde ich wahrscheinlich einen halben Tag brauchen, bis ich
es soweit bedienen kann ;)

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lad es dir einfach von hier runter (ist kostenlos):

http://www.atmel.com/dyn/products/tools_card.asp?t...

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gast:
avr-gcc erzeugt (u.a.) eine .lst-Datei. Dort findest Du Quelltext, asm
und hex beieinander.

Rick

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rick: in der .lst-Datei ist bei mir nur der asm enthalten -- kein
Quelltext und keine Kommentare aus dem Quelltext

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm. Unter winavr gehts nicht (grad probiert) und unter Linux (avr-gcc)
hab ich es erst gestern gesehen. Und dass, bei im Prinzip gleichem
makefile.

Ratlos.
Rick

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, es liegt an der Compilerversion und den Debuginformationen.
Wenn der avr-gcc mittels -gstabs (statt -g) gestartet wird, erscheint
der c-Code in der .lst-Datei. Ansonsten hilft evtl. auch die .lss-Datei
weiter.

Erleuchtet.
Rick

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst (mit -S statt -c) auch dem Compiler sagen, dass er
dir eine Assemblerdatei direkt erzeugt.

Wie viele Takte er für die Ausführung braucht, kann er natürlich
nicht ausrechnen, das hängt ja vom Code-Pfad ab.  Im Extremfall:
eine Endlosschleife braucht auch unendlich viele Takte. ;-)

Ansonsten: Zeiten messen.  Kann man mit einem Hardware-Timer auch
in realer Hardware machen.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Bri: ich habe das Tool nun installiert und stehe vor zwei Problemen

- wie komme ich an besagte die Stoppuhr?
- AVRStudio sagt mir, dass ich den ATmega32 nicht mit 16MHz sondern nur
mit max. 12MHz betreiben darf -- lt. Datenblatt sind 16MHz allerdings ok

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.