Speicher zu klein?

Gast #4671137
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
#4671163
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.
Gast #4671172
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
Gast #4671180
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.
Gast #4671202
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?
Gast #4671213
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.
#4671325
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.
#4671466
@ 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.
#4671648
@  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.
#4671733
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 ;)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.