avr32 große Datenstruktur speichern

Gast #2983764
Lesenswert?
• ▲
▼
Hallo zusammen,

ich hab ein Problem beim Speichern von großen Datenmengen, bzw. ich weiß 
noch nicht wie ich diese sinnvoll in meinem SRAM speichern soll.

Die Daten bestehen aus Schritten die sequenziell abgearbeitet werden 
müssen.
Z.B.:


Schritte
ID  Schritt-Type  Schritt
0   Ausgebe       Zeiger auf Ausgebe[0]
1   Empfangen     Zeiger auf Empfangen[0]
2   Ausgebe       Zeiger auf Ausgebe[1]
.
.



Ausgabe
ID  Länge  Daten[256]
0   16     0x11, 0x22
1   256    0x11; …...........
.
.


Empfangen
ID  Länge  Variable
0   1      Zeiger auf eine Variable
.
.


Eigentlich sind das einige große Tabellen die miteinander verknüpft 
sind. Die Frage ist wie ich diese Datenstruktur in meinem AVR32 
speichern kann.

Hat vielleicht jemand eine Idee?
Gast #2983867
Lesenswert?
• ▲
▼
typedef  struct {
  U8        ID;
  U8        SchrittType;
  struct    (*Schritt);     <== Zeiger auf ein unbekanntes struct
} schritte;



typedef  struct {
  U8        ID;
  U16       laenge;
  U8        data[256];
} ausgabe;

Ich hab ein Problem wie ich ein Zeiger auf ein unbekanntes struct setze.
#2983938
Lesenswert?
• ▲
▼
Vielleicht suchst Du sowas?
1
typedef struct {
2
  U8        ID;
3
  U16       laenge;
4
  U8        data[256];
5
} ausgabe_t;
6

7
typedef struct {
8
  ...
9
} eingabe_t;
10

11
typedef union {
12
  ausgabe_t ausgabe;
13
  eingabe_t eingabe;
14
} aktion_t;
15

16
typedef struct {
17
  U8        ID;
18
  U8        SchrittType;
19
  aktion_t  *Aktion;
20
} schritt_t;

Geschickter wäre allerdings in ausgabe_t nur einen Zeiger auf die Daten 
zu speichern. Sonst benötigt jeder Schritt über 256 Byte im RAM. Dann 
brauchst Du auch keine Union, weil ausgabe_t und eingabe_t die gleichen 
Elemente enthalten:
1
typedef struct {
2
  U8        ID;
3
  U16       laenge;
4
  U8        *data;
5
} aktion_t;

oder wenn es sein muss:
1
typedef struct {
2
  U8        ID;
3
  U16       laenge;
4
  void      *data;
5
} aktion_t;
Gast #2992985
Lesenswert?
• ▲
▼
kann man vielleicht in der union auch mit Zeigern arbeiten? um die 
Datenmenge im RAM noch mehr zu reduzieren.


und wie definiere ich am besten diese Struktur

schritt_t viele_Schritte[100];
aktion_t aktionen[100];
ausgabe_t ausgabe[100];

ich weiß zum Anfang nicht was und wieviel Schritte ich haben werde.

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.