Neue ARM32 SoCs im Mainline Kernel - spielend einfach ----------------------------------------------------- Bis vor ein paar Jahren herrschte ein regelrechter Wildwuchs im Bereich der ARM-Prozessoren im Linux-Kernel. Dinge wie Taktverwaltung, PIN-Einstellungen und auch ganze Subsysteme wie die Analog-Digital- Converter der Prozessoren wurden von jeder Platform separat mit privaten und inkompatiblen APIs implementiert. Kernel konnten deswegen im Allgemeinen auch nur für eine Platform gebaut werden, wodurch Distributionen nie generische Kernel verwenden konnten, sondern immer einen Kernel pro Platform liefern mussten und damit meist nur spezielle Platformen unterstützt wurden. Mit dem 2011er "Donnerwetter" von Linus Torvalds [0] setzte ein Umdenken in diesem Bereich ein. Das neue Ziel auf welches hingearbeitet wird, ist der Multiplatform-Kernel. Dieser soll - wie der Name sagt - mit dem selben Kernel-Image auf allen (oder zumindest den meisten) ARM32-Prozessoren lauffähig sein. Die Beschreibung der einzelnen Boards soll dort nicht mehr in sogenannten Board-Files - also .c Dateien - erfolgen sondern im sogenannten Devicetree einer textuellen Beschreibung der Hardware, die zur Laufzeit des Kernel verarbeitet wird. Auch die bisher Prozessor-spezifischen Implementierungen wurden in neue platformunabhängige Subsysteme ausgelagert, z.B. das Common-Clock-Framework für die Verwaltung der Takte, Pinctrl für die Einstellungen der SoC-Pins oder Industrial-I/O für Analog-Digital-Konverter. Der Vortrag soll Schritt für Schritten zeigen, wie auch ein Hobby-Entwickler einen nicht unterstützten ARM32 SoC in den Mainline-Kernel integrieren kann und Kernel-Subsysteme vorstellen, die dabei berührt werden. Die Grundlage bilden dabei meine Erfahrungen aus dem "mainlinen" der Rockchip-Prozessoren (Cortex-A9) und dem Aufräumen der Samsung S3C24xx Platform (ARM9). Die einzigen wirklichen Vorraussetzungen zum Nachspielen sind ein Gerät mit vorhandener serieller Schnittstelle und ein Kernel-Release des Herstellers. Weitere Informationen wie Layouts der Geräte oder Handbücher zum Prozessor sind hilfreich, aber für die ersten Schritte im Allgemeine nicht unbedingt notwendig. Zur Veranschaulichung werde ich ein paar Geräte mitbringen, die meine einzelnen Bastelbereiche zeigen. [0] https://lkml.org/lkml/2011/3/17/492