www.mikrocontroller.net

Forum: Compiler & IDEs Daten im Flash (PROGMEM etc. )


Autor: P. M. (beginner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

nachdem ich bei meinen Recherchen in diesem Forum auf das "Problem" mit 
der speziellen Behandlung von Daten im Flash ( um nicht zuviel RAM 
benutzen zu müssen ) gestossen bin, möchte ich meine spezielle Frage in 
den Raum werfen.

Ich möchte mit einem ATmega128 und einem LCD incl. Tastatur eine kleine 
Bedieneinheit entwickeln.
Ich habe dazu eine kommerzielle Grafik-Library zur Verfügung. Diese 
Bibliothek kann auch Fonts einbinden. Fuer diese Fontdaten müsste ich 
wohl mit der bekannten Vorgehensweise ( PROGMEM ) dafuer sorgen, dass 
diese im Flash abgelegt werden, weil die 4k wohl nicht ausreichen 
würden.

Jetzt wollte ich aber ungern in der LIB etwas ändern ( alle Tabellen, 
Zugriffe auf Daten etc. )

Meine Frage: Ist ein AVR oder speziell der ATmega128 dann überhaupt noch 
die richtige Wahl, oder geht das Alles doch einfacher??

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz einfach: Wenn deine "kommerzielle Grafik-Library" nicht in der Lage 
ist, die Fonts und sonstige Grafikelemente ins Flash zu packen, passt 
sie nicht zum Mega128. Dann brauchst du entweder eine andere lib, oder 
einen anderen Prozessor, je nachdem, was für dich einfacher zu handeln 
ist.

Wobei ich mich schon frage, was das für eine lib ist, die zwar 
prinzipiell auf einen Mega angepasst ist, daber trotzdem darauf gar 
nicht richtig funktionieren kann.

Oliver

Autor: P. M. (beginner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die LIB ist fuer alle denkbaren Controller geschrieben worden und 
(Zitat)
"For use with embedded processors" konzipiert.
Nur eben das spezielle "Problem", wie die statischen Daten abgelegt 
werden müssen berücksichtigt sie nicht. Mit ausreichend RAM wäre das 
sicher kein Problem.

Deswegen frage ich mich, ob der AVR der Richtige ist. Oder ist die 
Verwendung von externem RAM eine mögliche Lösung?
Den Prozessor zu wechseln ist prinzipiell auch kein Problem, wenn ich 
mir damit weniger Probleme aufhalse.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch ganz einfach: Ein 96-Zeichen-Font in 12*8 Punkt belegt ca. 
1kB Speicher. Einer in 8*5 mit 40 Zeichen weniger. Wenns mal große 
Buchstaben werden sollen (48 Punkt sind für eine zweistellige Anzeige 
auf einem 128*64 Display gerade richtig), sind alleine für die Ziffern 
0-9 schon 2kB weg. Icons brauchen Länge mal Breite, usw.

Rechne dir selber aus, ob du alles, was du benötigst, neben Stack und 
sonstigen Variablen in deine 4kB reinbekommst. Wenn du nur eine Font, 
keine Icons, ect. benötigst, mag das funktionieren, aber dann brauchst 
du eigentlich die lib nicht.

Also entweder eine andere lib, oder einen Prozessor mit größerem oder 
externem Ram.

Oliver

Autor: P. M. (beginner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

danke fuer die (moralische) Unterstützung. Ich werde pro Font wohl auch 
mehrere Spachvarianten anbieten müssen. Die 4k Grenze ist damit weit 
überschritten.
Bin bereits auf der Suche nach einem geeigneterem Prozessor. Wollte mich 
hier nur noch vergewissern, dass ich nicht total daneben liege und 
Probleme sehe, wo keine sind.

Patrick

Autor: P. M. (beginner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ergänzung zu diesem Thema.

Ich musste mich zwangsläufig weiter mit diesem Thema beschäftigen, weil
ich eine zugekaufte Bibliothek einsetzen möchte, um möglichst einfach,
möglichst viele Fonts ( Sprachvarianten ) nutzen zu können.

Mit AVR-GCC ist da nur umständlich voran zu kommen. So gut die Tools 
auch sind, da stoßen sie an die Grenzen.

Mit kommerziellen Compilern/Linkern ( habe IAR und ImageCraft probiert )
ist das Thema der const Daten im FlashRAM sehr einfach zu handeln.


Gruß
PM

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie möchte die Lib den die Daten haben? Wenn du zur Laufzeit einfach 
über einen Zeiger neue Daten zuliefern kannst, wäre es vielleicht eine 
Idee die Daten alle ins Flash zu packen und nur die gerade verwendeten 
"Häppchen" ins RAM zu laden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.