Embedded Systems und Firmware
Worauf ist zu achten, wenn Peripherieregister in C mit einer Struktur aus Bitfeldern dargestellt werden?
- AMit Bitfeldern wird das Programm stets doppelt so schnell
- BDie Bitreihenfolge von Bitfeldern darf je nach Compiler verschieden sein, sodass mit einem anderen Compiler unbeabsichtigt andere Bits bearbeitet werden können
- CBitfelder können keine Werte mit 8 Bit oder mehr darstellen
Antwort und Erläuterung anzeigen
Antwort: B. Die Bitreihenfolge von Bitfeldern darf je nach Compiler verschieden sein, sodass mit einem anderen Compiler unbeabsichtigt andere Bits bearbeitet werden können
Bitfelder sind gut lesbar, doch im C-Standard bleibt der Implementierung überlassen, ob Bits in einer Struktur von oben oder von unten angeordnet werden, wie Felder über Grenzen hinweg behandelt werden und wie breit der Zugriff ist. Daher kann Code, der mit einem Compiler korrekt läuft, mit einem anderen Compiler oder einer anderen CPU andere Bits lesen oder schreiben. Von Mikrocontroller-Herstellern bereitgestellte Header sind häufig mit Masken und Shifts geschrieben.