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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren