ATMEGA128: Weiß irgendjemand, wieviel Stackspeicher die GCCLib-printf()-Funktionen verbrauchen (hier in der printflt-lib Version), oder wo diese Info steht? Ich hab hier immer wieder Abstürze, die durch Verwendung von printf() bei recht vollem RAM entstehen..... Wär hilfreich, um solche Fälle besser abschätzen zu können. Danke allen Gurus, die was dazu wissen ;-)
Das dürfte stark von den benutzten Formaten abhängen. Ich glaube nicht, daß es für sowas eine einfache Abschätzung gibt, die alle Fälle abdeckt.
Wäre auch noch die Frage, welche Version der avr-libc du benutzt. Die aktuelle dürfte im Stackverbrauch bei der Gleitkommaversion deutlich besser liegen als die von Version 1.4.x.
@ Uhu: Jou, klar, dachte auch mehr an ne Größenordnung. Habe noch knapp 200 Byte Stack und das reicht für ein simples
1 | sprintf (cString,"init Bluetooth"); |
scheints nicht aus. @ Jörg: Ich habe 2 Verzeichnisse für Libs auf dem Rechner: E:\Programme\WinAVR\lib\gcc\avr\4.1.2 und E:\Programme\WinAVR\lib\gcc\avr\3.4.6 Sind das die entspr. Library-Versionen (z.B. 3.4.6)? Und: Woraus kann ich überhaupt die installierte WINAVR-Version ersehen, wo finde ich diese Info (wird immer wieder gefragt&gebraucht)?
Andreas Paulin wrote: > E:\Programme\WinAVR\lib\gcc\avr\4.1.2 und > E:\Programme\WinAVR\lib\gcc\avr\3.4.6 > > Sind das die entspr. Library-Versionen (z.B. 3.4.6)? Ja, das klingt so. > Und: Woraus kann ich überhaupt die installierte WINAVR-Version ersehen, > wo finde ich diese Info (wird immer wieder gefragt&gebraucht)? Keine Ahnung, hab kein Windows (und damit kein WinAVR). Ist natürlich die Frage, welche der obigen Bibliotheken dein Compiler dann benutzt.
3.4.6 in meinem Fall. Ja, ich sehe schon: Immer besser 200 Byte unterm Limit bleiben. Habe jetzt nochmal 100 Byte freigeschaufelt und es läuft wieder. Das wars wohl... Danke Euch!
Nimm die 4.x, wenn du kannst. Die Gleitkommawandlung dort hat Dmitry Xmelkov komplett neu gezimmert, meine vorherige hat einen 80-Byte- Puffer auf dem Stack reserviert, da der Ergebnisstring erstmal rückwärts entstanden ist und anschließend gedreht werden musste.
OK, Jörg, danke für den Tip. Im Moment läufts wieder. Und sobald ich mit meinem Bluetooth aus den Gröbsten raus bin, werde ich die 4.x mal testen. Gruß Andi ~~~~
Probier mal sprintf_P (cString,PSTR("init Bluetooth")); Da kann man oft ne Menge RAM mit freischaufeln.
@Simoen: Aaaaaaaaaaaaaaaaaaaahja :-D @Holger: Stimmt. Kenne ich eigentlich, da habe ich vor Monaten schonmal enorm Platz geschaffen mit. Schon fast wieder vergessen...sollte ich mal wieder checken, da sind schon wieder massig standard-printfs drin (ohne_P). Danke vielmals!
@ Simon: ... und geht gleich gut:
1 | gcc version 4.1.2 (WinAVR 20070525) |
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.