mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Assembler: Probleme mit include


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

bin gerade dabei eine Lüftersteuerung zu programmieren.
Jetzt wollte ich Code, den ich evtl. für andere Projekte wiederverwenden 
will, in eine separate ASM-Datei in einem anderen Verzeichniss 
auslagern.

Dabei ist mir jetzt erstmal aufgefallen, dass es wohl nicht möglich ist 
relative Pfadangaben zu machen.
Ist das richtig?

Dann habe ich es mit einer absoluten Pfadangabe versucht, die Datei wird 
gefunden und assembliert. Leider bekomme ich jetzt folgende 
Fehlermeldungen:

error: Overlap in .cseg addr=0x00 conflicts with 0x0:0x2
error: Overlap in .cseg addr=0x01 conflicts with 0x0:0x2

Die erste Fehlerzeile bezieht sich auf folgende Codezeile:
.org 0x0000
  rjmp   init

Die zweite auf:
init:
  ldi   temp, LOW(RAMEND)
  out   SPL, temp
  ...
Also auf die Stackpointer Initialisierung.

Woran könnte das liegen?

Gruß

Mathias

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dabei ist mir jetzt erstmal aufgefallen, dass es wohl nicht möglich ist
>relative Pfadangaben zu machen.

zeig doch bitte mal Deine incl Zeilen.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vollständigen Code posten!

Ansonsten kann man nur vermuten, dass vor dem .org 0x0000 ein 
.include steht, durch das der zweite gezeigte Teil eingebunden werden 
soll. Und das geht grundsätzlich schief! Assembler-Dateien werden immer 
von oben nach unten abgearbeitet. Wenn da Code steht und dann plötzlich 
ein .org, das auf eine Adresse weist, die kleiner ist, als die aktuelle, 
dann knallt es eben.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

[Glaskugelmode]

Du solltest daran denken, daß der Assembler die include-Files genau dort 
bearbeitet, wo Du sie einfügst.
Wenn Du Code vor dem Beginn des Programms (Reset-Vektor) einfügst, 
ünersetzt der Assembler den auch dort. Ab Adresse 0...

[/Glaskugelmode]

PS: Johannes war schneller bzw. das Forum lahmt extrem!

Gruß aus Berlin
Michael

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry wegen dem fehlenden Code, aber ihr hattet recht, vielen Dank.
Es lag an .include vor .org!

Könnt ihr mir evtl. noch sagen ob es stimmt, dass keine relativen 
Pfadangaben möglich sind?

Vielen Dank

Mathias

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Mathias,

>keine relativen
>Pfadangaben möglich sind?

nein die sind möglich!

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, super, dann versuch ich es weiter.


Vielen Dank.

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt aber einen include-Pfad. Den nutze ich auch nicht, ich kopiere 
mir die benötigten Includes in den Projektordner.

...

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.