mikrocontroller.net

Forum: Compiler & IDEs Speichergrenzen beim ARM9 mit GCC


Autor: Stefan Kunz (syliosha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend miteinander

Ich habe folgende Union
union sdo_message_head
  {
    unsigned long int value;
    struct message_head
      {
        unsigned char command;
        unsigned short index;
        unsigned char sub_index;
      }message_head;
  }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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst Du so?

unsigned long int value | 32 Bit
unsigned char command   |  8 Bit
unsigned short index    | 16 Bit
unsigned char sub_index |  8 Bit

(kenne jetzt den ARM9 nicht, ist mehr oder weniger geraten)

Autor: Stefan Kunz (syliosha)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.