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