Forum: Compiler & IDEs Daten im Flash-ROM


von Karl-alfred R. (karl-alfred_roemer)


Lesenswert?

Hallo,

ich hätte mal ne Frage: Wie kann man in AVR-GCC Daten ins Flash-ROM
programmieren (zur Programmierzeit)  und wie kann man die zur Laufzeit
auslesen? In Assembler ist es klar, nur wie macht man das in C?



Beispiel in Assembler:

.include "m8def.inc"
    ldi     R16, 0xFF
    out     DDRB, R16               ; Port B: Ausgang
    ldi     ZL, LOW(daten*2)        ; Low-Byte der Adresse in Z-Pointer
    ldi     ZH, HIGH(daten*2)       ; High-Byte der Adresse in Z-Pointer
    lpm                             ; durch Z-Pointer adressiertes Byte
                                    ; in R0 laden
    out     PORTB, R0               ; an PORTB ausgeben
 ende:
    rjmp ende                       ; Endlosschleife
 daten:
    .db 0b10101010

von Karl H. (kbuchegg)


Lesenswert?


von Karl-alfred R. (karl-alfred_roemer)


Lesenswert?

Danke für den Link. Umsetzung hat auch schon geklappt.
Noch eine weitere Frage dazu:

Wo landen die Daten im Speicher eigentlich?
Direkt hinter dem Programmcode (wie in Assembler)oder
irgendwo im Flashrom, wo der Compiler meint, es wäre noch
was frei?

von Stefan E. (sternst)


Lesenswert?

Karl-alfred Römer schrieb:

> Wo landen die Daten im Speicher eigentlich?

Normalerweise(*) hinter den Vektoren.

(*): Ich weiß nicht, ob es bei AVRs mit mehr als 128 KiB vielleicht 
anders ist.

von Karl-alfred R. (karl-alfred_roemer)


Lesenswert?

Falls es eine dumme Frage ist, bitte ich im Voraus um Entschuldigung:
Was für Vektoren? Die Zeigerliste auf die ISR-Routinen?

von Stefan E. (sternst)


Lesenswert?

Ja.

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.