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?
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?
sorry dass ich Euch angeschwindelt habe: in Wirklichkeit heiße ich Melanie und habe keinen Freund ;-)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.