こんにちは、専門家
A53コアロックステップの初期化手順は最近お客様(Boach)によって注目されており、Markusと私は5.3.8章をチェックしました。Cortex-A53/GIC500 の S32G RM のロックステップ操作について、説明が明確でなく、十分に完了していないことがわかりました。たとえば、RM セクションではレジスタのリストのみを試みており、必要な初期化の順序が指定されていません。私の知る限り、S32G BSP は Cortex-A53 ロック ステップ デモをリリースします。しかし、ユーザーマニュアルにも初期化の詳細な順序は指定されていませんでした。
Cortex-A53 ロックステップの初期化手順を明確にするための短いガイドを提供していただけますか?
Linux BSP ユーザーマニュアルリファレンスS32G3_LinuxBSP_43.0_User_Manual.pdf
- 第 6 章「ロックステップ操作」およびセクション 6.1「イネーブルメントフロー」を参照してください。このセクションでは、ロックステップ操作に必要な高レベルの手順とレジスタの同期について説明します。要点:
- ブート コアは M7_0 である必要があります (「ブート ターゲットとして M7 を使用してイメージをビルディングする」を参照)。M7_0 は、A53 を開始する前に A53 ロックステップを有効にする役割を担います。
- A53_0 が開始され、イネーブルメントフローで説明されているように必要なレジスタがリセットされます。これは ARM Trusted Firmware (EL3) で処理されます。
- Linux の場合、正しいクラスター/コアの数を反映するようにデバイス ツリーを更新する必要があります。これは、デバイス ツリー修正メカニズムを介して U-Boot で自動的に実行されます。
ロックステップ クラスターとそのコアは、Linux カーネルに渡されるデバイス ツリーから削除されるSO、手動での構成は必要ありません。システムは、M7 ソフトウェアによって設定された GPR ビットに基づいてロックステップ モードを検出します。
- ソースコード参照
- A53 で実行される必要なロックステップ同期手順。これは、同期する必要があるレジスタをリセットする機能です。RM で指定されているレジスタ以外にも多くのレジスタがあることに注意してください。
https://bitbucket.sw.nxp.com/projects/ALB/repos/arm-trusted-firmware/browse/plat/nxp/s32/s32cc/s32_l...
- この関数は、コールド ブート (BL2) およびサスペンドからの再開 (BL31) のためにできるだけ早く呼び出されます (アセンブリ コード)。
- ロックステップ用の U-Boot デバイス ツリーの修正。これは、ロックステップと派生版(コア数が少ない)の両方に当てはまります。
https://bitbucket.sw.nxp.com/projects/ALB/repos/u-boot/browse/arch/arm/mach-s32/s32-cc/fdt.c#193-254