hi, ich versuche gerade eine variable (ein struct) in einem speicherblock in einem flash speicher abzulegen. ich habe dazu eine fertige bibliothek die sich um den großteil kümmert, d.h. ich muss z.b. nur auf einen vordefinierten ram-block meine zu speichernden daten schreiben und dann die write-funktion aufrufen, dadurch wird der ram-block automatisch in den flash geschrieben. oder wenn ich die read-funktion aufrufe wird automatisch der vordefinierte teil vom flash ausgelesen und in meinen ram-block geschrieben. kann ich hier überhaupt das komplette struct übergeben (in den flash-block speichern) so dass ich beim lesen des gleichen flash-blocks wieder das genau gleiche struct bekomme (stichwort struct alignment)? d.h. beim speichern würde ich einfach per memcpy() das komplette struct auf den ram-block kopieren (z.b. memcpy(&ramblock, &my_struct, sizeof(my_stuct)) und dann die write-funktion aufrufen. kann ich dann auch später die daten einfach wieder so in ein gleiches struct auslesen? (z.b. per memcpy(&my_struct_read, &ramblock, sizeof(ramblock)) oder bekomme ich da ein problem mit dem struct alignement (padding)? oder ist das dann egal weil ich eh das struct samt padding in den flash-speicher kopiere und auch den gleichen speicher wieder samt padding beim lesen rauskopiere? also: muss mich in diesem fall das struct alignement bzw padding überhaupt interessieren?
markus schrieb: > also: muss mich in diesem fall das struct alignement bzw padding > überhaupt interessieren? Nein. Deine struct ist einefach nur eine Speicherfläche, die du in diesem Fall als ganzes ansprichst. Die Größe dieses Speicherbereichs bekommst du mittels sizeof. Mehr brauchst du dann nicht. > ich muss z.b. nur auf einen vordefinierten ram-block meine zu speichernden > daten schreiben und dann die write-funktion aufrufen Wer macht denn sowas? Das ist wegen funktionalem Design-Fehler einmal umkopieren zuviel, mit der möglichen Option eines Überschreibfehlers, wenn dieser Ram-Block nicht groß genug ist. Warum kann sich die Schreibe Funktion die Bytes nicht direkt von deiner struct holen? So ist das doch Murks.
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.