Verify während eines Bootloadervorgangs

Gast #846241
Lesenswert?

Hallo,
ich habe mir einen Bootloader geschrieben und möchte eine 
Verify-Funktion einfügen.
Target: ATmega2561
Programm: Codevision GCC + Assembler

Um Übertragungsfehler auszuschließen überprüfe ich jedes Byte einzeln 
bevor ich es in den temporären Seitenspeicher übergeben. Ist dieser nun 
vollständig gefüllt schreibe ist die Seite in das Flash des µC. Bevor 
ich nun die nächste Seite schreibe, möchte ich den beschrieben Flash an 
den PC zurück übergeben um diesen dann in meiner Software mit der 
Hexdatei zu überprüfen.

Ich nutze dazu den LPM-Befehl.
Beispiel:
//Lade Z-Register 0x0000;
LPM r2,z+;
LPM r3,Z+;


Nun sollte doch der Wert von Adresse 0x0000 in r2 stehen und Adresse 
0x0001 in r1?
Gast #846296
Lesenswert?

1
.include "m8def.inc"
2
 
3
    ldi     R16, 0xFF
4
    mov    R0,R16;
5
  mov    R1,r16;
6
  out     DDRB, R16               ; Port B: Ausgang
7
 
8
    ldi     ZL, 0        ; Low-Byte der Adresse in Z-Pointer
9
    ldi     ZH, 0       ; High-Byte der Adresse in Z-Pointer
10
 
11
 
12
ende:   
13
    lpm     R0,Z+                   ; durch Z-Pointer adressiertes Byte
14
    rjmp ende                       ; Endlosschleife
15
 
16
daten:
17
    .db 0b10101010
Wenn ich das nun simuliere funktionert es wie gewünscht. Aber in meinem 
Bootloader lese ich ständig den Wert 0xFF ein.
Ich werde nn feierabend machen und das ganze am Montag analysieren. Da 
stimmt bestimmt etwas mit meinem Z-Pointer nicht.

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