Aktuelle Zeit: 12:17:03 19.05.2013

  • Deutsch (German)
  • English

Byteorder

Auf dem AVR wird Little-Endian-Byteorder verwendet, d.h. das niederwertige Byte liegt an niederer Speicheradresse. Nimmt man einen 32-Bit-Wert (4 Bytes), liegen die einzelnen Bytewerte in folgender Richtung im Speicher:

Speicher →
&h00 &h01 &h02 &h03
byte0 byte1 byte2 byte3

Bei Big-Endian-Byteorder liegen sie in umgedrehter Richtung:

Speicher →
&h00 &h01 &h02 &h03
byte3 byte2 byte1 byte0

Die Bit-Order eines Wertes ist jedoch beim AVR, Big-Endian. D.h. das Niederwertigste Bit steht an höherer Stelle im Speicher.

Beispiel anhand eines 8-Bit-Wertes:
7:6:5:4:3:2:1:0

Ein 16-Bit-Wert:
7:6:5:4:3:2:1:0: 15:14:13:12:11:10:9:8

Wichtiger Hinweis: Hexadezimal und dual (binär) geschriebene Werte (als Konstanten im Quelltext) sind in Big-Endian-Schreibweise standardisiert (sie sind damit besser für Menschen lesbar). Im Source werden sie automatisch korrekt umgesetzt. Die Zuweisung des hexadezimal geschriebenen Wortes „UNIX“ (&h554e4958) liegt daher rückwärts im Speicher aufgrund der Little-Endian-Byteorder:

Speicher →
&h00 &h01 &h02 &h03
&h58 &h49 &h4e &h55
„X“ „I“ „N“ „U“

Für die AVR-Controller hat Little-Endian-Byteorder gewisse Vorteile. Um eine Zwei-Byte-Zahl in eine 4-byte-Zahl zu wandeln, muss man nur zwei mit Null gefüllte Bytes am Ende einfügen, ohne das sich dabei die Adresse verändert. Bei Big-Endian-Byteorder muss der Wert zuvor um zwei Bytes im Speicher verschoben werden.

Siehe auch: Byte-Reihenfolge (Wikipedia)

Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 chimeric.de = chi`s home
(c) 2011 rgf software, all rights reserved