ARM Cortex-A78 向け Linux カーネル サポート

ARM Cortex-A78 向け Linux カーネル サポート

ARM Cortex A78 ベースのシステムで Linux を起動する予定です。
これについていくつか疑問があります。

1. どのカーネルバージョンを選択すればよいですか?
5.4.112、5.10.30、5.11.14、5.12-rc7 カーネルで、root/arch/arm64/include/cputype.h 内の ARM_CPU_PART_CORTEX_A78 を確認しましたが、一致しませんでした。Cortex
-A78 をサポートするカーネル バージョンを提案していただけますか? または、
カーネルに Cortex-A78 のサポートを追加できるパッチを提案していただけますか?

2. ターゲット プラットフォーム/マシンは、ARM Cortex A78 コアと DDR RAM のみを搭載したエミュレーターです。現時点では他の周辺機器はありません。
このマシンの最小カーネル構成はどうあるべきでしょうか?
カーネルを構成する際に、defconfig のどのオプションを「no」として選択すれば、選択した最小構成で上記のプラットフォームで Linux が確実に起動することが保証されますか?

3. 非圧縮画像と圧縮画像のどちらを使用すればよいですか?
コンパイルされた Linux イメージのバイナリを、リセット時に A78 がジャンプする RAM に配置する予定です。必要に応じて、プロセッサが RAM 内の Linux イメージの場所にジャンプできるようにする A78 の基本的なブート コードも開発します。

組み込みデバイスで Linux を起動するには、ブートコード、FSBL、uboot などのソフトウェア コンポーネントがさらに必要になることはわかっています。
しかし、私はただ実験したいだけなので、ARM Cortex-A78 および DDR RAM システム用に可能な限り小さな Linux をコンパイルし、同じシステムが Linux で実行されるのを確認したいと考えています。

上記の質問への回答とは別に、ご提案をいただければ幸いです。
不明な点がありましたら、遠慮なくお知らせください。

ありがとう、
マウニック・パテル

答え1

  1. Linux版

特定の Linux カーネル バージョンは必要ありません。最新の ARM CPU は、サポートされている機能を ID レジスタ経由で報告します。カーネルは、使用しているプロセッサに関する特定の情報を必要としません。できるだけ最新のカーネルを使用してください。

  1. 最小プラットフォーム

Linux を実行するための唯一の実際の要件は、割り込みコントローラ (Cortex-A78 は、ARM の GICv4 仕様に準拠した割り込みコントローラと、タイマー (A78 に含まれています) で動作するように設計されています) です。ただし、システムと対話するための何らかの方法が必要になります。UART のシリアル コンソールがその方法です。

EL3 を完全にバイパスし、EL2 にドロップしてカーネルを実行するラッパーを作成すると、セキュア ワールド用の別のコンソールは必要なくなるかもしれません。また、UART は安価なので、予備の UART を追加することもできます。ただし、複数のコアを実行する場合は、PSCI 実装が必要になります。その時点で、EL3 ファームウェアとして Trusted Firmware-A を導入したほうがよいでしょう。

次に、DRAM、CPU、UART、GIC、汎用タイマーを記述するデバイス ツリーが必要です。(および PSCI フック)

  1. 圧縮カーネルか否か

64 ビット ARM は、32 ビット ARM のようなスタンドアロン実行可能自己解凍 zImage をサポートしていません。ストレージ スペースを気にしない限り、カーネルを圧縮しても意味がありません。

関連情報