Forum: Mikrocontroller und Digitale Elektronik Fileformat für EPROM-Programmer


von Rolf E. (rolf-56)


Lesenswert?

Hallo Zusammen,
ich möchte Daten, welche ich in Libre-Office Calc (Excel) generiert 
habe, auf ein EPROM brennen. Mein Kollege hat ein Prog-Express von 
Batronix, welches div. Fileformate unterstütze. Ausser die 
Datei-Extensions habe ich allerdings nichts gefunden, wie die Daten auf 
dem File sein müssen, z.B. "Straight Hex". Kompliziertere Formate habe 
ich auf Google gefunden.
Kann mir für einfach zu generierende Fileformate jemand helfen?
von Norbert (der_norbert)


Lesenswert?

Am einfachsten in ein S-RECORD File konvertieren.
1
$ srec_cat text.hex -binary -o - -motorola
2
S0220000687474703A2F2F737265636F72642E736F75726365666F7267652E6E65742F1D
3
S108000048616C6C6F07
4
S5030001FB
5
$ srec_cat text.hex -binary -o - -intel
6
:020000040000FA
7
:0500000048616C6C6F0B
8
:00000001FF
wobei man auch noch die spezielle Ausgabe konfigurieren kann.
von Harald K. (kirnbichler)


Lesenswert?

Die universellen Standardformate sind Intel-Hex oder Motorola-S19.

Beide zeichnen sich dadurch aus, daß nicht der komplette Inhalt des 
EPROMs gespeichert werden muss, sondern nur die genutzten Stellen, und 
daß sie zur Fehlersicherung auch noch eine Prüfsumme für jeden Block 
enthalten.

Ein Gegenentwurf ist eine Binärdatei, die einfach für jede 
Speicherzelle des EPROMs genau ein Byte enthält, und damit immer exakt 
so groß ist wie der Adressraum des EPROMS.

Für ein 2764 sind das 8192 Bytes. So eine Binärdatei aber kann mit einem 
normalen Texteditor nicht betrachtet und erst recht nicht bearbeitet 
werden.

Intel-Hex und Motorola-S19 hingegen sind Textdateien, in der jede Zeile 
einen sogenannten "Record" enthält - letztlich ein Datenhäppchen.

Neben den Daten des Häppchens wird auch eine Adresse angegeben, die als 
Offset zum Beginn des EPROMs betrachtet werden kann (aber nicht zwingend 
muss; eine gute Eprom-Programmiersoftware sollte hier 
Korrekturmöglichkeiten vorsehen). Zum Häppchen gehört noch eine 
Nutzlängenangabe und eben eine Prüfsumme.

Wenn zum Beispiel bei einem EPROM aus irgendeinem Grund nur das erste 
und das letzte Byte programmiert werden soll, besteht die Binärdatei 
unverändert aus allen Bytes, die das EPROM enthält (beim 2764 also 8192 
Bytes).

Bei Intel-Hex oder Motorola-S19 aber besteht die Datei aus nur zwei 
Records - einem mit der Adresse 0 und einem Nutzbyte, und einem mit der 
Adress 8191 und einem Nutzbyte. Dazu noch eine Prüfsumme ... und fertig 
ist der Salat.

Hier mal als Beispiel mit dem Werten AA und BB

Bei S19 sieht das so aus:

S1 01 0000 AA cs
S1 01 1FFF BB cs

Und bei Intel-Hex sieht das so aus:

:01 0000 00 AA cs
:01 1FFF 00 BB cs

(der Übersichtlichkeit halber habe ich zwischen die Feldelemente 
Leerzeichen eingefügt und auf die Berechnung der Prüfsumme 'cs' 
verzichtet)

Direkt lassen sich solche Dateien mit einem Tabellenkalkulationsprogramm 
eher nicht erzeugen, aber Du kannst ein "Metaformat" nutzen:

CSV, in der ersten Spalte steht die Adresse, und in den folgenden 
Spalten die Datenbytes, die ab dieser Adresse gespeichert werden sollen.

Nach z.B. 32 Bytes beginnst Du eine neue Zeile, wieder mit einer Adresse 
(diesmal um 32 gegenüber der vorhergehenden Zeile erhöht) und gefolgt 
von den Nutzbytes.

Ein Programm zu schreiben, was daraus wiederum Intel-Hex oder 
Motorola-S19 erzeugt, ist dann eine leichte Übung.


https://de.wikipedia.org/wiki/S-Record
https://de.wikipedia.org/wiki/Intel_HEX
Beitrag #8056014 wurde vom Autor gelöscht.
von Rolf E. (rolf-56)


Lesenswert?

Intel-Hex und Motorola-S19 habe ich bei Wicki gesehen, schienen mir 
abeer zu kompliziert zum Erzeugen. Ich würde sowieso nicht mit einem 
Texteditor arbeiten, sondern ein kleines Programm schreiben. Wenn ich 
einfach die Hex-Zahlen oder ev. Binäre Bytes auf das File schreiben 
könnte, ohne noch Adressen und Checksummen zu generieren, dachte ich, 
dass das einfacher währe.
Wobei ich mit dem Programm natürlich das auch noch generieren könnte. 
Habe schon einen Fileconverter geschrieben, welcher das CBM-Format in 
das "Paper Tape Format" von KIM-1 umwandelt, das hat auch checksummen 
und so.
von Günter L. (Firma: Privat) (guenter_l)


Lesenswert?

von Harald K. schrieb:
>Für ein 2764 sind das 8192 Bytes. So eine Binärdatei aber kann mit einem
>normalen Texteditor nicht betrachtet und erst recht nicht bearbeitet
>werden.

In Linux geht das so.
Betrachten:

xxd -u -g1 Datei.bin

In Text wandeln um mit einen Texteditor betrachten
und bearbeiten zu können:

xxd -u -g1 Datei.bin > Datei_bin.txt

In echte Binärdatei zurückwandeln:

xxd -r Datei_bin.txt > Datei.bin
von Harald K. (kirnbichler)


Lesenswert?

Sind denn die Daten, die Du da ins EPROM schreiben willst, 
kontinuierlich, d.h. von Anfang an und ohne Lücken?
von Rolf E. (rolf-56)


Lesenswert?

Es ist eine relativ kleine Datei von ca. 200 Bytes mit nur kleinen 
Lücken.
Es handelt sich um eine Look Up Table für die Hardware. Das EPROM wird 
dann mit einem Hardware-Zähler an der Adresse angesteuert und steuert 
Magnete in einem zeitlichen Ablauf.
von Rainer W. (rawi)


Lesenswert?

Rolf E. schrieb:
> Wenn ich einfach die Hex-Zahlen oder ev. Binäre Bytes auf das File
> schreiben könnte, ohne noch Adressen und Checksummen zu generieren,
> dachte ich, dass das einfacher währe.

"Checksummen" beim Intel-Hex Format hört sich wilder an, als es ist. Auf 
deutsch ist das einfach eine Prüfsumme. Die Bytes eines Records (=Zeile) 
aufzuaddieren und zu negieren, ist wirklich kein Hexenwerk und die 
Adresse ergibt sich bis auf einen Offset aus dem Zähler deiner 
Ausgabeschleife.
: Bearbeitet durch User
von Günter L. (Firma: Privat) (guenter_l)


Lesenswert?

von Rolf E. schrieb:
>Es ist eine relativ kleine Datei von ca. 200 Bytes mit nur kleinen
>Lücken.

In eine Binärdatei gibt es aber keine Lücken.
Etwas muß da immer stehen, entweder 00 oder vielleicht FF.
von Harald K. (kirnbichler)


Lesenswert?

Rolf E. schrieb:
> Es ist eine relativ kleine Datei von ca. 200 Bytes mit nur kleinen
> Lücken.

Wenn es Lücken gibt, musst Du Dich drum kümmern, sie zu füllen -- oder 
Du verwendest ein Dateiformat, das Lücken zulässt.

Der Aufwand, Intel-Hex oder Motorola-S19 zu erzeugen, ist sehr 
überschaubar.
von Mario M. (thelonging)


Lesenswert?

Der Prog-Express nimmt auch Binärdateien. Also Tabelle als *.csv 
speichern und in *.bin wandeln. Am einfachsten online.

https://www.filesmonkey.com/csv-bin
von J. R. (yoc)


Lesenswert?

Günter L. schrieb:
> von Rolf E. schrieb:
>>Es ist eine relativ kleine Datei von ca. 200 Bytes mit nur kleinen
>>Lücken.
>
> In eine Binärdatei gibt es aber keine Lücken.
> Etwas muß da immer stehen, entweder 00 oder vielleicht FF.

Bei EPROM FF das beschleunigt das programmieren.
von Axel S. (a-za-z0-9)


Lesenswert?

Rolf E. schrieb:
> Intel-Hex und Motorola-S19 habe ich bei Wicki gesehen, schienen mir
> abeer zu kompliziert zum Erzeugen

Vielleicht hättest du nicht nur Wickie fragen sollen, sondern auch die 
starken Männer?

> Ich würde sowieso nicht mit einem
> Texteditor arbeiten, sondern ein kleines Programm schreiben.

Wozu? Du hast doch

Rolf E. schrieb:
> Daten, welche ich in Libre-Office Calc (Excel) generiert habe

Also liegen die ja schon in irgendeinem Format vor. Welches? Ich rate 
mal: Binärdateien. Dann laß sie so. Zu jedem EPROM-Programmiergerät 
gehört eine Programmiersoftware. Die kann Binärdateien lesen.

Alternativ kannst du die Binärdateien auch umwandeln. Es gibt gefühlt 
1000 Programme, die Binär nach Intel HEX oder Motorola S19 umwandeln 
können. Und zurück. Du mußt dieses Rad nicht neu erfinden.
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
Noch kein Account? Hier anmelden.