Hallo! Ich schreibe gerade einen Bootloader, der von SD-Karte das Programm laden kann. Dazu muss ich ein neues Programm natürlich zunächst auf eine SD-Karte schreiben. Also z.B. mit dd if=myprog.bin of=/dev/sda2. Das AVR-Studio liefert mir standardmäßig jedoch nur eine hex-Datei. Das macht natürlich keinen Sinn, die auf die Karte zu spielen. Wie kann ich also den echten Maschinencode erzeugen lassen? Grüße!
Hallo Günther, wenn das Hex-file im Intel-Hex-Format ist, dann erzeugt dir das angehängte Program ein Bin-File. In diesem steht dann wirklich Maschinencode. Das Program ist von der keil.com Seite. Gruß, Christian
Hi wenn du GNU-tools einsetzt (avrgcc): Da gibt es das Programm objcopy. Damit kannst du unter anderem eine Intel-HEX Datei in eine Biärdatei umandlen. Matthias
Hi stimmt. Aber das objcopy jeder beliebigen Architektur sollte es auch tun. Matthias
Macht das Sinn eine Hexdatei fuer einen Download in eine Binaerdatei zu wandeln ? Nicht unbedingt. Zum einen kann die Hexdatei mit Loechern, dh unprogrammierten Bereichen umgehen, Eine Binaerdatei enthaelt dort FF oder Nullen. Ich denke ich werde fuer mein Downloadprojekt mit Hexdateien arbeiten, und nicht mit Binaeren. Falls es sich um grosse Mengen geht kann man sich auf dem Hexfile auch noch einen Kompressor vorstellen. Der Ansatz mit Zeilen, Adressen und Daten ist zu gut um wegzuschauen.
Hallo, @Sipp: >Macht das Sinn eine Hexdatei fuer einen Download in eine Binaerdatei zu >wandeln ? Nicht unbedingt. Du hast schon recht. Im prinzip könnte er auch direkt mit dem hex-File arbeiten, aber der Weg über eine bin-Datei ist meiner Meinung nach für den Anfang sicherlich leichter, da eine Fehlerquelle und zwar die "Umrechnung" schon ausgeschlossen ist. Soweit ich das richtig verstanden habe will er ja den Programmcode direkt von SD-Karte lesen und da ist doch eine bin-Datei genau das richtige. Einfach auf die Karte kopieren und gut.
Genau so ist es. Auf der SD Karte sind zwei Partitionen. Eine ist eine FAT16, die vom Hauptprogramm verwendet wird. Der Bootloader wertet die zweite Partition aus, die aus reinen Daten besteht. Dort liest er eins zu eins die Daten aus der Partition und schreibt diese in den Flash des AVR. An einer Stelle relativ zum Partitionsanfang liegt dann ein Versionswort, an welchem der bootloader entscheidet, ob eine Aktualisierung notwendig ist. Unter diesen Umständen wäre mir eine HEX Datei eher im Wege, da diese variable Länge hat. Das macht die Sache zwar nicht unmöglich, aber so ist sie schon etwas intuitiver.
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.