Hallo,
vielleicht wisst ihr Rat?
Folgendes Setup
ich habe ein selbst entwickeltes Board mit ATMega328, 5V, 16MHz und ISP
Interface. Abweichend vom Standard nutze ich den Athena Bootloader,
sodass ich später per Netzwerk die Software aktualisieren kann. In
Arduino arbeite ich mit der Einstellung "Arduino Pro oder Pro Mini".
Ein rein privates Projekt.
Den Bootloader kann ich mit avrdude auch erfolgreich flashen und dann
per tftp auch Software aktualisieren.
Wenn ich aber über die Arduino IDE mit dem AVRISP mkII oder direkt mit
avrdude meine Software flashe, ist der Bootloader weg.
Wie kann ich Arduino bzw avrdude so konfigurieren, dass der Bootloader
nicht überbügelt wird?
Danke für jegliche Tips!
Gero schrieb:> Wie kann ich Arduino bzw avrdude so konfigurieren, dass der Bootloader> nicht überbügelt wird?
Das geht nicht!
Ein Chip Erase ist ein Chip Erase und bleibt ein Chip Erase.
Aber:
Du kannst eine eigene boards.local.txt erstellen wo du dann deinen
Bootloader einstellst und dann Programm+Bootloader in einem Stück
schreibst.
Gero schrieb:> Wie kann ich Arduino bzw avrdude so konfigurieren, dass der Bootloader> nicht überbügelt wird?
Zum Beispiel indem man den vorhandenen avrdude(.exe) in der
Arduinoinstallation löscht und durch ein FTP-Programm für den
Athena-Bootloader ersetzt, das dann in avrdude umbenannt wird.
Dann wird nichts weggebügelt.
Just my 2 cents
EAF (Gast)
18.12.2022 15:31
>Das geht nicht!>Ein Chip Erase ist ein Chip Erase und bleibt ein Chip Erase.
Eher nicht. Das Flash wird "Page" weise gelöscht und man kann den
Boodloader stehen lassen. Was man tun muss: im Linker File die
Code-Section entsprechend setzen, damit der Bootloader nicht
überschrieben wird.
Klaus S. schrieb:> Zum Beispiel indem man den vorhandenen avrdude(.exe) in der> Arduinoinstallation löscht und durch ein FTP-Programm für den> Athena-Bootloader ersetzt, das dann in avrdude umbenannt wird.
Sicher, dass das ein guter Tipp ist?
Hier wird festgelegt welches upload tool verwendet wird:
https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt#L197https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt#L202
Eigene Einstellungen kann man in der boards.local.txt vornehmen
Hier wird der Path festgelegt:
https://github.com/arduino/ArduinoCore-avr/blob/master/platform.txt#L101
Eigene Einstellungen kann man in der platform.local.txt vornehmen
Somit besteht keinerlei Notwendigkeit AVRdude zu entfernen.
chris_ schrieb:> Das Flash wird "Page" weise gelöscht
Ja?
Wie?
Mein Stand ist:
Wenn man einen ISP Adapter nutzt, wird bei -U, auch der Bootloader
gelöscht.
Der Linker hat da gar nichts dran zu melden.
Dabei ist es doch gar kein Problem, wenn der Bootloader dabei gelöscht
wird, da doch Arduino auch eine *.hex mit Anwendung und Bootloader, in
einem Brocken, erstellt.
EAF schrieb:> Mein Stand ist:> Wenn man einen ISP Adapter nutzt, wird bei -U, auch der Bootloader> gelöscht. Der Linker hat da gar nichts dran zu melden.
Mit dem ISP-Adapter hat das auch nichts zu tun. Und -U ist eine Option
für das verbreitete ISP-Programm(!) avrdude. In der Tat führt
avrdude(nicht der ISP-Adapter!) beim Vorhandensein der Option -U ein
chip erase durch. Das kann man aber abschalten:
1
man avrdude
2
3
-D Disable auto erase for flash. When the -U option with
4
flash memory is specified, avrdude will perform a chip
5
erase before starting any of the programming operations,
6
since it generally is a mistake to program the flash with‐
7
out performing an erase first. This option disables that.
Man kann also durchaus den Bootloader und die Applikation einzeln
flashen. Man muß bloß sicherstellen, daß sie sich nicht überschneiden
(vulgo: Linkerskript). Und man muß beim zweiten Flashvorgang das
automatische Löschen abschalten.
Alles kein Hexenwerk. OK, für einen Verwender der Arduino "IDE"
vielleicht doch.
EAF schrieb:> Sicher, dass das ein guter Tipp ist?
Ja, klar. Hätte ich ihn sonst gegeben? Für mich ist es eben die
einfachste Lösung. Jeder darf aber seine Lösung als die Einfachste
anbieten, ich werde nicht widersprechen.
EAF schrieb:> Somit besteht keinerlei Notwendigkeit AVRdude zu entfernen.
Deswegen begann mein Satz mit: Zum Beispiel. Lesen bildet!
Außerdem kann jeder, der den avrdude noch braucht und ein wenig Resthirn
im Kopf hat, den avrdude umbenennen. Hatte nicht damit gerechnet, daß
sowas hier unbekannt ist. Ich bitte um Entschuldigung.
Gruß Klaus (der soundsovielte)
Klaus S. schrieb:> Lesen bildet!
Ja!
Z.B. könntest du mal das Eingangsposting lesen...
Dort steht, dass ihm seine Firmware updaten will, ohne den Bootloader zu
überschreiben.
Und du möchtest AVRdude umbenennen....
Sicher, dass das ein guter Tipp ist?
EAF schrieb:> Dort steht, dass ihm seine Firmware updaten will, ohne den> Bootloader zu überschreiben.
Dort steht, dass ihm seine Firmware updaten will, über einen ISPAdapter, ohne den Bootloader zu überschreiben.
Axel S. schrieb:> Und man muß beim zweiten Flashvorgang das> automatische Löschen abschalten.
Auch der Kollege kann nicht lesen!
Oder verstehen.....
Im ersten Beitrag steht, dass ihm seine Firmware updaten will, über
einen ISP
Adapter, ohne den Bootloader zu überschreiben.
Das geht nicht ohne das Flash vorher gelöscht zu haben!
Ohne löschen, mit alter Firmware drin, kommt eine solche oder
vergleichbare Meldung:
Es bleibt dabei:
Damit die Arduino IDE da mitspielt, muss man ihr den neuen Bootloader
zur Verfügung stellen und die Boarddefinition anpassen.
Dann klappt das schon!
Aber ich habe ja keine Ahnung (von AVR/Arduino/ISP/Flash)...
Und kann offensichtlich auch nicht lesen. Oder gar die maximale
Programmgröße dort eintragen....
https://github.com/embeddedartistry/athena-bootloader
Wenn diese Hardware Definition genutzt wird, dürfe eine Zeile in der
(noch anzulegenden) platform.local.txt ausreichen, damit das Eingangs
geschilderte Problem nicht mehr auftritt:
Dann lädt der Menüpunkt "Hochladen mit Programmer" Anwendung und
Bootloader in einem Rutsch hoch.
Incl. vorhergehendem Chip Erase
Den Menüpunkt "Bootloader brennen" muss man nur einmal ausführen, damit
die Fuses richtig stehen.
Gero schrieb:> Wie kann ich Arduino bzw avrdude so konfigurieren, dass der Bootloader> nicht überbügelt wird?EAF schrieb:> Dort steht, dass ihm seine Firmware updaten will, über einen ISP> Adapter, ohne den Bootloader zu überschreiben.
Mal davon abgesehen, daß ich die Passage "dass ihm seine Firmware
updaten will" etwas befremdlich finde, kann ich auf den Ausgangssatz des
TO so lange draufglotzen, wie ich will, ich finde da keine Festlegung
auf ISP.
Ich habe einen Vorschlag für Arduino-IDE ohne ISP gemacht, EAF hat einen
Vorschlag mit ISP gemacht. Beide werden vermutlich funktionieren.
Eigentlich wäre jetzt der TO dran, seine sehr vornehme Zurückhaltung
aufzugeben. So langsam kommt mir der Verdacht, daß es sich wieder mal um
so ein Exemplar vom Stamme Nimm handelt, der gerne seinen Arsch
abgewischt haben möchte.
Just my 2 cents
P.S. Habe gerade eine eklige Grippe. Vielleicht bin ich deshalb so
grantig :-(
Klaus S. schrieb:> ich finde da keine Festlegung> auf ISP.
ich schon:
Gero schrieb:> Wenn ich aber über die Arduino IDE mit dem AVRISP mkII oder direkt mit> avrdude meine Software flashe, ist der Bootloader weg.
Sein Upload über Ethernet funktioniert ja schon.....
Ist also hier nicht sein Problem.
EAF schrieb:> Sein Upload über Ethernet funktioniert ja schon.....> Ist also hier nicht sein Problem.
Eben dehalb hab ich ja genau den empfohlen. Wie lange dauert es noch,
bis der Groschen fällt?
Hallo zusammen,
hier nochmal der TO
Ich habe es nun so gelöst:
Bauen mit dem Menüpunkt "kompilierte Binärdatei exportieren"
Dann starte ich auf der Kommandozeile ein kleines shell script, welches
das entstandene hex zunächst in ein bin umwandelt.
Dann schickt es per UDP ein spezielles Kommando an den Atmel, der bootet
daraufhin neu und steht somit im Bootloader.
Das Script startet sodann den tftp upload.
Es ist zwar nicht der ursprünglich beabsichtigte Weg, hat sich jedoch
als sehr komfortabel, zuverlässig und schnell erwiesen. Ein
Update-Zyklus dauert ca. 3 Sekunden.
Danke an alle und frohe Weihnachten