www.mikrocontroller.net

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


Autor: Daniel (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja sorry schreibfehler r3 sollte das heißen

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.include "m8def.inc"
 
    ldi     R16, 0xFF
    mov    R0,R16;
  mov    R1,r16;
  out     DDRB, R16               ; Port B: Ausgang
 
    ldi     ZL, 0        ; Low-Byte der Adresse in Z-Pointer
    ldi     ZH, 0       ; High-Byte der Adresse in Z-Pointer
 
 
ende:   
    lpm     R0,Z+                   ; durch Z-Pointer adressiertes Byte
    rjmp ende                       ; Endlosschleife
 
daten:
    .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

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.