Forum: Mikrocontroller und Digitale Elektronik Verify während eines Bootloadervorgangs


von Daniel (Gast)


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?

von Peter D. (peda)


Lesenswert?

Daniel wrote:

> 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?

Nö.

Wenn Du was nach r3 schreibst, darf sich r1 doch nicht ändern.


Peter

von Daniel (Gast)


Lesenswert?

ja sorry schreibfehler r3 sollte das heißen

von Daniel (Gast)


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.

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.