Speicherproblem wegen Bytearray's

Gast #26050
Lesenswert?
• ▲
▼
Hallo
Ich habe in meinem Projekt recht viele Strings die alle eine  große 
Anzahl Zeichen besitzen.Ich habe ein paar Bytearrays bereitgestellt.
char eins[60];
char zwei[100];
      .
      .
      .
Nun ist bei meinem 8535 der RAM recht voll.Gibt es ne möglichkeit die 
Zeichenketten z.B. im EEPROM abzulegen?Die Zeichen empfange ich von der 
UART über den RX int.
Gruß Helge
Gast #26051
Lesenswert?
• ▲
▼
Dürfte schlecht möglich sein, da das EEPROM recht langsam ist und nur 
100.000 Schreibzyklen garantiert werden. Wenn du den 8535 nicht gerade 
als PLCC einsetzt wäre wohl ein Umstieg auf MEGA16 1K SRAM oder MEGA323 
/ 32 2K SRAM angesagt.
#26053
Lesenswert?
• ▲
▼
Werden denn wirklich alle diese großen Arrays ständig oder gleichzeitig 
benötigt ?

Ein Vorteil eine Compilers gegenüber Assembler ist doch, daß er Speicher 
überlagern kann. D.h. Funktionen, die nie gleichzeitig ausgeführt 
werden, wird automatisch vom Linker der gleiche Speicher zugeteilt.

Deshalb soll man ja auch so wenig wie möglich globale oder static 
Variablen verwenden.


Vielleicht kannst Du ja Deine Aufgabe näher beschreiben und es findet 
sich dann eine wesentlich effektivere Lösung.


Peter
Gast #26054
Lesenswert?
• ▲
▼
Ich muß es noch mal ausprobieren ob ich den selben String nutzen 
kann.Zur Zeit sieht das ganze so aus:

char string[150]
char text[150]
char rx_buffer[80]

- ich empfange über den UART int zeichen (PDU)die im rx_buffer landen
- kopiere sie dann nach "string"
- wandle sie dann um und schreibe sie in "text"
vielleicht ist es ja möglich sie wieder in string zurück zu schreiben 
(versuche ich mal)
ansonsten sind schon 3 Zeichenketten belegt
Auch der rx_buffer scheint mir etwas zu groß.Weiß aber keine andere 
Lösung.Funktionieren tut das ganze jedenfalls so.

gruß helge
#26055
Lesenswert?
• ▲
▼
Warum brauchst Du denn 3 Puffer ?
Kannst Du den String nicht direkt im rx_buffer bearbeiten ?
Ich mache das meistens so.

Und wenn der Ausgabestring größer als der Eingabestring sein muß, 
kopiert man erst den Eingabestring um diese Differenz weiter ans Ende. 
Bzw. man läßt gleich beim Empfang am Anfang den nötigen Platz frei.


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.