Ich nutze fastboot (https://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger) auf einem attiny45, habe reset deaktiviert und muss den bootloader ändern - ohne HV-Programmer. Gibt's irgendwo ein Programm, in dem ich den neuen Bootloader als Daten (hex, bin?) einfügen kann, und das diese dann an die richtige Adresse schreibt (und sich evtl. selbst löscht)? Beim nächsten Reset läuft dann der neue Bootloader und ich kann die eigentliche Anwendung übertragen...
IsDochEgal schrieb: > Gibt's irgendwo ein Programm, Münchhausen hat so etwas mal versucht. Hat, glaube ich, nicht geklappt.
Sollte aber doch bei einem ATtiny45 möglich sein, oder? Zumindest finde ich auf die Schnelle nichts Gegenteiliges im Datenblatt. Wobei ich selbst HV-Programmierung vorziehen würde, ist einfacher und schneller.
Solch ein Programm kann man sich natürlich bauen. Es hat Ähnlichkeit mit dem russischen Roulett. Um den neuen Bootlader zu programmieren muss es den alten löschen. Wenn nun ein Fehler auftritt oder der neue Bootlader eine Macke hat, steht man dumm da. Ich rate dringend davon ab.
Ach was, hin ist futsch und futsch ist hin. Das ist mein Wahlspruch." Stanley Laurel (und HV-Programmierung geht ja immer)
Georg G. schrieb: > Um den neuen Bootlader zu programmieren muss es > den alten löschen. Wie soll er das tun, wenn er auf der gleichen Stelle liegt? Das einzige was denkbar wäre, daß der vorhandene Bootloader eine SW lädt, die von einem anderen Speicherbereich aus den Bootloader in den Flash schreibt.
Andreas B. schrieb: > die von einem anderen Speicherbereich aus den Bootloader in den Flash > schreibt. Genau darum geht's.
Ich kenne fastboot nicht, aber lässt sich der nicht einfach dahingehend einstellen bzw. modifizieren?
PS: Also der modifizierte fastboot wäre besagte "SW".
S. Landolt schrieb: > modifizierte fastboot Bestimmt, das wäre für mich aber ein großer Umbau in Assembler. Da geht umlöten schneller. Statt Schnittstelle gibt es Daten aus dem Flash und die Zieladresse ist nicht am Ende vom Bootloader sondern irgendwo am Anfang.
IsDochEgal schrieb: > Gibt's irgendwo ein Programm Wärend du lange danach suchst, wäre ein eigenes sicher bereits fertig. Prinzip: Andreas B. schrieb: > Das einzige was denkbar wäre, daß der vorhandene Bootloader eine SW > lädt, die von einem anderen Speicherbereich aus den Bootloader in den > Flash schreibt.
Hier ist, was ich suche, aber ich kann es nicht benutzen: https://github.com/micronucleus/micronucleus/blob/master/firmware/upgrade.c // Upgrade is an in-place firmware upgrader for tiny85 chips // The 'bootloaderAddress' variable in bootloader.h, and the bootloaderData // progmem array with the bootloader data, are generated by the makefile. // // Upgrade will firstly rewrite the interrupt vector table to disable the bootloader, // rewriting it to just run the upgrade app. Next it erases and writes each page of the // bootloader in sequence, erasing over any remaining pages leaving them set to 0xFFFF // Finally upgrader erases it's interrupt table again and fills it with RJMPs to // bootloaderAddress, effectively bridging the interrupts in to the new bootloader's // interrupts table. // // While upgrade has been written with attiny85 and micronucleus in mind, it should // work with other bootloaders and other chips with flash self program but no hardware // bootloader protection, where the bootloader exists at the end of flash // // Be very careful to not power down the AVR while upgrader is running. // If you connect a piezo between pb0 and pb1 you'll hear a bleep when the update // is complete. You can also connect an LED with pb1 positive and pb0 or gnd negative and // it will blink https://github.com/micronucleus/micronucleus/blob/master/firmware/Makefile#L145 Wie kann ich ein eigenes .hex bzw. .bin dort einbauen? Inwiefern muss ich auf Adressen / die Größe von fastboot aufpassen?
IsDochEgal schrieb: > - ohne HV-Programmer Mein Gott. HV-Programmer kostet auch nicht die Welt, aber gut, muss man nicht haben wollen. Eh du da auch nur 1h investierst, schmeiss den Tiny85 weg und setz einen neuen rein mit dem richtigen Boolader drauf. Da würde ich nicht mal ansatzweise drüber nachdenken den zu retten.
folgendes auskommentiert: main.bin: $(OBJECTS) # @$(CC) $(CFLAGS) -o main.bin $(OBJECTS) $(LDFLAGS) # @avr-objdump -d -S main.bin > main.lss main.hex: #main.bin das bin kann man erzeugen mit avr-objcopy.exe -I ihex boot.hex -O binary boot.bin mal schauen, ob das funktioniert...
S. Landolt schrieb: > Sollte aber doch bei einem ATtiny45 möglich sein, oder? Das ist generell möglich, zumindest so lange keine Lockbits gesetzt sind. Allerdings muss man dazu natürlich die bestehende "Infrastruktur" benutzen, d.h. den alten Bootloader, zumindest einen kleinen Teil davon. Machbar ist das. Aber wohl nicht für den TO...
Man kann eine Applikation schreiben (einen sogenannten Bootloader Updater), welche den Bootloader austauscht. Diese Applikation flasht man mit dem alten Bootloader. Die Applikation startet und überschreibt den alten Bootloader mit dem neuen. Währenddessen darf aber nichts schieflaufen. Weil sonst startet der Kontroller nicht mehr. Danach kann man wieder eine normale Applikation flashen.
IsDochEgal schrieb: > mal schauen, ob das funktioniert... nicht so richtig: der geänderte bootloader hat sich zwar manchmal gemeldet, trotzdem hat es mit dem flashen nicht funktioniert - wahrscheinlich aber meine Schuld.
Was willst Du denn mit der ganzen Aktion eigentlich erreichen? Der Sinn eines Bootloaders ist, daß er nach dem Reset immer als erstes ausgeführt wird und so das Laden einer neuen Applikation ermöglicht. Insbesondere, wenn eine Applikation fehlerhaft oder unvollständig ist.
Genau - und jetzt soll eben, einmalig, die "neue Applikation" ein geänderter Bootloader sein; für den Autor von fastboot wäre das sicher eine fünfminütige Fingerübung.
Peter D. schrieb: > Was willst Du denn mit der ganzen Aktion eigentlich erreichen? IsDochEgal schrieb: > muss den bootloader ändern - ohne HV-Programmer.
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.