mikrocontroller.net

Forum: Compiler & IDEs Assembler mit Atmel Studio 7 *.inc nicht mehr notwendig, aber warum?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Assembel_Newboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich bin zur Zeit Assembler für die 8 Bit AVRs am erlernen.
Dafür gibt es zum Glück einige brauchbare Tutorials und Erklärungen 
welche sich gut ergänzen.
Da aber meistens ein ATtiny 13 oder ATmega8, ATmega32 oder manch mal 
auch der ATmega 328 verwendet werden sind die Tutorials und Erklärungen 
fast durchgehend schon einige Jahre alt was rein von der 
Assemblervermittlung aber kein Problem ist.
Aber die eingesetzten Programme für die einzelnen Schritte sind in 
diesen Tutorials teilweise recht veraltet und mittlerweile unnötig 
aufwendig in der Anwendung.
Zum Glück gibt es aber auch das Atmel Studio, auch schon wo diese 
älteren Tutorials erstellt wurden - und Dank des AVRISP mkII und der 
seit einigen Jahren "normalen" Rechnerleistung funktioniert das Programm 
auch problemlos.

Nach dieser langen Vorrede meine "Frage"

Mindestens bis einschließlich Atmel Studio 4 war es notwendig im 
eigentlichen Assemblerprogramm die include Datei des jeweiligen AVR 
einzubinden, entsprechendes ist auch in "jeden" Tutorial erwähnt.
Aber mindestens seit Atmel Studio 7 ist das nicht mehr notwendig, es 
darf sogar nicht im Assemblerprogramm eingebunden werden, was ich aber 
erst durch (für mich anfangs) kryptische Fehlermeldungen und etwas Trail 
und Error herausfinden musste.
In irgendeinen Tutorial bzw. Internetauftritt wurde das irgendwo so 
"nebenbei" kurz erwähnt.

Meine Frage: Wo und wie bindet Atmel Studio 7 jetzt diese include Datei 
automatisch ein, und kann man das einfach (Häckchen setzen, löschen) 
abstellen, da natürlich die Assemblerdirektive .list bzw. .nolist nicht 
mehr vernünftig zu gebrauchen ist und wenn .list "eingeschaltet" ist 
natürlich immer auch die ganze include datei des jeweiligen Controllers 
gesichert wird.

mfg

Assembel_Newboy

: Verschoben durch Moderator
Autor: Assembel_Newboy (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ergänzung:
Da das Forum so ist wie es ist:

Bitte keine Grabenkämpfe bezüglich des Atmel Studios und dessen Version 
oder warum 8Bit µC heute nicht mehr oder vielleicht doch sinnvoll sind, 
welche Programmiersprache die einzig Wahre ist und vor allem nicht über 
die art und weise wie ich lerne.
Leider muss man solch freche und bissige Ansagen hier machen, meine 
Entschuldigung geht in voraus an die netten Forennutzer die auf 
gestellts Fragen antworten, freundlich (!) auf Fehler oder fehlende 
Informationen hinweisen bzw. Anschlussfragen stellen.

Danke

Autor: M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assembel_Newboy schrieb:
> Wo und wie bindet Atmel Studio 7 jetzt diese include Datei
> automatisch ein

Im Projekt wird doch der Controller angegeben.

Assembel_Newboy schrieb:
> Aber mindestens seit Atmel Studio 7 ist das nicht mehr notwendig, es
> darf sogar nicht im Assemblerprogramm eingebunden werden, was ich aber
> erst durch (für mich anfangs) kryptische Fehlermeldungen und etwas Trail
> und Error herausfinden musste.

Nicht unbedingt. Im Falle des Falles einfach auskommentieren.

Autor: Assembel_Newboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Danke, aber das war mir schon klar bzw. ich lösche einfach die .include 
Direktive im Assemblerprogramm.

Ich würde aber trotzdem gerne wissen wo und wie jetzt das Studio die 
*.include einbindet (klar wenn ich beim Projekt erstellen den Controller 
wähle) aber irgendwas muss ja im Hintergrund gesehen was zumindest in 
der Version 4 der Studios noch nicht der Fall war, wo kann ich das sehen 
bzw. wo "versteckt" das Studio diese Direktive den irgendwo muss ja 
trotzdem die richtige include Datei beim Build ausgewählt sein 
(ansonsten würden ja nicht die Fehlermeldungen kommen wenn diese doppelt 
eingebunden wird).
Und das "Problem" (ja mit copy und paste und löschen der störenden 
include in irgendeinen Texteditor geht das irgendwie aber schön ist 
anders vor allem weil das Studio eigentlich alles bietet) mit der .list 
bzw. .nolist direktive bleibt ja.

Trotzdem Danke

 Assembel_Newboy

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du ein neues Projekt erstellt klickst du dich doch durch, also 
welcher µC, welcher Ordner, Projektname...

ich würde es aber auch im Programm reinschreiben und ; voransetzten, 
damit man den Quelltext ggf. auch mit einem älterem AVR-Studio 
übersetzen kann.

Autor: Stolpersteine (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Assembel_Newboy schrieb:
> und etwas Trail und Error
------------^^^^^^----------

Trail:  Spur, Pfad, Weg, Fährte, Schwanz

Welches soll man nehmen um das zu verstehen?

Autor: Stolpersteine (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Assembel_Newboy schrieb:
> Häckchen

Häckchen --> kleine Hacke

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stolpersteine schrieb:
> Trail:  Spur, Pfad, Weg, Fährte, Schwanz

Stolpersteine schrieb:
> Häckchen --> kleine Hacke

Genau das unterscheidet halt einen Leser, der die Transferleistung von 
Trail nach Trial und Häckchen nach Häkchen vollenden kann, von einem 
Stolperstein. Derjenige, der es nicht schafft, muss halt weiter im 
Dunkeln tappen und kann leider nichts zum Thema beitragen.

: Bearbeitet durch Moderator
Autor: S. Landolt (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Schon - aber bei mieser Stimmung wird sowas manchmal zum Stein des 
Anstoßes.

Autor: Karl B. (gustav)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas O. schrieb:
> Wenn du ein neues Projekt erstellt klickst du dich doch durch, also
> welcher µC, welcher Ordner, Projektname...

Hi,
und auf dem richtigen Laufwerkspfad des programmierenden PC.
Da gibt/gab es böse Überraschungen sonst.

Je nachdem, wo Atmel-Studio installiert wurde:
Einmal steht die Definitionsdatei auf
C:>Prog\...\AVRAssembler2\Appnotes
und einmal auf
C:>ProgX86\...\AVRAssembler\Appnotes

Beim Assemblieren kommt unten "no errors no warnings" da etwas 
hochscrollen:
Da steht dann der momentan verwendete Pfad:
C:\Users\xxx\Documents\aaa.asm(101): Including file 'C:\Program Files 
(x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\4434def.inc'

ciao
gustav

Autor: M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ob Du nun dauernd ein (mir unbekanntes) Häkchen setzt oder mit einem 
simplen Semikolon steuerst dürfte vom Aufwand her egal sein.
Meinem aktuellen Mega128 Studio7 Projekt ist es gerade egal ob der 
Controller mit Include von "m128def.inc" dann quasi doppelt vorgegeben 
wird oder nicht. Fehlermeldungen treten dabei nicht auf. Ich würde auf 
jeden Fall aber mal auf die aktuelle Version 7.0.2389 bzw. im Device 
Pack Manager updaten.

Autor: Assembel_Newboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Danke dafür das ihr euch alle so anstrengt, vor allem am Moderator für 
den entsprechenden Kommentar (was muss man eigentlich noch alles 
erwähnen?- Siehe meinen zweiten Post - um gewisse "hilfreichen" 
Kommentare zu verhindern...).

Aber alles was ihr an sinnvollen Kommentaren und Hilfestellungen gegeben 
habt ist mir eigentlich bekannt und erklärt leider nicht was ich gerne 
verstehen und wissen möchte:

Vielleicht bringt es etwas wenn ich anders frage:

Wie und wo bindet (lädt, fügt zu...) das Studio in der Version7 bei der 
Auswahl des gewünschten Controllers wie z.B. den ATtiny 13A die include 
Datei den in das Projekt ein. Was und wie geschieht da zusätzlich im 
Hintergrund was zumindest bis einschließlich der Version 4 nicht gemacht 
wurde.
Irgendwo muss ja der die Assemblerdirektive .include ersetzt werden bzw. 
"versteckt" hinterlegt sein
Aber wo den nun? - Spätestens beim assemblieren muss der eigentliche 
Assembler doch mitgeteilt bekommen welches *.inc File er einbinden muss 
- also muss diese Direktive (Eventuell dann streng genommen 
Steuerbefehl, Verlinkung...) ja irgendwo "verbunden", also mit den 
Quellcode verknüpft (zugeordnet?) sein?!

Ja alles nicht wirklich wichtig und für das erlernen der 
Assemblersprache nicht wichtig, aber trotzdem möchte ich es wissen, vor 
allem weil andere Assemblerprogramme (damit meine ich jetzt die 
Programme welche den Assemblerquellcode in die Maschinensprache und den 
*.hex code wandeln) die .include Direktive im Assemblerquellcode auf 
jeden Fall benötigen.

 Assembel_Newboy

Autor: Assembel_Newboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

"Ich würde auf jeden Fall aber mal auf die aktuelle Version 7.0.2389 
bzw. im Device Pack Manager updaten."

Das hört sich gut an und ich werde das mal machen.
Bei dir scheint es ja zu funktionieren.

Danke

Autor: M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assembel_Newboy schrieb:
> Bei dir scheint es ja zu funktionieren.

Ich kenne diese missverständlichen Fehlermeldungen durchaus auch aus der 
Vergangenheit.

Assembel_Newboy schrieb:
> Irgendwo muss ja der die Assemblerdirektive .include ersetzt werden bzw.
> "versteckt" hinterlegt sein
> Aber wo den nun?

Ich würde annehmen daß das Projektfile-gesteuert vom Programmcode selber 
veranlasst wird. Also ohne Einflußmöglichkeit von außen. Aber wie Du 
schon sagst

Assembel_Newboy schrieb:
> alles nicht wirklich wichtig

Autor: Assembel_Newboy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

"Das hört sich gut an und ich werde das mal machen."

-Hat leider nicht gebracht, außer das das Studio auf den neusten Stand 
ist...

Wobei das update eher eine Neuinstallation ist, zumindest vom 
Zeitaufwand...
Wenn das bei jeden Programm so wäre - dann gute Nacht ;-)

Das Update war übrigens nur von 7.0.1417 auf 7.0.2389 - so gut das 
Studio auch eigentlich ist - beim Upate müsste sich Atmel bzw. Microchip 
bzw. dessen Dienstleister so langsam was einfallen lassen - das müsste 
doch deutlich schneller und sparsamer gehen...

Ansonsten: Auskommentieren oder weg löschen ist halt die Lösung - dumm 
nur wenn das in den überwiegend nun mal älteren Tutorials gar nicht 
stehen kann und es wirklich aktuelle Einsteigertutorials in die 
Assemblerprogrammierung für 8 Bit AVRs in deutscher Sprache irgendwie 
nicht zu geben scheint...
Als vollkommener Neueinsteiger der noch nie einen µC Programmiert  hat 
geschweige den eine solch komplexe IDE genutzt hat (welche sich auch 
sehr stark von Version zu Version geändert hat) ist dann leider erst mal 
aufgeschmissen.

Hoffentlich lernt Google diesen Thread kennen und die Neueinsteiger mit 
ähnlichen Problem wird hiermit ein wenig geholfen.
Noch besser wäre es natürlich wenn das irgendwie die Ersteller der 
Deutschsprachigen, an Anfänger gerichteten Tutorials das mit bekommen 
würden und entsprechende Hinweise einpflegen würden.


Danke für eure Hilfe und Hinweise - auch wenn es letztendlich nicht das 
gebracht hat was ich gerne hätte...

Autor: Eberhard H. (sepic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt, wenn du unter Atmel Studio 7 ein neues Assembler-Projekt 
anlegst, wirst du nach Angabe von Projektnamen und Projektverzeichnis 
gefragt, welches der Zielprozessor sein soll.

Atmel Studio hält diesen dann nicht in der Quelldatei, sondern in der 
Projekt-Datei fest, genau genommen in der Datei *.componentinfo.xml mit 
vollständigem absolutem Pfad für die zugehörige include-Datei (falls 
dich das interessiert).

Das muss dich aber nicht weiter kümmern, denn du kannst das bei Bedarf 
auch im Solution Explorer sehen (nämlich unter Dependencies) und die 
zugehörige include-Datei (aber auch alle anderen, z. B. nach dem 
erfolgreichen Assemblieren jene unter "Output Files") per Doppelklick 
jeweils in ein eigenes Atmel-Studio-Fenster holen.

Wenn du irgend ein anderes Quellprogramm in das neu erstellte 
main.asm-Fenster kopierst und dort eine include-Angabe für den 
verwendeten Prozessor gemacht ist, die sich von jener im Solution 
Explorer unterscheidet, sollest du sie löschen, da sie möglicherweise 
nicht aktuell bzw. nicht im vorgegebenen Pfad von Atmel Studio 7 zu 
finden ist.

Falls es derselbe include-Name (mit doppeltem Hochkomma) ist, kannst du 
ihn für bessere Übersicht auch im main.asm stehen lassen.

Wenn du aber eine include-Datei für einen Zielprozessor angibst, der 
nicht unter Dependencies aufgeführt aber gültig ist, erzeugt dieser 
Konflikt beim Assemblieren eine lange Liste mit Fehlermeldungen. Dann 
musst du diese include-Datei zwingend löschen oder auskommentieren.

Viel Spaß beim AVR-Assembler-Programmieren - ernsthaft!

: Bearbeitet durch User
Autor: Karl B. (gustav)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, es ist ein xml File noch nötig.
Die .inc alleine reicht nicht.
AVrasm object.xml
guck da mal rein. dann siehst Du es.

Framework ist das Zauberwort.

ciao
gustav

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.

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