PSTR und SRAM-Speicher

OP #1419879
Lesenswert?

Servus Leute!

Hänge grad an einem kleinen Projekt wo mir Dir SRAM wieder mal ausgehen 
zu scheint, wohl wegen vieler Text-Meldungen u. Ä.

Hier im Forum habe ich gelsen, dass man mit avr-size main.out den 
benutzen Speicher zusammen zählt (.text + .bs +.data). Bei mir kommen da 
allerdings über 5KB zusammen obwohl der ATMEGA32 nur 2K SPeicher hat. 
Kann also irgendwie nicht sein? Hat jemand eine bessere Idee?

Jetzt möchte ich außerdem mit PSTR() einen Großteil der 
(String-)Meldungen in den Flash auslagern.
Die meisten Meldungen sehen aber aus wie USART_TransmitStr("depp."); 
Dazu will ich mir eine USART_TransmitStr_P(PSTR("depp.")); schreiben:

void USART_TransmitStr_P(PGM_P flashStr) _ATTR_CONST_;
void USART_TransmitStr_P(PGM_P flashStr)
{
  strcpy_P(buf , flashStr);
  USART_TransmitStr(buf);
}

Dazu hab ich einen Vorschlag aus dem Forum verwendet. Der Compiler hat 
damit kein Problem, nur sind alle USART_TransmitStr_P()-Ausgaben nun 
leer. Außerdem kommt der µC jetzt besonders aus dem Tritt.

Woran liegts? So schwer kann das doch nicht sein.

Nachdem ich so sämtliche Meldungen bearbeitet habe, hab ich außerdem 
bemerkt dass er nun weniger auf den Flash schreibt (lt. avrdude). Wie 
kann das sein? Eigentlich müsste er doch mehr schreiben. Dafür ergibt 
die Summer aus avr-size nun fast 1KB weniger?

Kann's mir jemand erklären? Oder ist es einfach schon zu spät?

Viele Grüße,

  Sebi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren