Hallo zusammen, ich steuere ein "dummes" Graphik-LCD von C (AVR-GCC) aus an; die Umstände mit dem PROGMEM habe ich soweit im Griff; meine Bitmaps kommen auf dem Display an. Aber jetzt: Ich habe mir zum Probieren ein kleines Programm geschrieben, daß eine Binärdatei mit einer Bitmap in Code umwandelt (also ... = {0xA8, usw. ), um die Bitmap einzubinden, aber das kann ja nicht der Normalfall sein. Wie schaffe ich es, daß eine Binärdatei, Byte für Byte, in mein Compilat geschrieben wird und ich da PROGMEM-Mäßig drauf zugreifen kann? Danke für Tipp oder Link!
Wenn es sich um viele Bytes handelt, dann stecke ich sie normalerweise in einem assembler Modul (zB: codes.s). Es kann so aussehen: .section .codes,"ax",@progbits .global MYCODES MYCODES: .dw 0xaa etc etc etc und dann linke ich es mit: --section-start=.codes=0x3C00 dann weiss ich dass die Koden in progmem 0x3c00 anfaengen... In reinem C kann man wahrscheinlich die arrays als __attribute__((_progmem_)) deklarieren, aber ich habe es noch nie probiert und bin nicht sehr sicher wie es genauer ausehen soll. Richard, Cape Town
Hi @Philipp doch das ist IMHO der Normalfall. Du definierst dir dein Array in einem konstanten Array (im Flash) und läßt den Linker das dann zu deinem Programm dazulinken. Das hat den Vorteil das der Linker noch diverse Probleme abfangen kann und du keine Adressen irgendwo im Programm hart codieren mußt. Man kann den Vorgang mit einem kleinen Skript ja automatisieren so daß das einfache reinkopieren eines Bildes in ein bestimmtes Verzeichnis und ein anschließendes "make imagearrays" alle nötigen Dateien erstellt. Du könntest das .bin zwar nach dem Linken des Executables irgendwo dahinter hängen aber das sollte man IMHO lieber bleiben lassen. Matthias
Soll heißen: ich bleibe bei meinem Hilfsprogramm, das mir die Bitmaps in C-Code Arrays übersetzt, lasse das aber vom Makefile erledigen, damit ich nicht immer den Hantier habe. Stimmt, das bringt mich genauso komfortabel ans Ziel. Hätte ich auch drauf kommen können. Aber schon erstaunlich, daß es da keinen direkten Weg gibt; schließlich liegen Bitmaps ja meist Binär vor und werden nachher auch wieder binär gebraucht. Naja, was soll's! Danke für den Tipp!
Hi das ist halt nicht wirklich Teil der Sprache. Es gibt bestimmt Wege den Linker dazu zu überreden irgendwelche Binärdaten dazuzulinken und dann auch auf diese zuzugreifen. Das ist aber nicht zwischen den Toolchains kompatibel und macht u.U. Probleme. Der Weg über ein seperates C-File ist IMHO der sauberste. Bei heutigen Festplatten ist das aufblähen des Bildes um einen Faktor 5 auch kein großes Problem mehr. Matthias
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.