Forum: Mikrocontroller und Digitale Elektronik Reihenfolge der verschiedenen Tools


von Felix O. (lp2k14)


Lesenswert?

Hallo zusammen,

ich sitze gerade an einer Aufgabe für die Schule. Dabei geht es darum, 
die 6 verschiedenen Tools nach Ablauf zu sortieren und zu benennen, 
welche Datei verarbeitet bzw erzeugt wird.

Bei der Reihenfolge dachte ich mir das so:

1. CodeWizard; erzeugt Projekt-Datei
2. Editor; verarbeitet a-Datei, erzeugt c-Datei
3. Compiler; verarbeitet c-Datei, erzeugt asm-Datei ?
4. AVR Studio
5. Assembler; verarbeitet ?, erzeugt HEX-Datei
6. Ponyprog; verarbeitet HEX-Datei

Stimmt das so bisher?

Ich hoffe, ihr könnt mir weiterhelfen ;)

VG

von Jojo S. (Gast)


Lesenswert?

Wo kommt der Code Wizard oder Editor her, was startest du um diese Tools 
zu bekommen?

von Felix O. (lp2k14)


Lesenswert?

Wie muss ich das verstehen?

Uns wurden diese 6 Tools genannt, welche wir nun nach Reihenfolge 
sortieren sollen ...

von Georg G. (df2au)


Lesenswert?

Mit Verlaub, die Aufgabe ist unlösbar bzw die Lösungen sind mehrdeutig.

Das AVR Studio beinhaltet einen Editor, einen Compiler und einen 
Assembler. Es ist nur die Verpackung für diese Werkzeuge.

Ein Codewizard mag manchmal funktionieren, es gibt auch Leute, die ihn 
verwenden. Meist wird er überbewertet und kann nicht das Nachdenken 
vor dem Programmieren ersetzen.

Ein Compiler kann durchaus direkt ausführbaren Code (das ist wohl mit 
HEX-Code gemeint) erzeugen. Der Umweg über den Assembler ist nicht 
zwingend.

Das Einzige, was sicher ist, ist, dass am Ende mit dem 
Programmier-Werkzeug die "HEX Datei" in den Prozessor gefüttert wird.

von Oliver (Gast)


Lesenswert?

Im Falle eines AVR geht das ohne AVR-Studio ungefähr so:

Editor: Verarbeitet deine Tastatureingaben, erzeugt .c oder .asm-Datei
Compiler: Verarbeitet .c-Datei, erzeugt .o-Datei
Linker: Verarbeitet .o-Datei, erzeugt .elf-Datei
avr-objcopy: verarbeitet .elf-Datei, erzeugt .hex Datei
Ponyprog: brennt .hex-Datei in Prozessor

Mit AVR-Studio geht es genauso, wobei das Studio den Editor und den 
Assembler enthält, und die anderen tools in der richtigen Reihenfolge 
aufruft. Insofern könnte man das an allererster Stelle einordnen.

Was der Codewizzard machen soll, musst du näher erläutern. Denn 
üblicherweise versteht man darunter ein Programm, daß auf Basis 
grafischer oder tabellarischer Eingaben Sourcecode erstellt (.c oder 
.asm).

Oliver

von Jojo S. (Gast)


Lesenswert?

Sehe ich auch so, erst das AVRStudio öffnen und dann kann man die Tools 
in der genannten Reihenfolge verwenden. Und ist 'CodeWizard' richtig 
abgeschrieben? 'ProjectWizard' würde mehr Sinn ergeben, so hiess der 
Vogel im 4er Studio mal.

von Felix O. (lp2k14)


Lesenswert?

Vielen dank bereits für die Hilfe ;)

Was er mit der Aufgabe genau bezwecken will verstehe ich auch nicht 
ganz, denn es gibt ja echt mehrere verschiedene Wege.

Habt es nun mal so:

1. CodeWizard; erzeugt Projekt-Datei
2. Editor; verarbeitet .a-Datei, erzeugt .c-Datei
3. Compiler; verarbeitet .c-Datei, erzeugt .o-Datei
4. AVR Studio; verarbeitet .cof-Datei, erzeugt /
5. Assembler; verarbeitet .o-Datei, erzeugt HEX-Datei
6. PonyProg; verarbeitet HEX-Datei

Kann ich das so lassen?

von Georg G. (df2au)


Lesenswert?

Also... wenn schon dann so:
1.) AVR-Studio: Ist die gemeinsame Verpackung.
2.) Projekt Wizard: Legt Verzeichnisse, CPU-Typ, Taktfrequenz usw fest.
3.) Editor: Erzeugt *.c Datei.
4.) Compiler: Erzeugt aus der *.c Datei Assembler Code und andere Info 
Dateien.
5.) Assembler: Erzeugt aus dem Assembler Code den ausführbaren Code.
6.) PonyProg: Füllt des ausführbaren Code in den Prozessor.

Es fehlt ein wichtiger Teil: Der Linker-Locater, der den Benutzer Code 
und die verwendeten Bibliotheken zusammen fasst.

von Rene H. (Gast)


Lesenswert?

Felix O. schrieb:
>
> Kann ich das so lassen?

Ich denke man kann Dir auf diese Frage keine Antwort geben. Die 
Aufgabenstellung macht schlicht keinen Sinn. Die Vermutung liegt nahe, 
dass Dein Lehrer selbst nicht weiss was er da lehrt.

Ob Dein Lehrer damit befriedigt werden kann, kannst nur Du anhand der 
Schulungsunterlagen beurteilen.

Grüsse,
Rene

von c-hater (Gast)


Lesenswert?

Georg G. schrieb:

> Ein Compiler kann durchaus direkt ausführbaren Code (das ist wohl mit
> HEX-Code gemeint) erzeugen.

Also erstmal ist HEX kein ausführbarer Code, sondern ein 
Transportformat ähnlich etwa *.obj-Files. Theoretisch kann man damit 
tatsächlich alles machen, was auch mit *.obj möglich ist, mit Ausnahme 
des Transports von Bezeichnern.
Praktisch wird es aber meist nur als Containerformat für das finale 
Binary benutzt. Es ist aber deshalb trotzdem nicht dieses finale 
Binary, was man schon daran merkt, daß das Hexfile in aller Regel 
deutlich größer ist als das Binary, meistens ziemlich genau um den 
Faktor 2,8, was natürlich kein Zufall ist.

> Der Umweg über den Assembler ist nicht
> zwingend.

Das ist heute tatsächlich sogar bei fast allen Sprachen und bei den 
allermeisten Compilern so. Es ist aber ein schickes Feature, wenn die 
Werkzeuge in der Lage sind, das Ergebnis des Codegenerators auch als 
Asm-Datei auszugeben. Das macht es sehr viel leichter, Fehler in den 
Werkzeugen (oder auch bei ihrer Benutzung) zu finden.

> Das Einzige, was sicher ist, ist, dass am Ende mit dem
> Programmier-Werkzeug die "HEX Datei" in den Prozessor gefüttert wird.

Nö. Es gibt auch Programmierwerkzeuge, die andere Formate verabeiten 
können, z.B. *.elf oder auch *.exe (in der Windows-Welt).

von Georg G. (df2au)


Lesenswert?

c-hater schrieb:
> oder auch *.exe (in der Windows-Welt).

Wenn wir schon kleine Rosinen ausscheiden, dann bitte korrekt.

Bei EXE sind die Daten in einem Format, das noch reloziert werden muss. 
Damit direkt einen Prozessor zu programmieren wäre eher ungewöhnlich.

Und so ganz als Randbemerkung: Intel hat in seiner ursprünglichen 
Definition des HEX-Formates durchaus die Übergabe von Debug Infos 
vorgesehen.

von c-hater (Gast)


Lesenswert?

Georg G. schrieb:

> Wenn wir schon kleine Rosinen ausscheiden, dann bitte korrekt.

Ja, da bitte ich doch sehr drum.

> Bei EXE sind die Daten in einem Format, das noch reloziert werden muss.

Richtig. Die Exe enthält aber alle Informationen, die zur Relozierung 
nötig sind außer der Basisadresse (die gibt's nur als Defaultwert).

Und wer sollte nun besser über den einzig fehlenden Wert informiert sein 
als ausgerechnet das Tool, welches den Kram in den höchst real 
existierenden Speicher schreibt? Das mußt du mir jetzt doch mal 
erklären...

> Und so ganz als Randbemerkung: Intel hat in seiner ursprünglichen
> Definition des HEX-Formates durchaus die Übergabe von Debug Infos
> vorgesehen.

Nicht wirklich. Natürlich kann man Strings mit den Symbolnamen in's Ziel 
befördern, das ist klar. Strings sind schließlich auch bloß Datenbytes.
Aber es gibt keinen Recordtyp im Hex-Format, der einen Bezug zwischen 
diesen Strings und Adressen oder anderen numerischen Repräsentationen 
der Bezeichner (z.B. bei Aufzählungstypen) herstellen könnte. Deshalb 
kann das HEX-Format das eben nicht leisten. Bestenfalls können es darauf 
aufsetzende Formate und Tools.

Ich wüßte aber nicht, daß auch nur Intel selber jemals ernsthaft etwas 
in dieser Richtung gemacht hätte, was natürlich nicht ausschließt, daß 
das geschehen sein könnte, als Intel für mich noch völlig unwichtig war. 
Das muß dann aber schon seeeehr lange her sein. Also länger her als 
ungefähr 30 Jahre...

von Amateur (Gast)


Lesenswert?

Ich würde folgende Reihenfolge annehmen:

1.) AVR-Studio: Ist die gemeinsame Verpackung.
2.) Projekt Wizard: Legt Verzeichnisse, CPU-Typ, Taktfrequenz usw fest.
3.) Editor: Erzeugt *.asm Datei (Text)
3.) Editor: Erzeugt *.c Datei (Text)
4.) Assembler: Erzeugt aus der *.asm Objekt Code
5.) Compiler: Erzeugt aus der *.c Objekt Code
5.) Compiler: (Linker) klebt die Objektdateien zusammen und erzeugt 
*.Hex
6.) PonyProg: Schiebt der Code in den Prozessor.

Wenn Du möchtest, kannst Du 3 und 3 tauschen.
Ebenso 4 und 5a.

von Rene H. (Gast)


Lesenswert?

Er spricht aber von CodeWizard und nicht Project Wizard:

http://www.codewizard.org

Und das passt nicht ins Bild.

Grüsse,
René

von Felix O. (lp2k14)


Lesenswert?

Vielen vielen dank für eure vielen hilfreichen Tipps...

eine kleine Frage zu einem etwas anderen Thema hätte ich da allerdings 
noch.
Wie kann ich abfragen, wie lange eine Taste gedrückt wurde?

Möchte so z.B. erreichen, dass bei kurzem Drücken die LED nur kurz 
aufleuchtet, bei längerem Drücken hingegen etwas länger.

Wie bekomme ich das mit einfachsten Mitteln hin? Kann ich da evtl. 
einfach mit einer kleinen Delay-Zeit arbeiten oder wie würdet ihr das 
ganze lösen?

: Bearbeitet durch User
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.