Forum: Mikrocontroller und Digitale Elektronik PSTR und SRAM-Speicher


von Sebastian B. (sebi)


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

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
Noch kein Account? Hier anmelden.