Forum: Mikrocontroller und Digitale Elektronik kavr Bootloader


von Mw E. (Firma: fritzler-avr.de) (fritzler)


Angehängte Dateien:

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?

von Ralf S. (schepperle)


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

von Mw E. (Firma: fritzler-avr.de) (fritzler)


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.

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.