mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Inline-Assembler


Autor: Flo82_2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
    asm volatile(
    "ld z, %1   \n\t"
    "lpm        \n\t"
    "sts %0, r0 \n\t"
    : "=&r" ((uint8_t)value)
    : "m"  ((uint16_t)addr)
    : "r0" 
  );// asm

Vielen Dank schon einmal für eure Hilfe.

Grüße Flo

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Flo82_2 wrote:

> Da es in C keine Funktion zum auslesen gibt, muss ich sie in
> Inline-Assembler nachbauen.

pgm_read_byte(), aus <avr/pgmspace.h>.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
Schau dir mal im Include-Verzeichnis avr/pgmspace.h an.

Autor: Flo82_2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.