Atmelstudio: Wie Zeilen mit 0xFF entfernen aus hex-File ?

Gast #6202342
Lesenswert?

Hallo zusammen,

ich habe festgestellt, dass das Atmelstudio nicht belegte Bereiche im 
hex-File mit 0xFF auffüllt. Wie kann ich dies verhindern?

Hintergrund:
Bevor ich einen Chip programmiere wird ein Chiperase durchgeführt. Nach 
dem Chiperase ist der komplette Speicher mit 0xFF gefüllt. Beim 
Programmieren werden die 0xFF-Bytes aus dem Hex-File programmiert, 
obwohl das Byte ja schon durch das Löschen den Wert 0xFF hatte. Dies 
kostet unnötig Programmierzeit. Ich habe jetzt mal testweise manuell 
alle

:1059D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7

Zeilen entfernt. Und siehe da, die Progammierzeit hat sich erheblich 
reduziert.

Jetzt gibt es zwei Möglichkeiten:

1) Schon beim der HEX-File-Erzeugung verhindern, dass die nicht belegten 
Bereiche im Hex-File landen. Wie geht das?

2) Nachträglich mit einem Tool die 0xFFen entfernen. Gibt es hierfür ein 
Tool?

Oder gibt es noch anderen Möglichkeiten?

Viele Grüße
Tron
Gast #6202424
Lesenswert?

Aus dem Manual: srecord-1.64.pdf (Seite 45)

Unfilling the Blanks
It is common to need to “unfill” an EPROM image after you read it out of 
a chip. Usually, it will have had
all the holes filled with 0xFF (areas of the EPROM you don’t program 
show as 0xFF when you read them
back).
To get rid of all the 0xFF bytes in the data, use this filter:
srec_cat infile −unfill 0xFF −o outfile
This will get rid of all the 0xFF bytes, including the ones you actually 
wanted in there. There are two ways
to deal with this. First, you can specify a minimum run length to the 
un-fill:
srec_cat infile −unfill 0xFF 5 −o outfile
This says that runs of 1 to 4 bytes of 0xFF are OK, and that a hole 
should only be created for runs of 5 or
more 0xFF bytes in a row. The second method is to re-fill over the 
intermediate gaps:
srec_cat outfile −fill 0xFF −over outfile \
−o outfile2
Which method you choose depends on your needs, and the shape of the data 
in your EPROM. You may
need to combine both techniques.
Moderator Persönliche Seite #6202440
Lesenswert?

mega_clever schrieb:
> ich habe festgestellt, dass das Atmelstudio nicht belegte Bereiche im
> hex-File mit 0xFF auffüllt.

"das Atmelstudio" baut gar keine Hexfiles.

Die bauen die Tools.

Die füllen nicht freiwillig und kein 0xff; es muss also einen Grund 
geben. Daher solltest du hier konkrete (Code-)Beispiele präsentieren.

Außerdem: warum überhaupt Hexfiles und nicht gleich das ELF-File?
Gast #6202470
Lesenswert?

Mike und Hendrik
Danke für die Tipps. Werde ich morgen mal austesten. Die beste Lösung 
wäre aber die Daten nicht nachträglich zu entfernen sondern von Anfang 
an zu verhindern, dass nicht benutzter Speicher im Hex-File auftaucht.
Gast #6202473
Lesenswert?

Jörg W. schrieb:
> "das Atmelstudio" baut gar keine Hexfiles.
>
> Die bauen die Tools.
>
> Die füllen nicht freiwillig und kein 0xff; es muss also einen Grund
> geben. Daher solltest du hier konkrete (Code-)Beispiele präsentieren.
>
> Außerdem: warum überhaupt Hexfiles und nicht gleich das ELF-File?


Das ist mir schon klar, das die unterlagerte Toolchain (gnu) das 
Hex-File generiert. Ich habe im Atmelstudio keine Möglichkeit gefunden, 
um den Aufbau des Hex-Files beeinflussen zu können. Vermutlich müsste 
ich manuell Änderungen am vom Atmelstudio erzeugten makefile vornehmen.
Vermutlich erzeugt der Linker das Hex-File. Ich schau mir morgen mal das 
Makefile an.
Gast #6202497
Lesenswert?

Jörg W. schrieb:
> Außerdem: warum überhaupt Hexfiles und nicht gleich das ELF-File?

Das ist auch ein gute Idee. Ich werde mal die Programmierung 
(atprogram.exe) mit dem elf-File durchführen anstatt mit dem hex-File. 
Eventuell werden dann nur die notwendigen Bytes programmiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren