STM32MP1 - GIC
グローバル割込みコントローラ

2.0 版

こんにちは、STM32 グローバル割込みコントローラ（GIC）のプ
レゼンテーションへようこそ。

1概要2• Arm® Cortex®-A7 マルチコアのサポート
WWDG1_EWIT

ウィンドウ型ウォッチドッグ 1 早期ウェイクアップ割込み

PVD

AIEC を経由した PVD および AVD 検出回路

TAMP

タンパ割込み（LSECSS 割込みを含む）

RTC_WKUP_ALARM

RTC ウェイクアップタイマおよびアラーム（A および B）
割込み

TZC_IT

TrustZone DDR アドレス空間コントローラ

RCC

RCC グローバル割込み（rcc_mpu_irq）

EXTI0

AIEC を経由した EXTI ライン 0 割込み

EXTI1

AIEC を経由した EXTI ライン 1 割込み

EXTI2

AIEC を経由した EXTI ライン 2 割込み

EXTI3AIEC を経由した EXTI ライン 3 割込み

EXTI4AIEC を経由した EXTI ライン 4 割込み

GPDMA1_STREAM0 DMA1 ストリーム 0 グローバル割込み
...

...

• Arm TrustZone® および仮想化のサポート• 最大 288 の割込み

アプリケーション側の利点• 動的制御による優先度付けレベルのサポート• Arm TrustZone® による完全なセキュリティサポート
• ターゲットコアへの割込みの分配

STM32MP1 マイクロプロセッサに組み込まれたグローバル割込
みコントローラでは、TrustZone および仮想化をサポートする最大 288 の割込みチャネルが提供されています。
アプリケーションは、割込みレベルの動的優先度付け、Arm
TrustZone セキュリティ拡張機能、およびマルチコア製品の場合、各コアへの割込みの分配から恩恵を受けることができます。

2

主な機能

3

• Arm Cortex -A7 プロセッサとの緊密な結合• 割込みの動的な再優先度付け• マルチコア*のサポート、ターゲットコアへの割込みの分配• ソフトウェアによる割込みの生成• セキュリティ拡張機能のサポート• 仮想化拡張機能のサポート（*）使用可否は STM32MP15 デバイスに依存グローバル割込みコントローラは Arm Cortex-A7 プロセッサと緊密に結合され、このコントローラにより割込み要求の動的な再優先度付けが可能となり、アプリケーションがより適切に着信イベントに対応できるようになります。ほとんどのペリフェラルには独自の割込みラインがあるので、アプリケーションの開発が容易になります（割込み処理時に割込みのソースを判断する必要がありません）。マルチコア Cortex-A7 プロセッサの場合、各割込みは、単一のコアまたは両方のコアに分配できます。GIC は、Arm TrustZone のセキュリティおよび仮想化拡張機能も完全にサポートしています。

3

ブロック図4（*）使用可否は STM32MP15 デバイスに依存

GIC は、2 つの Cortex-A7 コア間で共有される STM32MP15ペリフェラルから最大 256 の割込みを受け取ります。さらに、最大 16 の内部プライベートペリフェラル割込み（PPI）および最大16 のソフトウェア生成割込み（SGI）が各 Cortex-A7 コアによって管理されます。
GIC 信号は、FIQ および IRQ で各コアに割り込みます。通常のソフトウェア実装では、FIQ はセキュア割込み専用です。
GIC は、各 Cortex-A7 コアに仮想制御とインタフェースも提供し、ハイパーバイザと仮想マシンの実装を支援します。

4

割込みの種類

5• ソフトウェア生成割込み（SGI）• ソフトウェア生成割込みレジスタへの書込みによって生成• 各コアのインタフェースに対して最大 16 の SGI（ID0〜ID15）を生成• Arm では、非セキュア割込みには SGI の ID0～ID7 を、セキュア割込みには SGI の ID8～
ID15 を使用することを推奨• プライベートペリフェラル割込み（PPI）• PPI は、1 つのコアに固有のペリフェラルによって生成される割込み• セキュアな物理タイマイベント（PPI1）• 非セキュアな物理タイマイベント（PPI2）• 仮想タイマイベント（PPI4）• ハイパーバイザタイマイベント（PPI5）• 仮想メンテナンス割込み（PPI6）

以下に示すのは、グローバル割込みコントローラによって管理されるさまざまな種類の割込みソースの一覧です。
• ソフトウェア生成割込みを使用して、他方のコアに割込みを送信できます。
• プライベートペリフェラル割込みは主にタイマからです。各コ
アには、他方のコアから完全に独立した 1 組のプライベート割込みがあることに注意してください。

5

割込みの種類6• 共有ペリフェラル割込み（SPI）• SPI は、関連する割込み入力ライン上に生成されたイベントによってトリガ• GIC は、ペリフェラル IRQ 信号に対応する最大 256 の SPI をサポート• SPI は、立ち上がりエッジでトリガされるように、またはアクティブハイレベルで反応するように設定• 割込み ID
• ソースからの割込みは ID 番号を使って識別• ID32～ID287 は SPI に使用• ID0～ID31 は、1 つの CPU インタフェース専用の割込みに使用バンク分けされた割込みは、その ID 番号とそれに関連付けられた CPU インタフェース番号によって一意に識別• ID0～ID15 は SGI に使用• ID16～ID31 は PPI に使用

共有ペリフェラル割込みは、ペリフェラル（UART など）からの通常の STM32MP15 の割込みです。
これらの割込みは、複数の Cortex-A7 コア間で共有され、一方または両方のコアへの割込みを生成できます。
割込みには極性をプログラムすることはできず、立ち上がりエッジか、またはハイレベルに反応のどちらかにできることに注意してください。
FIQ または IRQ 割込みルーチン内では、保留中の割込みは、0〜287 の ID 番号によって GIC 内で識別されます。

6

説明

7

• 割込み優先順位• STM32MP15x マイクロプロセッサの GIC では、32 段階の割込み優先順位レベルの 5bit の割込み優先度フィールドが実装されています。
• Arm は、グループ 1 の割込み（非セキュア）には上半分の優先順位の値の範囲で優先順位値を割り当てることを強く推奨（最大の番号は最も低い優先順位）• GIC ディストリビュータ• すべての割込みソースを一元化• コアごとに、優先順位の高い割込みを CPU インタフェースに転送して、優先順位のマスキングと横取り処理の実行

最大 32 段階の割込み優先順位レベルがあります。GIC には、非セキュア割込みがセキュア割込みよりも高い優先順位を得ることを回避するメカニズムが含まれています。
非セキュア割込みに優先順位範囲の半分を使用すれば、セキュア割込みで優先順位の全範囲を使用して、非セキュア割込みから保護できるセキュア割込みを選択することができます。
その場合、非セキュアソフトウェアは、下位 16 の可能な割込み優先順位レベルしか認識できません。
最後に、GIC ディストリビュータでは、各コアにどの優先順位を提示するかが選択されます。

7

説明

8

• CPU インタフェース• 各 CPU のインタフェースブロックによって、GIC に接続されているプロセッサにインタフェースが提供各 CPU のインタフェースによって以下のプログラミングインタフェースが提供• プロセッサへの割込みリクエストの信号を有効• 割込みに確認応答• 割込み処理の完了の表示• プロセッサの割込み優先順位マスクを設定• プロセッサの横取りポリシーを定義• プロセッサの最も高い優先順位の保留中割込みを決定

各 Cortex-A7 コアに個別の CPU インタフェースがあり、共有またはバンクレジスタと、セキュアまたは非セキュアレジスタを参照することができます。

8

Arm TrustZone® のサポート

9セキュリティ• セキュリティ拡張機能のサポート• グループ 0 の割込みはセキュア割込み、またグループ 1 の割込みは非セキュア割込み• 各割込みは、グループ 0 またはグループ 1 に割当て可能• 各コアが GIC レジスタにアクセスする権限は、アクセスがセキュアか非セキュアかによって異なる• セキュアソフトウェアは、非セキュアソフトウェアから妨害されることなく、割込みソースを安全に管理可能

グローバル割込みコントローラでは、TrustZone セキュリティが完全にサポートされ、セキュア割込みと非セキュア割込みの柔軟性の高い実装が可能になっています。

9

仮想化

10

• GIC の仮想化サポート• プロセッサ仮想化拡張機能により、非セキュア状態を仮想化するためのハードウェアのサポートが提供• 拡張機能により、システムでハイパーバイザと呼ばれる仮想マシンモニタがシステムで使用でき、ゲストオペレーティングシステム間で切り替え• シングルプロセッサシステムで実装されているかマルチプロセッサシステムで実装されているかに関係なく、プロセッサの仮想化拡張機能によって、シングルプロセッサ上で複数の仮想マシンを実行• ハイパーバイザでは、物理的な割込みを自分で処理、仮想マシンに通知する対応する仮想割込みのいずれかを生成可能ハイパーバイザで、物理的な割込みに対応していない仮想割込みを生成することも可能

仮想化は、一度に複数のオペレーティングシステム（または同じオペレーティングシステムの複数の独立したインスタンス）をサポートするシステムです。
GIC では、たとえば、仮想マシンに仮想割込みを提供することにより、このような仮想化のサポートを支援しています。

10

参照

11

• 詳細については、以下の関連資料を参照してください。
• ARM® Generic Interrupt Controller Architecture Specification（ARM IHI 0048）• STM32MP15 リファレンスマニュアル• 追加情報については、MP1 Wiki のページを参照してください。

詳細な情報は、主に ARM Generic Interrupt Controller
Architecture Specification（ARM IHI 0048）を参照してください。
詳細については、MP1 Wiki のページも参照してください。

11