Forum: Mikrocontroller und Digitale Elektronik AVR Studio 5 Simulatorgeschwindigkeit


von Stephan M. (stmz)


Lesenswert?

Hallo Zusammen,

weiß jemand zufällig, wie ich die Geschwindigkeit des Simulators in AVR 
Studio 5 anpassen kann? Standardmäßig läuft dieser nämlich nur mit 1 
MHz. In den Einstellungen habe ich bisher vergeblich gesucht.

Gruß
Stephan

von Stephan M. (stmz)


Lesenswert?

Ich glaub ich hab was gefunden. Der Wert "Frequency" lässt sich 
zumindest direkt in der Ansicht "Processor" editieren wenn der Simulator 
läuft.

//Nachtrag: Das hat aber irgendwie keine Auswirkung ...

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Das kann man nicht. Die Helden bei Atmel haben beim Wechsel von Studio 4 
auf Studio 5 die Nachteile von Studio 4 übernommen und die Vorteile 
sausen lassen.

von Stephan M. (stmz)


Lesenswert?

Hannes Jaeger schrieb:
> Das kann man nicht. Die Helden bei Atmel haben beim Wechsel von Studio 4
> auf Studio 5 die Nachteile von Studio 4 übernommen und die Vorteile
> sausen lassen.

danke für deine Antwort.
Das ist wirklich schade, dass diese Funktion nicht mehr unterstützt wird 
:(

von spess53 (Gast)


Lesenswert?

Hi

>//Nachtrag: Das hat aber irgendwie keine Auswirkung ...

Welche hast du erwartet?

MfG Spess

von Stephan M. (stmz)


Lesenswert?

spess53 schrieb:

>>//Nachtrag: Das hat aber irgendwie keine Auswirkung ...
>
> Welche hast du erwartet?

eine schnellere Codeausführung - zumindest nach einem Neustart des 
Simulators. Der Wert bleibt nämlich erhalten. Ich verstehe nicht, warum 
dieser Parameter überhaupt editierbar ist ...

Gruß
Stephan

von Karl H. (kbuchegg)


Lesenswert?

Stephan M. schrieb:
> spess53 schrieb:
>
>>>//Nachtrag: Das hat aber irgendwie keine Auswirkung ...
>>
>> Welche hast du erwartet?
>
> eine schnellere Codeausführung

da hast du aber irgendetwas gründlich missverstanden.
Wie schnell der Code simuliert wird, hängt hauptsächlich von der 
Geschwindigkeit deines PC ab. In der Simulation ist die Realzeit 
ziemlich uninteressant. Wichtig ist die Simulationszeit. Ob dein PC zur 
Simulation von 1 Mio µC-Takten 2 oder 3 Sekunden braucht, ist (abgesehen 
von der nervenden Warterei) sowas von egal.

> dieser Parameter überhaupt editierbar ist ...

Weil das Studio die verbrauchte Anzahl Prozessortakte in verbauchte Zeit 
umrechnen kann. Und DIESE Zahl ist es, die tatsächlich interessant ist, 
braucht man sie doch zb um zu entscheiden, wie lange (in Zeiteinheiten) 
eine ISR braucht. Und zwar in der Realität, nicht in der Simulation.

von Stephan M. (stmz)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Stephan M. schrieb:

> da hast du aber irgendetwas gründlich missverstanden.
> Wie schnell der Code simuliert wird, hängt hauptsächlich von der
> Geschwindigkeit deines PC ab.

bist du dir ganz sicher, dass das AVR-Studio die Simulation nicht 
künstlich verzögert, damit die Geschwindigkeit in etwa der des Atmegas 
entspricht?

Bei http://compilers.cs.ucla.edu/avrora/ kann ich schließlich auch 
angeben, ob ich eine Simulation in Echtzeit wünsche (dauert tatsächlich 
so lange wie auf dem realen Chip), oder ob die volle Rechenkapazität des 
Computers genutzt werden soll.

Was nun stimmt hängt ganz und allein von der Umsetzung des Simulators 
ab. Hast du hier denn nähere Informationen?

Gruß
Stephan

von Karl H. (kbuchegg)


Lesenswert?

Stephan M. schrieb:
> Karl Heinz Buchegger schrieb:
>> Stephan M. schrieb:
>
>> da hast du aber irgendetwas gründlich missverstanden.
>> Wie schnell der Code simuliert wird, hängt hauptsächlich von der
>> Geschwindigkeit deines PC ab.
>
> bist du dir ganz sicher, dass das AVR-Studio die Simulation nicht
> künstlich verzögert, damit die Geschwindigkeit in etwa der des Atmegas
> entspricht?

Die interessiert keinen.

Was mich aber interessiert: Wie lange braucht ein Programmstück - und 
zwar auf der realen Hardware.
Und damit der SImulator das ausrechnen kann, muss er die Taktfrequenz 
kennen.

von Karl H. (kbuchegg)


Lesenswert?

Edit: Wobei man allerdings tatsächlich zugeben muss, dass (zumindest im 
4-er) der Simulator schon arg langsam war.

von Stephan M. (stmz)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Die interessiert keinen.
>
> Was mich aber interessiert: Wie lange braucht ein Programmstück - und
> zwar auf der realen Hardware.
> Und damit der SImulator das ausrechnen kann, muss er die Taktfrequenz
> kennen.

ich sehe jetzt allerdings keinen zwingenden Widerspruch in dem, was ich 
anfangs geschrieben hab. Eine Zeitberechnung ist mit und ohne künstliche 
Verzögerung möglich, wenn der Simulator weiß, mit welcher Frequenz die 
spätere Hardware taktet. Ich finde es aber durchaus angenehm, bei einer 
Simulation allein an der Geschwindigkeit der Abarbeitung einen Eindruck 
zu bekommen, wie lange denn nun bestimmte Programmabschnitte laufen.

Wie gesagt, ich kenne das Verhalten so von einem anderen Simulator. Hier 
lässt sich eine "Realtime-Simulation" aktivieren. Finde ich ganz 
angenehm ...

Aber jetzt weiß ich ja, dass der AVR Studio Simulator hier anders 
arbeitet :) . Danke für eure Antworten!

Gruß
Stephan

von Karl H. (kbuchegg)


Lesenswert?

Du kannst ja mal bei Atmel anfragen, ob sie Interesse daran hätten, wenn 
du ihnen einen Simulator baust, der tatsächlich mit allen von Atmel 
gebauten µC, mit allen Hardware Spezialtäten zurecht kommt, der als 
Debugger den Rückweg vom Assembler Code in den C-Source Code findet UND 
auch noch in Echtzeit abläuft und über ein Set von konfigurierbaren 
simulierten Geräten verfügt, die du virtuell an die Portpins 
anschliessen kannst.
Ach: hab ich vergessen - der auch noch bei Neuerscheinungen einfach auf 
den neuen µC konfigurierbar ist.


Wie gesagt: Ich gestehe dir gerne zu, dass der Simulator in manchen 
Bereichen quälend langsam ist. Aber dazu hat man dann ja auch die reale 
Hardware um sein Programm laufen zu lassen.

von Wolfgang (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Was mich aber interessiert: Wie lange braucht ein Programmstück - und
> zwar auf der realen Hardware.
> Und damit der SImulator das ausrechnen kann, muss er die Taktfrequenz
> kennen.

Oder du mußt mit dem Dreisatz umgehen können, um auf die reale 
Ausführungszeit zu kommen ;-)

von Stephan M. (stmz)


Lesenswert?

Wolfgang schrieb:
> Karl Heinz Buchegger schrieb:
>> Was mich aber interessiert: Wie lange braucht ein Programmstück - und
>> zwar auf der realen Hardware.
>> Und damit der SImulator das ausrechnen kann, muss er die Taktfrequenz
>> kennen.
>
> Oder du mußt mit dem Dreisatz umgehen können, um auf die reale
> Ausführungszeit zu kommen ;-)

wobei ich auch damit nicht die Geschwindigkeit auf realer Hardware 
berechnen kann. Wenn der Simulator all die Besonderheiten der 
unterschiedlichen Atmel-Prozessoren gar nicht kennt, so wird er wohl nur 
von einem bestimmten Durchsatz an Instruktionen pro Sekunde ausgehen 
können ...

Ob der Simulator nun langsamer oder schneller läuft ändert weder was an 
den Auswertemöglichkeiten noch sonst was.

Trotzdem danke für den Tipp ;)

Aber nun weiß ich ja, dass er nicht so arbeitet wie ich es anfangs 
vermutet hatte.

Für reale Zeiteinschätzungen greift man am besten auf reale Hardware 
zurück.

Gruß
Stephan

von Karl H. (kbuchegg)


Lesenswert?

Stephan M. schrieb:
> Wolfgang schrieb:
>> Karl Heinz Buchegger schrieb:
>>> Was mich aber interessiert: Wie lange braucht ein Programmstück - und
>>> zwar auf der realen Hardware.
>>> Und damit der SImulator das ausrechnen kann, muss er die Taktfrequenz
>>> kennen.
>>
>> Oder du mußt mit dem Dreisatz umgehen können, um auf die reale
>> Ausführungszeit zu kommen ;-)
>
> wobei ich auch damit nicht die Geschwindigkeit auf realer Hardware
> berechnen kann.

Natrülich kannst du das.

> Wenn der Simulator all die Besonderheiten der
> unterschiedlichen Atmel-Prozessoren gar nicht kennt, so wird er wohl nur
> von einem bestimmten Durchsatz an Instruktionen pro Sekunde ausgehen
> können ...

Ah geh.
Der Simulator simuliert die komplette CPU. Inklusive aller Instruktionen 
und selbstverständlich weiß er wieviele CPU Takte welche Instruktion 
verbraucht.

> Für reale Zeiteinschätzungen greift man am besten auf reale Hardware
> zurück.

Oder man schaut auf die direkt darunter eingeblendete 'Stoppuhr'. Die 
kann man auch auf 0 zurückstellen und so zb direkt (in Millisekunden 
oder Mikrosekunden) ablesen, in welchen Zeitabständen ein Timerinterrupt 
kommt, oder wie lange es vom Beginn der ISR bis zum Ende dauert, oder 
....

von spess53 (Gast)


Lesenswert?

Hi

> Wenn der Simulator all die Besonderheiten der
>unterschiedlichen Atmel-Prozessoren gar nicht kennt, so wird er wohl nur
>von einem bestimmten Durchsatz an Instruktionen pro Sekunde ausgehen
>können ...

Unsinn. Der Simulator führt jeden Assemblerbefehl aus. Da die benötigten 
Takte eines Befehl bekannt sind stimmt auch die berechnete Zeit.

MfG Spess

von Stephan M. (stmz)


Lesenswert?

dann verstehe ich nicht, warum eine Echtzeitausführung derart 
problematisch sein soll, dass ich hier für Atmel einen Simulator 
schreiben soll ...

Wenn er die CPU-Zyklen für jeden Befehl kennt, dann liegen doch die 
nötigen Informationen vor. Von externer Hardware hat ja niemand was 
gesagt.

Aber nun gut, ich denke wir drehen uns im Kreis. Meine ursprüngliche 
Frage ist ja hinreichend beantwortet :)

von Mirko B. (mirkob)


Lesenswert?

Die Angabe der Taktfrequenz ist wie Karl Heinz Buchegger schon schrieb:
Einzig und allein für die Berechnung der abgelaufenen Zeit.

Die Stopuhr kann man beim Studio 4 von ms auf µs umstellen, sowie neu 
starten. (Studio 5 bin ich gerade beim einarbeiten: Habe ich erst seit 
gestern in der Begutachtung)

Diese Funktion ist ganz praktisch, wenn man z.B. wissen will, wie lange 
eine Berechnung bei Taktfrequenz x Mhz dauert... oder wenn man mal eine 
genaue 1ms-Warteschleife in Assembler aus"NOP"pen muss.

von Karl H. (kbuchegg)


Lesenswert?

Stephan M. schrieb:
> dann verstehe ich nicht, warum eine Echtzeitausführung derart
> problematisch sein soll, dass ich hier für Atmel einen Simulator
> schreiben soll ...

Niemand von uns weiß, wie dieser Simulator aufgebaut ist.
Aber eines kannst du dir abschminken:
Dass im Simulator irgendwelche Däumchen gedreht werden, damit er 
langsamer läuft.

> Wenn er die CPU-Zyklen für jeden Befehl kennt, dann liegen doch die
> nötigen Informationen vor.
Macht er doch.
Der Simulator zählt brav die Takte zusammen und weil er nett ist, 
rechnet er die Taktanzahl auch noch in eine Zeit um.

Was du haben willst ist ein Emulator und kein Simulator. Und das dürfte 
zb auf Windows um Millisekundenbereich etwas schwer werden :-)

von spess53 (Gast)


Lesenswert?

Hi

>Wenn er die CPU-Zyklen für jeden Befehl kennt, dann liegen doch die
>nötigen Informationen vor. Von externer Hardware hat ja niemand was
>gesagt.

Wer hat denn etwas von externer Hardware gesagt? AVRs haben eigene 
Hardware, wie Timer, serielle Schnittstellen, ADC usw., die auch 
simuliert werden wollen. Und das kostet die Zeit.

MfG Spess

von Wolfgang (Gast)


Lesenswert?

Stephan M. schrieb:
> Für reale Zeiteinschätzungen greift man am besten auf reale Hardware
> zurück.

Oder man verwendet AVR-Studio 4. Das hatte den Taktzähler, die 
Zeitanzeige und eine einstellbare CPU Frequenz.
Wie kommst du drauf, dass der Simulator nicht die CPU simuliert, sondern 
einen hypthetischen Durchschnittsprozessor? Dann könnte man sich das 
ganze Ding sparen, weil es schon irgendwie auf den realen Prozessor 
drauf an kommt.

von Karl H. (kbuchegg)


Lesenswert?

Wolfgang schrieb:
> Stephan M. schrieb:
>> Für reale Zeiteinschätzungen greift man am besten auf reale Hardware
>> zurück.
>
> Oder man verwendet AVR-Studio 4. Das hatte den Taktzähler, die
> Zeitanzeige und eine einstellbare CPU Frequenz.

Gibts die im 5-er nicht mehr?
(Ich verwende noch das 4-er)

von Stephan M. (stmz)


Lesenswert?

spess53 schrieb:

> Wer hat denn etwas von externer Hardware gesagt? AVRs haben eigene

Karl Heinz Buchegger schrieb:
> und über ein Set von konfigurierbaren
> simulierten Geräten verfügt, die du virtuell an die Portpins
> anschliessen kannst.

> Aber eines kannst du dir abschminken:

ok. Tut mir Leid, wenn ich die Begriffe Emulator und Simulator 
verwechselt haben sollte. Es wird nicht mehr vorkommen. Kein Grund sich 
wegen sowas zu streiten ...

von Karl H. (kbuchegg)


Lesenswert?

Stephan M. schrieb:
> spess53 schrieb:
>
>> Wer hat denn etwas von externer Hardware gesagt? AVRs haben eigene
>
> Karl Heinz Buchegger schrieb:
>> und über ein Set von konfigurierbaren
>> simulierten Geräten verfügt, die du virtuell an die Portpins
>> anschliessen kannst.


Das war ja auch ein Vorschlag, was dein Simulator noch so alles können 
könnte um interessant zu sein :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.