msp430 packed structs

Gast #702903
Lesenswert?
• ▲
▼
Hallo,

wenn ich beim MSP430-gcc eine struct mit _attribute_ ((packed)) 
definiere, kann ich auf Wörter die an ungeraden Speicherstellen liegen 
nicht zugreifen.
Ist das ein bug im Compiler? - Gibt es einen workaround?
Ich muss für ein Protokoll ständig Buffer auf eine solche Struct casten 
um dann einzelne Werte auszulesen. Sowohl auf meinem PC als auch auf 
einem testweise zu Hilfe gezogenem LPC2148 funktioniert der Code 
tadellos...

Grüße,
Heiko
Gast #702933
Lesenswert?
• ▲
▼
Ok. Kann ich denn Byteweise auf die ungeraden Speicherstellen zugreifen 
und mir die Wörter selbst zusammenbauen.

Also ungefähr so:

/*Hilfskonstrukt für msp430 der nur auf gerade wörter zugreifen kann*/
uint8 *hlp = (uint8*) &entry->filesize;
res->filesize = (((uint32)(*(hlp+3)))<<24) + (((uint32)(*(hlp+2))<<16)) 
+ (((uint32)(*(hlp+1))<<8)) +(uint32)*(hlp) ;

wobei entry->filesize an einer ungeraden Speicherstelle liegt und ein 
unsigned long ist.

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.