>Verschiebung insoweit, als die Werte des arrays eth_buffer in der
>structur ab ->ARP_SIPAddr nicht mehr stimmen. Die Felder sind um 1
>verschoben. Ich vermute, dass die Null in der IP-adresse (192.168.0.146)
>den structur-wert verändert.
Nein. Der Inhalt ist nicht entscheidend. Vielmehr sind der AVR und ARM
Prozessoren, die am schnellsten auf 8/16 Bit (AVR) bzw. 32 Bit (ARM)
zugreifen können. Daher ordnen Compiler die Strukturmitglieder, soweit
möglich auf entsprechenden Grenzen (im Falle des ARM auf vielfachen von
32 Bit) anzuordnen. Strukturen aber, die ursprünglich auf auf AVR
zugeschnitten wurde und nicht das pragma pack verwendet, wird auf dem
ARM Lücken enthalten, damit der günstige 32-Bit Zugriff erhalten bleibt.
Das Problem ist insbesondere das in C die lückenlose Anordnung nicht
zugesichert ist. Deswegen gibt es das pragma. Lies am besten mal
gründlich über Strukturen im C99 Standard nach und guck Dir die
entsprechenden Abschnitte in den Compilerdokumentationen an. Es lohnt
sich.