Inline-Assembler

Gast #678483
Lesenswert?

Hallo zusammen,

ich versuche bei dem ATMega168 in einem Bootloader den Flash auszulesen, 
um zu prüfen, ob eine gültige Programmversion vorliegt.
Da es in C keine Funktion zum auslesen gibt, muss ich sie in 
Inline-Assembler nachbauen.

Sie soll eine Adresse addr erhalten und gibt value wieder zurück.

Ich habe schon die verschiedensten möglichkeiten ausprobiert und keine 
Ahung, wie es richtig heißen müsste...

Wäre wirklich sehr nett, wenn mir jemand wieter  helfen könnte. Ich 
hänge da jetzt fast schon 2 Tage dran...

Der Code:
1
    asm volatile(
2
    "ld z, %1   \n\t"
3
    "lpm        \n\t"
4
    "sts %0, r0 \n\t"
5
    : "=&r" ((uint8_t)value)
6
    : "m"  ((uint16_t)addr)
7
    : "r0" 
8
  );// asm

Vielen Dank schon einmal für eure Hilfe.

Grüße Flo
Gast #678510
Lesenswert?

Ok,
super vielen Dank für die schnellen Antworten.

Ich hatte mir das GCC-Tutorial mal offline verfügbar gemacht, das ist 
aber schon gut  Jahre her... Gleich mal updaten.
Den Header kannte ich noch nicht.
Vielen Dank für die Info.

Grüße,
Flo

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren