Forum: Mikrocontroller und Digitale Elektronik avrdude fastload Verständnisproblem


von Bernd (Gast)


Lesenswert?

vorab was ich möchte: Applikation und Bootloader gemeinsam brennen auf 
einem tiny85  geht nicht :-( d.h. die App geht nicht, der Bootloader 
schon und ich kann die App durch laden per Bootloader gangbar machen)

nach Blick ins Datenblatt und Bootloadercode ist zwar klar dass der 
Bootloader den ersten Sprung auf der Adresse 0 modifiziert damit er 
selber zuerst angesprungen wird, dann müsste aber ja das Programm gehen 
und der Bootloader nicht?

zum Ablauf:
wenn ich die beiden Progs gmeinsam brenne mit:
avrdude -p t85 -P /dev/ttyACM0 -c stk500v2 -B 4 -U 
flash:w:"LionBoot.hex"

und danach den Flash auslese mit
avrdude -p t85 -P /dev/ttyACM0 -c stk500v2 -B 4 -U flash:r:"back.hex":i

steht die Modifikation des Sprungs im Flash, wie kommt die dahin?!

erste Zeile in LionBoot.hex (das Blank ist von mir)
:10000000 0EC028C027C026C025C0EAC223C022C017
erste Zeile back.hex
:20000000 
1FCF28C027C026C025C0EAC223C022C021C020C01FC01EC01EC01CC01BC011249F

und als Abschluss kann ich mit beiden Dateien Verify machen und es gibt 
keinen Fehler?!
avrdude -p t85 -P /dev/ttyACM0 -c stk500v2 -B 4 -U 
flash:v:"LionBoot.hex"
avrdude -p t85 -P /dev/ttyACM0 -c stk500v2 -B 4 -U flash:v:"back.hex"

Einen Verdacht habe ich: es werden 8190 Bytes verifiziert, warum nicht 
8192?

von Bernd (Gast)


Lesenswert?

das mit den 8190 Bytes ist geklärt:
der Bootloader braucht die letzten 2 Bytes nicht mehr

aber warum kriege ich bei 2 unterschiedlichen Files ein korrektes 
Verify?
Ist der Aufruf von avrdude falsch?

von Bernd (Gast)


Lesenswert?

sorry dass ich Euch angeschwindelt habe:
in Wirklichkeit heiße ich Melanie und habe keinen Freund ;-)

von Bernd (Gast)


Lesenswert?

Hilf dir selbst:

es reicht nicht aus wie manchmal beschrieben einfach die beiden 
HEX-Dateien aneinander zu hängen (und den einen Endrecord zu entfernen).
Was dann noch fehlt ist der Sprung vom Bootloader zum Anwenderprogramm, 
er wird auf den zwei Bytes vor dem Bootloader eingetragen, also bei mir 
z.B.
:021E3E00EFC0F3

Das EFC0 ist ein rjmp, die Sprungadresse muss natürlich nicht bei jedem 
gleich sein, sie lässt sich aus dem rjmp auf Adresse 0 des 
Anwenderprogramms berechnen.

Tipp wer die Checksum nicht selbst berechnen will:
avrdude mit dem HEX-File und irgendeiner Checksum starten und aus der 
Fehlermeldung die richtige Checksum ablesen.

von Bernd K. (prof7bit)


Lesenswert?

Also ich hab mir dafür ne Vorrichtung gebastelt mit nem Sockel für den 
Tiny, dem Anschluss für ISP und für den seriellen Adapter und der Rest 
wird von Batch-files gesteuert:

Einmalig (geht aber in 20 Sekunden)

* Irgendeinen leeren Tiny in den Sockel
* Bootloader samt aller Fuses aber OHNE Lockbits flashen via ISP
* Applikation einspielen via Bootloader
* Komplett auslesen via ISP

und für die Produktion:

* Tiny in Sockel drücken
* Readout von oben einspielen via ISP mit Fuses, mit Lockbits
* Tiny rausnehmen
* bestücken

Ich hab auch schon drüber nachgedacht den ersten Schritt komplett ohne 
Hardware zu machen, ein Script zu schreiben um das Hex zu patchen und 
beide zu einem zusammenzuführen aber nur alle Jubeljahre brauch ich das 
mal und jedesmal siegt dann die Faulheit weils halt doch einfach nur 
zwei Handgriffe, 3 Mausklicks und 20 Sekunden sind.

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.