Linux-Kernel-Unterstützung für ARM Cortex-A78

Linux-Kernel-Unterstützung für ARM Cortex-A78

Ich plane, Linux für ein ARM Cortex A78-basiertes System zu booten.
Und ich habe diesbezüglich einige Zweifel.

1. Welche Kernel-Version soll ich auswählen?
Ich habe die Kernel 5.4.112, 5.10.30, 5.11.14, 5.12-rc7 auf ARM_CPU_PART_CORTEX_A78 in root/arch/arm64/include/cputype.h geprüft, aber keine Übereinstimmung gefunden.
Können Sie eine Kernel-Version vorschlagen, die Cortex-A78-Unterstützung bietet? ODER
Können Sie einen Patch vorschlagen, der einem Kernel Unterstützung für Cortex-A78 hinzufügen kann?

2. Meine Zielplattform/-maschine ist ein Emulator mit einem ARM Cortex A78-Kern und nur einem DDR-RAM. Derzeit keine anderen Peripheriegeräte.
Was sollten die minimalen Kernelkonfigurationen für diese Maschine sein?
Welche Optionen in defconfig können bei der Konfiguration des Kernels als „Nein“ ausgewählt werden, um sicherzustellen, dass die ausgewählten minimalen Konfigurationen Linux auf der oben genannten Plattform sicher starten?

3. Soll ich ein unkomprimiertes oder ein komprimiertes Bild verwenden?
Bitte beachten Sie, dass ich vorhabe, die Binärdatei des kompilierten Linux-Images im RAM zu platzieren, an einer Stelle, an die der A78 beim Zurücksetzen springen kann. Falls erforderlich, entwickeln wir auch einen grundlegenden Bootcode für den A78, der es dem Prozessor ermöglicht, zum Speicherort des Linux-Images im RAM zu springen.

Ich weiß, dass zum Booten von Linux auf eingebetteten Geräten mehr Softwarekomponenten wie Bootcode, FSBL, Uboot usw. erforderlich sind.
Aber ich möchte einfach nur experimentieren und deshalb das kleinstmögliche Linux für ARM Cortex-A78 und ein DDR-RAM-System kompilieren und dasselbe System unter Linux laufen sehen.

Abgesehen von den Antworten auf die obigen Fragen sind Ihre Vorschläge sehr willkommen.
Bitte informieren Sie mich, wenn Ihnen etwas unklar ist.

Danke und Grüße,
Maunik Patel

Antwort1

  1. Linux-Version

Sie benötigen keine bestimmten Linux-Kernel-Versionen. Moderne ARM-CPUs melden ihre unterstützten Funktionen über ID-Register – der Kernel benötigt keine spezifischen Kenntnisse über den genauen Prozessor, den Sie verwenden. Verwenden Sie den aktuellsten Kernel, den Sie bekommen können.

  1. Minimale Plattform

Die einzige wirkliche Voraussetzung für den Betrieb von Linux ist ein Interrupt-Controller – und der Cortex-A78 ist so konzipiert, dass er mit einem Interrupt-Controller funktioniert, der der GICv4-Spezifikation von ARM entspricht – und ein Timer (im A78 enthalten). Sie möchten jedoch auf irgendeine Weise mit dem System interagieren – und eine serielle Konsole auf UART ist die Möglichkeit, dies zu tun.

Wenn Sie EL3 vollständig umgehen und einen Wrapper schreiben, der in EL2 eingebunden wird und dort den Kernel ausführt, benötigen Sie möglicherweise keine separate Konsole für Secure World. Andererseits sind UARTs billig, also fügen Sie vielleicht trotzdem einen Ersatz hinzu. Sobald Sie jedoch mehr als einen Kern ausführen möchten, benötigen Sie eine PSCI-Implementierung. An diesem Punkt können Sie Trusted Firmware-A genauso gut als Ihre EL3-Firmware einbinden.

Dann benötigen Sie einen Gerätebaum, der DRAM, CPU(s), UART, GIC und allgemeine Timer beschreibt. (Und alle PSCI-Hooks.)

  1. Komprimierter Kernel oder nicht

64-Bit-ARM unterstützt kein eigenständiges ausführbares, selbstdekomprimierendes zImage wie 32-Bit-ARM. Es ist sinnlos, den Kernel zu komprimieren, es sei denn, Sie machen sich Gedanken über den Speicherplatz.

verwandte Informationen