Speichergrenzen beim ARM9 mit GCC

OP #1332660
Lesenswert?

Guten Abend miteinander

Ich habe folgende Union
1
union sdo_message_head
2
  {
3
    unsigned long int value;
4
    struct message_head
5
      {
6
        unsigned char command;
7
        unsigned short index;
8
        unsigned char sub_index;
9
      }message_head;
10
  }static sdo_message_head;

nun ist meine Frage, ob die Union, die innerhalb der 32bit Grenzen des 
ARM9 liegen dürfte, dort liegt und ob ich auf den short zugreifen könnte 
obwohl der über die 16bit Grenze liegen dürfte.

Ich weiß das ich die Structur geschickter legen könnte, aber ich wollte 
mir weitere Zuweisungen nach Möglichkeit sparen.

Ich benutze einen AT91SAM9263 mit dem GCC zusammen.

Vielen Dank im Vorraus für eure Antworten

Mit freundlichen Grüßen
Stefan Kunz
#1332710
Lesenswert?

Was dabei wahrscheinlich rauskommt:

[...]
struct message_head
{
        unsigned char command;
        char filler;
        unsigned short index;
        unsigned char sub_index;
} message_head;
[...]

Es sei denn du bringt dem Compiler bei, dass er diese struct ohne 
Alignment packen soll. Nur ist der Zugriff dann weniger effizient.
OP #1332718
Lesenswert?

Ja das war meine Frage. Hast du ungefähre Werte wie ineffizent der 
zugriff über das packed attribut wäre? Weil Ansonsten müßte ich einen 
32bit Wert erst in diese 3 Bestandteile aufdröseln verarbeiten und dann 
wieder zusammen schreiben müßte. An sich kein Problem, die andere Lösung 
wäre aber halt "eleganter".

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