Hi ich hab da den Verdacht das mir der RAM zu klein wird, da ab jetzt mein Programm nicht mehr ganz korrekt läuft wenn ich mir neue Variablen oder aufwendige Funktionen hinzufüge. Ich benutze ein 64K * 16 SRAM, aber aufgrund der Decodierung verwenden ich nur 2K vom RAM. Jetzt die Frage wie viel sind 2K im Verhältnis? Ist das in den meisten Fällen mehr als genug oder kanns da schon mal schnell passieren dass der Speicher voll wird und das Programm verückt spielt?? mfg Max
Ich hab den Verdacht, das der meiste Teil der Informationen nicht mehr in den Speicher gepasst hat XD
Max schrieb: > Ist das in den meisten Fällen mehr als genug oder kanns da schon mal > schnell passieren dass der Speicher voll wird und das Programm verückt > spielt?? Ja. Sowohl als auch! Genaueres kann man mit den gegebenen Informationen nicht sagen.
Es genuegt, wenn eine Variable nicht passt. Der Compiler schaut allerding ob die statischen Variablem passen. Lass mich raten : - Stack war nie ein Thema, es werden mehrere Verschachtelungen aufgerufen - Es werden Funktionen mit grosszuegigen Variablenuebergaben aufgerufen - Du hast dynamische Variablen auf dem Heap. Ich persoenlich vermeide das Letztere, sowas gibt es bei mir nicht.
Sry dachte auf dei Frage ob 2K * 16 viel Speicher sind braucht man nicht mehr Infos. Ich verwenden einen Intel 80C196 Typ-KC mit 20 MHz mit einem Tasking Compiler V6. Ich programmiere in der Tasking EDE. Mit dabei ist auch ein VPC3+C (Profibus ASIC) mit einem Programm der von Profichip (enthält einiges an dynamischer Speicherverwaltung müsst aber alles über den eigenen RAM des VPCs gehen). Wenn noch was an Infos abgeht bitte nachfragen. mfg Max
Meine Funktionen sind eigentlich nicht wirklich Verschachtelt und Übergabeparameter habe ich eigentlich auch kaum welche. Wie es mit der Verschachtelung in der VPC-Software aussieht kann ich nicht wirklich was darüber sagen.
Max schrieb: > Ich verwenden einen Intel 80C196 Typ-KC mit 20 MHz mit einem Tasking > Compiler V6. Ich programmiere in der Tasking EDE. Da sind 2K Speicher nicht viel. Egal jetzt, ob es 2K Worte oder 2K Bytes sind. Was sagt dir der Mapper Report des Linkers? Was ist mit dem restlichen RAM? Warum kommst du da nicht ran?
Max schrieb: > wenn ich mir neue Variablen > oder aufwendige Funktionen hinzufüge. Du hast Dir Deine Frage doch schon selbst beantwortet.
Wie sieht denn die Schaltung aus? Hast Du die unbenutzten Adressbits des SRAMs vielleicht einfach nicht angeschlossen?
Lothar M. schrieb: > Was sagt dir der Mapper Report des Linkers? Wo finde ich den? > Was ist mit dem restlichen RAM? Warum kommst du da nicht ran? Ist eine etwas ältere Platine die immer mehr gewachsen ist und da nie mehr RAM gebraucht wurde hat man es dabei gelassen. Thomas E. schrieb: > Wie sieht denn die Schaltung aus? Hast Du die unbenutzten > Adressbits des > SRAMs vielleicht einfach nicht angeschlossen? Es sind 5 Addressleitungen des RAMs fix auf GND geschlossen. ------------------------------------------------------------- Also müsste es wieder besser Funktionieren wenn ich die Decodierung Ändere und dem RAM ein oder zwei Adressleitungen mehr gönne?
Max schrieb: > Also müsste es wieder besser Funktionieren wenn ich die Decodierung > Ändere und dem RAM ein oder zwei Adressleitungen mehr gönne? Im Prinzip ja, aber nur, wenn der Linker damit was anfangen kann...
Lothar M. schrieb: > Max schrieb: >> Also müsste es wieder besser Funktionieren wenn ich die Decodierung >> Ändere und dem RAM ein oder zwei Adressleitungen mehr gönne? > Im Prinzip ja, aber nur, wenn der Linker damit was anfangen kann... Ich kann ja meine RAM und ROM Bereiche im Linker einstellen.
Ich setz mich dann mal zur Decodierung und hoffe dass es dann Funktioniert. Danke für eure Hilfe mfg Max
Max schrieb: > Ich kann ja meine RAM und ROM Bereiche im Linker einstellen. Und dann lies gleich noch in der Doku zum Linker wie du ihm den Map-Report herauskitzeln kanst...
Max schrieb: > Jetzt die Frage wie viel sind 2K im Verhältnis? Im Verhältnis zu was? Der eine Programmierer bastelt mit den 256Byte des 80C52 super komplexe Anwendungen, der andere meckert, wenn er "nur" 64kByte bekommt. Meistens muß man nicht alles in double oder long long rechnen und kann benötigte Arraygrößen recht genau bestimmen. Auch globale Variablen braucht man nur selten.
> Auch globale Variablen braucht man nur selten.
Ich verwend ausschliesslich globale Variablen, allerdings nur mit
definiert lokalisiertem Zugriff.
Ich verwende im Programm leider schon sehr viele Globale Variablen, aber ich wüsste auch nicht wie ich es sonst machen sollte. :)
@ Max (Gast) >Ich verwende im Programm leider schon sehr viele Globale Variablen, aber >ich wüsste auch nicht wie ich es sonst machen sollte. :) So wie der Rest der Welt? So wenig wie möglich globale Variablen, so viel wie möglich lokale Variablen und Funktionsparameter.
> So wie der Rest der Welt? So wenig wie möglich globale Variablen, so
viel wie möglich lokale Variablen und Funktionsparameter.
Nee, das waer dann ja alles auf dem Stack. Die besagte Regel gilt fuer
PC Programme.
@ Oh Doch (jetztnicht) >> So wie der Rest der Welt? So wenig wie möglich globale Variablen, so >viel wie möglich lokale Variablen und Funktionsparameter. >Nee, das waer dann ja alles auf dem Stack. Nö. Nur in dem Moment, wenn Funktionen arbeiten. >Die besagte Regel gilt fuer PC Programme. Nö, das gilt, wenn gleich in etwas angepasster Form, auch für uCs.
Oh D. schrieb: > Ich verwend ausschliesslich globale Variablen, allerdings nur mit > definiert lokalisiertem Zugriff. Das glaube ich, ehrlich gesagt, nicht. Wie Falk schon schrieb sollte man allgemein auch auf µCs so wenig wie möglich globale Variablen benutzen und das ist eigentlich auch immer möglich. Ausnahmen bestätigen die Regel ;)
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.