Open Source im professionellen Einsatz
Linux-Magazin 12/2016
© psdesign1, Fotolia

© psdesign1, Fotolia

Kernel- und Treiberprogrammierung mit dem Linux-Kernel – Folge 89

Kern-Technik

,

Die Raspberry Pi Foundation sorgt dafür, dass auf der Version 3 ihres Minirechners ein 32-Bit-Linux startet – und das, obwohl der neue Raspberry eine reinrassige 64-Bit-CPU besitzt. Echte Linux-Kern-Techniker lässt die angezogene Handbremse nicht ruhen.

656

Als die Raspberry Pi Foundation Ende Februar 2016 das Model 3 ihres so erfolgreichen Minicomputers vorstellte, war die Freunde groß: Das neue Modell ist mit einer schnellen 64-Bit-ARMv8-CPU ausgestattet. Der Schwenk von 32-Bit- auf die 64-Bit-Betriebssysteme und -Anwendungen schien eingeleitet. Doch weit gefehlt: Zur großen Überraschung der meisten Raspi-Fans und -Entwickler reizt die neue 64-Bit-Hardware ihre Möglichkeiten überhaupt nicht aus und arbeitet rein 32-bittig (siehe Kasten "Die CPU des Raspberry Pi 3").

Die Zurückhaltung geht so weit, dass ein Raspberry Pi 3 im vorgesehenen 32-Bit-Modus vorgibt, eine ARMv7-Architektur zu besitzen, obwohl auf ihm ein ARMv8 sitzt (Abbildung 1): Egal ob in den Bootmeldungen oder ob in der Ausgabe von »cat /proc/cpuinfo« – Kernel und Betriebssystem geben sich als Teil der BCM2709-Familie aus, tatsächlich sind sie Mitglieder der BCM2710-Familie.

Mit etwas Abstand wird die technologische Verzagtheit der Raspberry Pi Foundation dennoch nachvollziehbar:

  • Der Raspberry Pi 3 ist mit 1 GByte RAM bestückt – zu wenig, um vom erweiterten Adressbereich des ARMv8 zu profitieren.
  • Spürbarer Gewinn an Performance durch 64-Bit-Instruktionen ist nicht zu erwarten.
  • Die neue CPU ist selbst im 32-Bit-Modus der ARMv7-Architektur des alten Raspberry Pi deutlich überlegen.
  • Das mit der neuen Architektur einhergehende Fertigungsverfahren erlaubt höhere Taktfrequenzen.

Der gravierende Vorteil des 32-Bit-Betriebs ergibt sich aus dem Umstand, dass die Besitzer der Platinen ihr vorhandenes Raspbian-Userland unverändert weiter verwenden dürfen.

Abbildung 1: Der Raspberry Pi 3 verleugnet seine moderne Architektur und tarnt sich als 32-Bit-SoC.

Die CPU des Raspberry Pi 3

Auf dem Raspberry Pi 3 sitzt als System on Chip ein Broadcom BCM2837, der zur Familie BCM2710 gehört. Es handelt sich um die Weiterentwicklung des BCM2836 (BCM2709) des Raspberry Pi 2, bei dem die ARMv7-CPU durch eine Quadcore-ARMv8-CPU vom Typ Cortex A 53 ersetzt wurde. Die CPU kann sowohl im 32-Bit- (AArch32) als auch im 64-Bit-Modus (AArch64) arbeiten, wobei der Raspi 3 als Default die 32-Bit-Variante wählt.

Hardwaretechnisch trumpft der Raspberry Pi mit einem Bluetooth- und einem WLAN-Modul auf. Allerdings ist der serienmäßige Bluetooth-Baustein mit dem ersten seriellen Port gekoppelt, sodass es bei Nutzung der seriellen Schnittstelle – zum Beispiel als Konsole – zu Kompatibilitätsproblemen kommt.

Die CPU verwendet einen modernisierten Befehlssatz, sie besitzt 31 64-Bit-Register statt der bisherigen 15 32-bittigen. Register 31 (Program Counter) liefert grundsätzlich Null beim Lesen. In der 64-Bit-Variante passieren Gleitkomma-Operationen grundsätzlich mit 128 Bit (Datentyp »long double« ). Des Weiteren unterstützt die CPU standardmäßig ARMs Multimedia- und Signalverarbeitungs-Erweiterung Neon, eine 128-Bit-SMID-Architektur (Single Instruction, Multiple Data). Zudem verarbeitet der Prozessor diverse Verschlüsselungsalgorithmen (AES, SHA-1, SHA-256) direkt im Silizium.

Technik muss begeistern

Auch wenn die 64 Bit beim Raspi 3 bestenfalls marginale Geschwindigkeitsvorteile bringen, kann es den Technik-begeisterten Linux-Entwickler nicht auf Dauer zufriedenstellen, bei den Hardwaremeldungen einen Wolf im Schafspelz zu halten und einen 64-Bit-Controller mit 32 Bit zu langweilen. Daher haben sich direkt nach Veröffentlichung des Raspberry Pi 3 Entwickler daran gemacht, den 64-Bit-Betrieb zu ermöglichen. Dazu mussten sie an der Firmware, am Kernel und am Userland Hand anlegen.

Die Firmware muss den Controller des Raspberry Pi 3 nämlich direkt beim Booten in den 64-Bit-Modus schalten. Immerhin sieht die Board-eigene Firmware das bereits vor. Dazu ist in der Datei »config.txt« auf der Bootpartition die Variable »arm-control« auf »0x200« zu setzen, wie diese Kern-Technik es später auch tun wird. Inzwischen soll eine neue Firmware sogar in der Lage sein, aus eigener Kraft einen 64-Bit-Kernel zu laden. Das haben die Kern-Technik-Autoren jedoch nicht ausprobiert.

Das U-Boot lädt nach

Der vorgeschlagene Weg besteht in der Verwendung der leistungsfähigen Bootsoftware "Das U-Boot", welche die Standardfirmware anstelle eines Linux-Kernels lädt. Nötig ist die 64-Bit-Version von U-Boot, die das neue Bootkommando »booti« kennt. Booti hilft einen 64-Bit-ARM-Kernel zu laden, der einen spezifischen Header hat. Die Details nachzulesen gibt es in der Kerneldokumentation »Documentation/arm64/booting.txt« [1]. Mit diesem Header und noch anderen, von Linux festgelegten Randbedingungen, muss der Bootloader entsprechend umgehen können.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Kern-Technik

    In Hardware implementierte Performance-Zähler sind nicht nur bei x86-Prozessoren gängig, sondern auch in ARM-CPUs. Der Raspberry Pi eignet sich hierfür als – etwas störrisches – Testobjekt.

  • Kern-Technik

    Die wirklich große Vielfalt der ARM-Hardware stellt Kernelentwickler und Linux-Anwender vor große Herausforderungen. Device Trees und das neue Pincontrol-Subsystem sollen die Probleme lösen.

  • Kern-Technik

    Mit dem flexiblen Bootloader U-Boot, einem Tftp-Server, angepasstem Kernel und Userland sowie etwas Konfiguration booten eingebettete Systeme wie der Raspberry Pi vom Netz.

  • Hummingboard

    Mit Quadcore-Power, mehr Speicher und schnelleren Interfaces richtet sich das Hummingboard an Raspberry-Pi-Besitzer, die mit einem Aufstieg liebäugeln. Auf weitgehende Kompatibilität der Schnittstellen haben die Macher geachtet, doch der Teufel steckt, wie so oft, auch hier im Detail.

  • Kern-Technik

    In Device Trees lagern Hardware-Spezifikationen, damit die Treiber beim Booten erfahren, worum sie sich kümmern müssen. Wegen der Aufsteckboards für Raspberry und Co. legen die Entwickler nun dynamische Device Trees nach, die lange nach dem Booten Peripherie-Neuankömmlinge willkommen heißen.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.