Forum: Mikrocontroller und Digitale Elektronik Problem mit indirekter pfadangabe beim AVR Studio


von Multi K. (multikulti)


Lesenswert?

Guten Tag,
ich habe angefangen den Queltext meiner Programme in Module 
zusammenzufassen und diese dann per .include einzubinden. Das soll das 
ganze übersichtlicher halten. Da ich alles auf einem USB-Stick habe weil 
ich an verschiedenen Rechnern arbeite, sollten es indirekte Pfadangaben 
sein.
Die includes sind folgendermaßen eingebunden:

.include "stack_init.asm"

stack_init.asm liegt in dem fall im selben Projektordner. Ich bekomme 
jedoch die fehlermeldung:
F:\AVR Projekte\Macros\Macros.asm(8): error: Cannot find include file: 
/stack_init.asm

Habe ich es falsch formuliert, oder sind relative pfadangaben beim 
Assembler nicht möglich?

mfg

Multikulti

von Thomas (kosmos)


Lesenswert?

haben include Files nicht die Endung .inc? Bin mir jetzt nicht 100% 
sicher aber benenne mal dein .asm Datei um die eingebunden werden soll.

Ansonsten schau mal unter Assembler Options unter additional include 
path, also ein zusätzlicher Pfad der immer durchsucht bzw. eingebunden 
wird.

von spess53 (Gast)


Lesenswert?

Hi

Irgendwie verstehe ich dein Problem nicht. Wenn sích Projekt und 
Programmfiles im gleichen Ordner befinden brauchst du keine relativen 
Pfade.

>haben include Files nicht die Endung .inc?

Das ist Wurst, wie die heissen. Du must nur den Namen richtig schreiben.

MfG Spess

von Multi K. (multikulti)


Lesenswert?

spess53 schrieb:
> Irgendwie verstehe ich dein Problem nicht.
Das problem ist, wenn ich einen absoluten Pfad angebe, wie z.b:
.include "F:/AVR Projekte/Macros/stack_init.asm" und ich den USB Stick 
auf dem das Projekt gespeichert ist in einen anderen PC stecke, ändert 
sich meistens der Laufwerkbuchstabe. Ich müsste jedesmall alle includes 
umschreiben.

spess53 schrieb:
> Programmfiles im gleichen Ordner befinden brauchst du keine relativen
> Pfade

Hm, wie denn?
Ist meine Schreibweise nicht richtig?

Thomas O. schrieb:
> haben include Files nicht die Endung .inc?

Die endung ist egal. Es muss nur eine Textdatei sein die im Assembler 
format geschrieben ist.

von spess53 (Gast)


Lesenswert?

Hi

>Ist meine Schreibweise nicht richtig?

Eigentlich nicht.

Also ich habe vorhin noch einmal vorsichtshalber ein Projekt mit mehrern 
Dateine auf einen Stick kopiert und den originalen Ordner verschoben. 
Das Projekt lässt sich problemlos öffnen und assemblieren. Alles ohne 
Benutzung von Pfadangaben.

Andere Frage: Welchen Assembler benutzt du? AVR-Assembler oder 
AVR-Assembler2 ?

MfG Spess

von Multi K. (multikulti)


Lesenswert?

spess53 schrieb:
>>Ist meine Schreibweise nicht richtig?
>
> Eigentlich nicht.

Wie wirds denn richtig geschrieben?

spess53 schrieb:
> Andere Frage: Welchen Assembler benutzt du? AVR-Assembler oder
> AVR-Assembler2 ?

AVR Assembler 2

von spess53 (Gast)


Lesenswert?

Hi

>>>Ist meine Schreibweise nicht richtig?
>>
>> Eigentlich nicht.

>Wie wirds denn richtig geschrieben?

Entschuldige. Ich meinte: 'Eigentlich ja '.

Wie gesagt, ich kann verschobene Projekte problemlos öffnen und 
assemblieren.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

Steffen P. schrieb:
> spess53 schrieb:
>>>Ist meine Schreibweise nicht richtig?
>>
>> Eigentlich nicht.
>
> Wie wirds denn richtig geschrieben?

Sollte eigentlich so passen wie du das hast.
Sicher dass sich da nicht doch ein / irgendwo eingeschlichen hat?

Du kannst auch mal probieren:

.include "./stack_init.asm"

Und auch wenn das mitlerweile kein Thema sein sollte, aber leider immer 
noch ab und zu eines ist:

F:/AVR Projekte/Macros/stack_init.asm

"AVR Projekte"

Wer in Pfad oder Dateinamen Leerezeichen einbaut, hat es nicht besser 
verdient als das er Ärger bekommt.

Leerzeichen, Umlaute, seltene Sonderzeichen (also alles was nicht _&-~%& 
ist, vielleicht noch ein paar mehr)
das sind die Zutaten, die Banker in Pfad und Dateinamen benutzen, wenn 
sie ihre Powerpoint-Präsentationen so ablegen müssen, das sie oder ihre 
Sekretärin sie wiederfinden können.

Für Softwareentwickler, die das eine oder andere mal schon auch noch auf 
alte Commandline Tools angewiesen sind, gilt:
* Keine Leerzeichen
* Keine Umlaute
* Keine Sonderzeichen ausser _ - und ab und an vielleicht noch ein + 
oder ein % und $. Aber auf keinen Fall / \ ? . , : *
Die Gefahr ist einfach zu groß, dass irgendein Commandline Parser diese 
Zeichen als Option misversteht bzw einen Dateinamen an einem Leerzeichen 
in 2 Teile auseinanderreisst.

Weder im Pfadnamen, noch im Dateinamen.
Tus einfach nicht und du hast weniger Probleme, die dir den Tag 
blödsinnig versauen können.

von Multi K. (multikulti)


Lesenswert?

Ohje, ich habs raus.
Ich hab ein include in ein include verschachtelt. Die Struktur sieht 
folgendermaßen aus:

F:/AVR Projekte/ProjektTralala
darin waren die makros eingebunden
F:/AVR Projekte/Macros/Macros.asm
in Macros.asm war ein Modul eingebunden
F:/AVR Projekte/Macros/stack_init.asm

Der Witz bei der sache war jetzt, das ich den relativen Pfad im 
Macros.asm vom Standpunkt des "ProjektTralala" angeben musste, obwohl 
stack_init.asm eigentlich im selben ordner liegt wie Macros.asm

Das heißt: .include "/Macros/stack_init.asm" Also, obwohl die beiden 
Dateien im ordner Macors wahren musste ich um sie ineinander zu 
verschachteln den pfad vom Projekt aus angeben.

Naja, wieder ein Tag schlauer. Danke für eure Hilfe.

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.