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


von Marius S. (fhler)


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)


Lesenswert?


von Arne (Gast)


Lesenswert?

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

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.