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

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