Embedded Systems und Firmware

Worauf ist zu achten, wenn Peripherieregister in C mit einer Struktur aus Bitfeldern dargestellt werden?

  1. AMit Bitfeldern wird das Programm stets doppelt so schnell
  2. BDie Bitreihenfolge von Bitfeldern darf je nach Compiler verschieden sein, sodass mit einem anderen Compiler unbeabsichtigt andere Bits bearbeitet werden können
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Embedded Systems und Firmware

  1. Welchen Vorteil hat es bei vielen Mikrocontrollern, große unveränderliche Tabellen (z. B. Schriftdaten) mit const zu deklarieren?
  2. Was lässt sich mit Debug-Schnittstellen wie JTAG und SWD tun?
  3. Eine bestimmte Regelberechnung soll alle 1 ms ausgeführt werden. Welche Implementierung auf einem Mikrocontroller ohne Betriebssystem ist am besten geeignet?
  4. Welche Aufgabe hat die Brown-out-Erkennung (BOD, Brown-out-Reset) eines Mikrocontrollers?
  5. Bei einem Mikrocontroller mit Interrupt-Prioritäten tritt während der Ausführung des Handlers eines Interrupts niedriger Priorität ein Interrupt hoher Priorität auf. Was geschieht im Allgemeinen (bei erlaubter Interrupt-Verschachtelung)?

Vergleiche zu diesem Thema