Raspberry Pi Compute Module 4
über
Von Mathias Claußen (Elektor)
Die Gerüchte kursieren schon seit einiger Zeit, doch jetzt gibt es den schlagenden Beweis für ein auf RPi4 basierendes Compute Module: Ein CM4 = Raspberry Pi Compute Module 4 liegt direkt vor mir. Beim CM bzw. Compute Module handelt es sich um ein abgespecktes RPi-Modul, das in andere Produkte integriert werden soll, die mehr Design-Flexibilität benötigen, als ein „normaler“ RPi bieten kann. Außerdem ermöglicht es die enge Integration kundenspezifischer Elektronik rund um das RPi-SOC (z.B. für industriellen Einsatz oder digitale Anzeigen). Die CMs mit den auf RPi Zero und RPi 3B(+) basierenden SoCs wurden im SO-DIMM-Formfaktor produziert und lassen sich daher wie RAM-Riegel einfach stecken. Diese Form bot zwar große Flexibilität, hatte aber auch einige Nachteile, da weder Ethernet noch ein USB-Hub integriert waren. Man musste diese Teile als Entwickler also bei Bedarf selbst hinzufügen. Außerdem gab es kein WLAN, was daher gegebenenfalls selbst auf der eigenen Basisplatine installiert werden musste und die Kosten erhöhte. Diese Einschränkungen disqualifizierten sowohl das CM1 als auch das CM3 für einige Anwendungen. Außerdem fehlten Hochgeschwindigkeitsschnittstellen, da beide Vorgänger-Module nur einen einzigen USB-2.0-Port hatten. Der Anschluss von Peripherie mit hoher Bandbreite oder niedriger Latenz war folglich nicht leicht möglich. Angesichts der Preise für CM1 und CM3 war für einige Projekte ein normaler RPi besser geeignet, da das bei diesen CMs Fehlende bereits auf den Boards mit dem Standard-Formfaktor installiert war. Insofern läutet das neue CM4 eine dramatische Wende zum Besseren ein, da viel Energie auf die Optimierung gegenüber seinen Vorgängern verwendet wurde.
Erster Blick auf die Platine
Die Bilder 1 und 2 geben einen ersten Eindruck von der Platine.
Das CM4 gibt es jetzt in 32 (!) Varianten. Man bekommt es mit WLAN oder ohne, mit 8/16/32 GB EMMC oder kein EMMC sowie mit 1/2/4 GB und sogar 8 GB RAM. Man kann nun die exakt zur Anwendung passende Variante auswählen. Im Kasten Spezifikationen finden Sie die Eigenschaften, die mit denen des RPi4 identisch sind.
Bild 3 zeigt die Bestückung eines CM4 mit WLAN, aber ohne EMMC.
Auf der linken Seite befindet sich der für die komplette Stromversorgung des CM4 zuständige PMIC (Bild 4).
Direkt darüber sieht man das WLAN-Modul, das den Betrieb mit 5 GHz und 2,4 GHz unterstützt und zudem Bluetooth integriert hat. In der Mitte (Bild 5) befindet sich das SoC BCM2711.
Dieses zentrale Bauteil bietet vier Cortex-A72-Kerne. Oben rechts (Bild 6) steckt mit dem BCM54210PE eine 1000Base-T Ethernet-Elektronik samt IEEE1588-2008-Unterstützung für präzises Timing. Eine eigene Basisplatine benötigt also lediglich noch einen MagJack, um volle Ethernet-Unterstützung zu realisieren (etwas zusätzlicher ESD-Schutz wäre ebenfalls wünschenswert).
Auf der rechten Seite (Bild 7) ist das RAM-Modul und darüber noch ein kleiner Flash-Chip für grundlegende Boot-Informationen zu sehen.
Auf der Unterseite der Platine (Bild 2) sind die üblichen Kondensatoren und Oszillatoren zu sehen. Oben und unten an den Längsseiten sind zwei 100-polige Hirose-Stecker angebracht, die zur Befestigung des CM4 auf einer Basisplatine gedacht sind. Dies ist eine wichtige Änderung gegenüber den früheren CMs. Auf der einen Seite des Steckverbinders sind alle Spannungen und Signale mit niedrigen Geschwindigkeiten angeschlossen; die andere Seite führt alle Hochgeschwindigkeitssignale, was das Routing der Basisplatine vereinfacht. Für die Stromversorgung braucht das CM4 lediglich 5 V, denn der integrierte DC/DC-Wandler erzeugt alle für das CM4 erforderlichen Spannungen.
Weitere Informationen finden Sie im Kasten Spezifikationen. Die USB-3.0-Schnittstelle des RPi4B ist nicht aufgeführt – dafür gibt es einen guten Grund. Beim RPi 4B war ein USB-3.0-Controller über eine PCIe-2.0 Single-Lane-Verbindung an den BCM2711 angeschlossen. Diese Schaltung ist nicht im CM4 enthalten, weshalb die PCIe-Lane für den eigenen Gebrauch zur Verfügung steht. Dies schafft neue Möglichkeiten für den Einsatz eines RPi auch dort, wo das bisher nicht denkbar war. Im nächsten Abschnitt geht es darum, wie man mit dem CM4 loslegt und wie man eigene Projekte angeht.
I/O-Board für das CM4
Für erste Experimente mit dem CM4 hat die Raspberry Pi Foundation auch ein I/O-Board (Bild 8) entwickelt, das alle schönen Eigenschaften des CM4 zugänglich macht und auch einen PCIe-1x-Steckplatz beherbergt.
Das Board bietet mehr Konnektivität als die anderen RPi4-Produkte. Dazu gehören zwei Kameraeingänge (CSI-2-Schnittstelle mit zwei oder vier Kanälen, siehe Bild 9) und zwei Display-Anschlüsse (DSI mit zwei oder vier Kanälen, siehe Bild 10).
Mehrere Monitore und computergestützte Bildverarbeitung sind also kein Problem. Möchten Sie eine Maus und eine Tastatur anschließen? Der interne USB-2.0-Anschluss des CM4 wurde durch einen USB 2.0-Hub auf dem I/O-Board ergänzt, sodass damit vier USB-2.0-Anschlüsse zur Verfügung stehen (Bild 11).
Das I/O-Board enthält auch ein RTC-Modul, das als Watchdog oder zum Booten des Systems in vorgegebenen Intervallen verwendet werden kann.
Für die Stromversorgung benötigt das Board nur ein ausreichend dimensioniertes 12-V-Netzteil, wenn man PCIe-Karten verwendet. Wenn der PCIe-Steckplatz nicht verwendet wird, kann das Board mit bis zu 26 V versorgt werden. Eine willkommene Entscheidung betrifft die beiden HDMI-Ports normaler Größe auf dem I/O-Board. Man kann jetzt einfach die üblichen HDMI-Kabel verwenden (Bild 12).
Schließlich gibt es auch noch einen LAN-Port und einen Steckplatz für microSD-Karten. Was das I/O-Board besonders interessant macht, sind die frei zugänglichen KiCad-Dateien. Sie erlauben einen schnellen Start in eigene Projekte, wenn man KiCad verwendet. Das CM4 wird hier einfach als „Bauteil“ hinzugefügt und kann so ohne eigene umständliche Designarbeit in KiCad zu eigenen Boards und Projekten hinzugefügt werden (Bild 13).
Nur ein 3D-Modell fehlt.
Teile kombinieren
Wenn Sie das CM4 einsetzen wollen, ist das I/O-Board eine tolle Ergänzung, da es alle Schnittstellen auf eine angenehme und brauchbare Art zugänglich macht und zudem die Nutzung eines PCIe-Steckplatzes ermöglicht. Der Einstieg ist so einfach wie bei einem gewöhnlichen RPi4: Man schiebe ein geeignetes OS-Image auf eine SD-Karte und boote von dieser. Wenn eine Maus und eine Tastatur angeschlossen sind, werden sie – anders als beim RPi4 – weder angezeigt noch funktionieren sie. Wenn man USB-Ports für Peripherie verwenden möchte, muss man eine Zeile in der Datei config.txt hinzufügen, die sich in der BOOT-Partition der SD-Karte befindet. Fügt man am Ende von config.txt die Zeile dtoverlay=dwc2,dr_mode=host hinzu, dann werden die USB-Ports beim nächsten Booten aktiviert.
Dank des PCIe-1x-Steckplatzes ist die Verwendung entsprechender Karten kein Problem – man muss lediglich daran denken, dass diese Karten eine Versorgung mit 12 V und ausreichender Belastbarkeit benötigen. Die Spezifikation von PCI Express erlaubt den Betrieb von Karten, die für 4x-, 8x- oder 16x-Steckplätze ausgelegt sind, auch mit weniger Lanes. Prinzipiell sollten sie daher auch in 1x-Steckplätzen funktionieren. Aufgrund mechanischer Einschränkungen kann man aber eine solche Karte nicht direkt auf das I/O-Board stecken.
Interessanterweise ist dieses Problem beim Hype um GPU-basiertes Crypto Mining auch bei modernen PC-Systemen aufgetreten. Folglich wurden schon passende Lösungen entwickelt. Eine geeignete Adapterkarte mit eigener Stromversorgung kann für weniger als 10 $ erworben (Bild 14) und an die I/O-Karte angeschlossen werden.
Nachdem das CM4 gebootet hat und Linux läuft, ist mit lspci ein kurzer Blick auf die erkannten PCIe-Karten möglich. Wie man in Bild 15 sehen kann, ist eine Intel Dual-Port-Netzwerkkarte angeschlossen.
Hierfür gibt es einen funktionierenden Linux-Treiber und der sollte dem CM4 zusätzliche Netzwerkports hinzufügen. Die Ausgabe von lspci sieht zunächst vielversprechend aus: Die Karte wird erkannt, aber es ist kein Treiber geladen. Der Grund dafür ist ganz einfach: Der Standard-Kernel des Raspberry Pi OS hat nur Treiber eingebaut, die für den täglichen Gebrauch benötigt werden.
Fragen Sie sich, ob man auf diese Weise auch eine PCIe-Grafikkarte anschließen könnte? Der Anschluss ist zwar möglich, aber die Sache wird trotzdem nicht funktionieren, wie Sie im Video sehen können. Damit ein Ethernet-Controller und andere PCIe-Geräte wie etwa SATA-Karten funktionieren, muss den RPI4-Kernel neu kompiliert werden. Da es sich „nur“ um ein Software-Problem handelt, ist es prinzipiell lösbar. Leider ist es zurzeit noch nicht möglich, einen neuen Kernel für den Basistreiber zu erstellen. Software, Kernel-Builds und Treiber sind ein separates Thema, das in der Zukunft behandelt werden soll. Außerdem spielen einige PCIe-Geräte überhaupt nicht mit dem CM4 zusammen, da der Treiber von etwas ausgeht, das nur in der X86/AMD64-Welt zu finden ist – ganz wie derzeit beim Treiber für Grafikkarten.
Auf zu Neuem
Das Compute Module kommt jetzt in einem neuen Formfaktor und das macht das Layout eigener Basis-Boards einfach. Die frei zugänglichen KiCad-Symbole und Schaltpläne für das I/O-Board vereinfachen die Produktentwicklung. Warum nicht ein CM4 in eine Set-Top-Box oder eine selbstgebautes Handheld-Device einbauen? Mit der frei nutzbaren PCIe-Lane könnte man Ethernet-Karten mit vier Ports hinzufügen, um insgesamt fünf Gigabit-Schnittstellen bereitzustellen. Das klingt ganz nach dem Rezept für einen CM4-basierten Router, oder etwa nicht?
Angesichts günstiger Preise für das CM4 und das I/O-Board ist der Einstieg nicht allzu teuer. Wenn Sie eigene RPi-basierte Projekte entwickeln möchten, ist das mit der aktuellen CM-Generation einfacher denn je.
(200590-01)
----------------------------------------------------------------------------------------------------------------------
Wollen Sie weitere Elektor-Artikel lesen? Jetzt Elektor-Mitglied werden und nichts verpassen!
----------------------------------------------------------------------------------------------------------------------
Diskussion (0 Kommentare)