kavr Bootloader

OP (Firma: fritzler-avr.de) #2620885
Lesenswert?

Moinsen,
schon länger nutze ich den kavr Bootloader, da er schön klein ist und 
direkt Hexfiles frisst.
Bisher immer auf den m8/16/32 dort funzt er wunderbar.

Diesmal soll er auf nem 644p laufen, aber Fehlanzeige.
Die UART Register wurden natürlich angepasst, sowie der Puffer 
vergößert.
Der Bootloader hängt sich sogar komplett auf beim hexfile rüberschieben.
Der Fehler lag hier:
1
for (j = 0; j < sizeof(page); j ++)
2
    *dst ++ = *src ++;
sizeof page ist 256 und da kommt ne 8bit Variable ja nie hin.
Das also gefixt und jetz passieren immernoch die wildesten Dinge, muss 
ich morgen nochmal nen screenshot der Konsole machen.
Nun ist der kavr auch schwer zu debuggen, der kommt mir irgendwie 
kryptisch vor.

Sticht da jemanden was direkt ins Auge?
Angehängte Dateien:
#2621004
Lesenswert?

was mir auffällt ist, das keine asm-Befehle im Quellcode vorhanden sind. 
Ich hab von meinem slebstgeschriebenen Bootloader ein Fehlverhalten erst 
nach der asm-simu gefunden. Folgendes:

für das flashen braucht man den SPM Befehl. dafür muss vorher r0:r1 für 
das Datenwort und der Z-Pointer (r30:r31) für die Adresse auf der 
Flashseite belegt werden. anschließend wird das SPM register belegt und 
der SPM Befehl ausgeführt. der Haken war der, dass der Autocoder die 
letzte Operation so umgesetzt hat, dass die Belegung des SPM Registers 
über das Register r30:r31 zwischengestuft wurde, was meine vorher 
belegte Zieladresse überschrieben hat...
ich hoff das war jetzt einigermaßne verständlich :-)

ich würde also schätzen, dass der Fehler nicht in dem Programmteil 
beherbergt ist, den Du angehängt hast...
OP (Firma: fritzler-avr.de) #2621023
Lesenswert?

Da ist kein asm, weil die Funktionen zum beschreiben des Flash in der 
Funktion:
static void flash_write(uint16_t addr)
aus der boot.h aufgerufen werden soweit ich das verstanden habe.
Nur die Funktionen aus der boot.h werden nichtmal aufgerufen, auf der 
Konsole sehe ich das XOFF nicht.

Wie nen Bootloader arbeitet habe ich schon ausm DB entnommen, daher wars 
verständlich ;)

Muss ich wohl anscheinend doch nen eigenen schreiben, habe nur den kavr 
gefunden der direkt hexfiles verspeist.

ER scheint sich ja direkt an der Pagesize von 128 Wörtern zu 
verschlucken, der 32er hat nur 64 Wörter Pagesize.

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