Es ist etwa 30 Jahre her, seit ich das letzte Mal jeden Fall ein EPROM :-)
gemacht, müssen Sie 2 Dinge ...
Part One
Erstens Ihre Dateien PNG-Format, das bedeutet, sie haben Daten, Zeiten, Paletten, Gamma-Chunks und eine Menge komprimierter Daten zlib
, und Sie können das nicht einfach in einen Bildschirmpuffer kopieren. Also müssen Sie die PNGs in ein einfaches Binärformat konvertieren, wobei 0 aus ist und 1 an ist und es nichts anderes in der Datei gibt. Der einfachste Weg dazu ist mit ImageMagick, die auf den meisten Linux-Plattformen installiert ist und ist kostenlos auf MacOS und Windows verfügbar. Sagen wir mal einen Ihrer Rahmen anim.png
genannt wird, und wir wollen, dass es bekommen, um ein einfaches Format, wie PGM
(Portable GreyMap - siehe Wikipedia description) wir ImageMagick wie dieses an der Konsole verwenden können:
convert anim.png -compress none anim.pgm
der ersten Zeilen werden:
P2
128 64
255
255 255 255 255 255 255 255 ...
...
...
, weil das Bild 128x64 und die maximale Helligkeit in der Datei ist 255. Dann werden die alle Daten in ASCII folgen (weil ich -compress none
setzen). Dort steht 255 für Weiß und 0 für Schwarz.
Wie das ist zu groß für den Bildschirm, hier ist ein Bild, wie es aussieht - hoffentlich können Sie Ihre Blackbox als ein Bündel von Nullen in der Mitte an der Unterseite sehen:
Nun, wenn Sie denselben Befehl erneut ausführen, aber entfernen Sie die -compress none
, wird der gleiche Header erzeugt, aber die Daten werden in Binärform folgen.
convert anim.png anim.pgm
Und wir können sed
auch die 3 Zeilen-Header löschen verwenden:
convert anim.png anim.pgm | sed '1,3d' > anim.bin
Jetzt haben Sie eine Binärdatei von nur reinen Pixel, die frei von Datum/Uhrzeit, Autor und Urheberrechte ist, Paletten und komprimierte Daten können Sie zum nächsten Teil übergehen.
Teil 2
Zweitens, wenn Sie Ihre Daten in einem vernünftigen Binärformat bekommen haben, müssen Sie es auf Intel-Hex konvertieren, und dass Sie srec_cat
benötigen, die für Linux täglich zur Verfügung steht und über homebrew auf einem Mac.
Dann habe ich nicht getestet und haben es nie benutzt, ich denke, Sie so etwas wie wollen:
srec_cat anim.bin -binary -output -intel
:020000040000FA
:20000000323535203235352032353520323535203235352032353520323535203235352000
:200020003235352032353520323535203235352032353520323535203235352032353520E0
:200040003235352032353520323535203235352032353520323535203235352032353520C0
:200060003235352032353520323535203235352032353520323535203235352032353520A0
:20008000323535203235352032353520323535203235352032353520323535203235352080
...
:207E8000353520323535203235352032353520323535203235352032353520323535203202
:207EA0003535203235352032353520323535203235352032353520323535203235352032E2
:147EC000353520323535203235352032353520323535200A2A
:00000001FF
Zusammenfassung
Sie abkürzen und vereinfachen, was ich vorschlage oben - Ich werde es dort lassen, damit die Leute es in Zukunft verstehen können!
convert YourImage.png gray: | srec_cat - -binary -output -intel
Die gray:
ist ein sehr einfaches ImageMagick Format entspricht nur der binäre Teil einer PGM-Datei ohne Header. Wie PGM
verwendet es ein Byte pro Pixel, so dass es für Ihre reinen Schwarz-Weiß-Bedürfnisse etwas ineffizient sein wird. Sie können das an der Dateigröße erkennen - die PGM-Datei hat 8192 Bytes, also 1 Byte pro Pixel. Wenn Sie wirklich, wirklich 1 Bit pro Pixel möchten, können Sie PBM
Format wie folgt verwenden:
convert YourImage.png pbm: | sed '1,3d' | srec_cat - -binary -output -intel
Hinweis:
Von v7 von ImageMagick ab, sollten Sie convert
durch magick
ersetzen, so um zu vermeiden, mit dem integrierten Befehl convert
von Windows zu kollidieren, der Dateisysteme in NTFS konvertiert.
ImageMagick ist ein ziemlich großes Paket, könnten Sie dies tun, ebenso gut nur mit der NetPBM Suite und das Werkzeug pngtopnm
anstelle von convert
genannt verwenden.
Sind das ausschließlich Schwarz-Weiß-Bilder? Dies sollte eine triviale Umwandlung sein - setze die schwarzen Bits auf 1 und die weißen Bits auf 0. Ich bin mir nicht sicher, was mit der gefundenen Software nicht stimmt. (Ich bin mir auch nicht sicher, was in der Welt "Intel Hex" ist. Wie unterscheidet sich das hexadezimale Format von Intel von allen anderen? So weit ich weiß, ist es nicht.) –
@CodyGray Es ist ein [schlecht benanntes Format] (https://en.wikipedia.org/wiki/Intel_HEX) von denen ich bis jetzt noch nie gehört habe :) Zum OP: Was genau fragst du? Für ein Werkzeug zum Konvertieren von Bildern in Intel HEX? Ich fürchte, das ist nicht Thema. Hast du über Sprites nachgedacht? Oder einfach eine rohe Binärdatei brennen? –
nicht schlecht benannt es gibt intel hex und motorola srecord, wenn du gerade erst davon gehört hast dann entweder bist du neu bei microcontrollern oder das format ist älter als du bist.Eeprom-Programmierer haben das eine oder andere Dateiformat benutzt, seit Eeprom herauskam oder wahrscheinlich vorher, brauchten die gleichen Formate für das Programmieren von Mcus an dem Tag, an dem sie vor dem Flash waren, und steckten sie in einen Programmierer, bevor sie zum Board wechselten. –