Hallo an alle,
ich schreibe gerade einen TCP/IP Stack für einen ARM. Ich benutze die
Keil MDK in Version 3.5. Die Daten werden dabei mit Strukturen
verwaltet.
1 | typedef __packed struct
|
2 | {
|
3 | uint16_t srcPort;
|
4 | uint16_t dstPort;
|
5 | uint32_t seq;
|
6 | uint32_t ack;
|
7 | uint16 headerlen : 4;
|
8 | uint16 res : 6;
|
9 | uint16 flags : 6;
|
10 | uint16_t windowSize;
|
11 | uint16_t checksum;
|
12 | uint16_t urgentPtr;
|
13 | }
|
14 | TCP_Header
|
Die Daten bis zum Bitfeld stimmen. Auch die Variablen danach haben die
richtigen Werte. Nur die Variablen des Bitfeldes stimmen nicht. Daher
vermute ich ein Alignment Problem.
So sollte es ausschen:
1 | uint16_t 0x7002
|
2 |
|
3 | .headerlen = 7
|
4 | .res = 0
|
5 | .flags = 2
|
Leider stimmen die Werte nicht. Wie kann ich Keil sagen, das Alignment
anzupassen?
Danke im Voraus
lg Martin