Hallo, ich verwende einen AT90CAN128, und bekomme seltsame Fehler beim verhalten des Programms, kann es sein das mein Speicher schon zu voll ist? Folgende Info bekomme ich beim kompilieren: text data bss dec hex 24436 538 1762 26736 6870 Über einen Tip wie ich dies zu interpretieren habe, wäre ich dankbar... :-)
Hallo, > Folgende Info bekomme ich beim kompilieren: > > text data bss dec hex > 24436 538 1762 26736 6870 | | | | | +-- uninitialisierte Variablen | +--- initialisierte Variablen +--- Code, PROGMEM und __flash Dein Programm belegt also derzeit 24436 Bytes Flash, sowie statisch 2300 Bytes (538+1762) im RAM. Das ergibt 26736 Bytes insgesamt, oder 0x6870 Bytes in hexadezimaler Schreibweise. Die Zahl für den Flash ist vertrauenswürdig. Beim RAM kommt noch der dynamische Verbrauch (Stack und Heap) dazu. Lokale Variablen und Rücksprungadressen landen auf dem Stack, der Heap wird mit Funktionen wie malloc() oder brk() verwaltet. Wieviel RAM hat der Controller? Gruß, Svenska
Hallo Daniela Was die Compiler- oder viel mehr die Linker-Information bedeutet hat Svenska bereits erklärt. Die Grösse Deines Programmes ist kein Problem, sonst würdest du es schon gar nicht auf den uC rauf bringen. Ob Dir zur Laufzeit der Speicher (RAM) ausgeht, lässt sich anhand dieser Informationen nicht sagen. Dazu müsste man das Laufzeitverhalten anhand des Codes analysieren. Nur so lässt sich sagen, wieviel Speicher nebst dem statisch allozieren Memory während der Ausführung dynamisch alloziert wird. Das folgende Beispiel würde schon mehr als Deinen gesamten Speicher aufbrauchen - egal wie gross der ist (dass das Programm niemals terminiert ist da noch das kleinere Problem).
1 | void bad_code() { |
2 | bad_code(); |
3 | } |
4 | |
5 | void main() { |
6 | bad_code(); |
7 | } |
Gruss Claude
Daniela schrieb: > seltsame Fehler Wie äußern sich diese Fehler? Hardware nach Datenblättern aufgebaut? (z.B. Abblockkondensatoren, AVCC beschaltet, etc.) Stromversorgung stabil und ausreichend dimensioniert?
Daniela schrieb: > Hallo, > ich verwende einen AT90CAN128, und bekomme seltsame Fehler beim > verhalten des Programms, kann es sein das mein Speicher schon zu voll > ist? > Folgende Info bekomme ich beim kompilieren: > > text data bss dec hex > 24436 538 1762 26736 6870 > > > Über einen Tip wie ich dies zu interpretieren habe, wäre ich dankbar... > :-) Speicher hat dein Controller genug. Viel interessanter wäre es zu wissen, ob am Ende "Build succeeded with 0 Warnings..." zu lesen ist. mfg.
Pete K. schrieb: > Wie äußern sich diese Fehler? Ich sende zyklisch eine CAN-Nachricht, außerdem warte Ich auf eine bestimmte CAN-Nachricht um eine LED einzuschalten. Obwohl diese Nachricht auf dem Bus liegt, geht die LED nicht an. Die zyklische Nachricht kommt zwar, aber mit dem falschen Inhalt. Wenn ich dann etwas ändere geht es plötzlich wieder. Wie gesagt, ein sehr komisches verhalten... :-( Vielleicht ist es der nicht ausrreichende bzw. überlaufende RAM? :-/ Wie kann ich da denn ansetzen???
Daniela schrieb: > Vielleicht ist es der nicht ausrreichende bzw. überlaufende RAM? Der AT90CAN128 hat aber ja 4kB RAM. Das sollte dann doch eigentlich ausreichen... Was würde mir noch RAM "klauen"?
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.