www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Data-Memorie is voll - In den Program-Memorie verschiebbar?!


Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe eben mein Projekt fertig stellen wollen und bin nun über meinen 
Compiler erschrocken - oder über den Quellcode. Jenachdem...
Aber sieh selbst:
Creating Symbol Table: main.sym
avr-nm -n main.elf > main.sym

Size after:
AVR Memory Usage
----------------
Device: atmega128

Program:   27964 bytes (21.3% Full)
(.text + .data + .bootloader)

Data:       4254 bytes (103.9% Full)
(.data + .bss + .noinit)



-------- end --------


> Process Exit Code: 0
> Time Taken: 00:03
Ich habe sehr viel vorgefertigten Text, den ich auf eine SD Karte bei 
bedarf schreiben muss.
Kann ich den irgendwie im Programmspeicher abspeichern lassen?
Ich kenne mich mit sowas noch überhaupt nicht aus.
Kann mir jemand nen Tipp geben, wie ich das dennoch auf meine ATmega128 
bringen kann?

Danke

Autor: Michael H. (michael_h45)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: gggg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
texte und konstanten am besten in den FLASH legen


beim lesen muss beachtet werden diesen vorher erst wieder von dort zu 
holen ..

Autor: Mario Grafe (mario)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
printf_P(PSTR("Text im Flash! Variablen gehen auch: %d"), value);

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Variablen im Flash gehen auch? Dann ist das Flash aber bald hinüber...

Oder sollte dein Text lauten:
  printf_P(PSTR("Text im Flash! printf-Argumente gehen auch: %d"), value);

Autor: Mario Grafe (mario)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja natürlich, sorry :)
Aber es funktioniert prächtig. Ich habe dadurch meinen RAM-Verbrauch von 
70 auf 17% senken können (viele Debug-Ausschriften...)

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> printf_P(PSTR("

die variante mit dem großen P ist normalerweise ein Makro, dass das PSTR 
selbst macht.

also entweder printf_P("text") oder printf_p(PSTR("text"))

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.