Forum: Mikrocontroller und Digitale Elektronik Programm mit Inline-Assembler: Fehler beim kompilieren


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.
von Marius S. (fhler)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin gerade dabei ein Programm zu schreiben mit dem sich der AtTiny85 
selbst programmieren können soll. Um u.a. den Z-Pointer richtig zu 
setzen brauche ich (Inline-)Assembler. An diesem Punkt scheitere ich 
derzeit jedoch noch. Genauer: Die Z-Pointerregister(r30/r31) richtig zu 
setzen, und die Programmdaten in den Registern r00 und r01 
bereitzustellen. Ich bin, für den Inline-ASM bisher nach folgendem 
"Kochrezept" vorgegangen: 
https://rn-wissen.de/wiki/index.php?title=Inline-Assembler_in_avr-gcc#Zugriff_aufs_SRAM

Mit dem Code:
1
  asm volatile(
2
    
3
    "ld r30,Adr_MSB \n\t" 
4
    : "=r" (...)
5
  );

 kompilieren will zeigt(e) er mir entweder den Fehler "expected 
primary-expression before '...' token" oder
"undefined reference to 'Adr_MSB' " (wenn ich statt '...' 'Adr_MSB' 
geschrieben hatte).

So wirklich kann ich mir die Fehler nicht erklären, es ist allerdings 
auch schon etwas länger her wo ich Assembler benutzt habe.

Mit dem Code
1
  asm volatile(
2
    
3
    "ld r30,Adr_MSB \n\t" 
4
    : "=r" (Adr_MSB)
5
    "ld r31,Adr_LSB \n\t"
6
    : "=r" (Adr_LSB)
7
8
    "ld r00,DataLOW \n\t"
9
    : "=r" (DataLow)
10
    "ld r01,DataHIGH \n\t"
11
    : "=r" (DataHigh)
12
13
  );
bekomme ich derzeit den Fehler: " expected ')' before string constant " 
und Zeile "ld r31,Adr_LSB \n\t"  ist rot markiert. Die Variablen 
Adr_MSB, Adr_LSB, DataLow und DataHigh sind global bekannt und vom Typ 
char.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert

von Arne (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht geht es mit 
https://www.nongnu.org/avr-libc/user-manual/group__avr__boot.html auch 
ohne Assembler.

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]
  • [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.