STM32U5
DMA の概要
Rev 1.0

こんにちは。このプレゼンテーションでは、STM32U5 に内蔵されたGPDMA コントローラおよび LPDMA コントローラの概要を示します。

1システムアーキテクチャと DMA の概要
Cortex-M33
IcacheGPDMA1DMA2DSDMMC1SDMMC2適用する利点

DcacheCD バスマトリックス

Port0

FlashPort1MPCBB1SRAM1MPCBB2SRAM2MPCBB3

SRAM3• メモリマップ転送元からメモリマップ転送先へのデータ転送用の負荷が軽減された CPU• 新しい DMA モジュール

AHB1 ペリフェラル
AHB2 ペリフェラル

MPCWM1OCTOSPI1MPCWM2OCTOSPI2MPCWM2MPCWM3

FSMC• シングル DMA ドライバ
• 2 つのハードウェアインスタンス• GPDMA• LPDMALPDMA1

SRD バスマトリックス• リンクリストベースのプログラミング
AHB3/APB3 ペリフェラル
MPCBB4CPU 電力ドメイン

SRAM4

SRD 電力ドメイン• DMAMUX の統合機能• 自律性の向上• 固有のクロックリクエスト管理• 柔軟性の高いチャネル内およびチャネル間の入出力制御
2

STM32U5 には、汎用 DMA（または GPDMA）と低電力 DMA（または LPDMA）の 2 つの新しい DMA コントローラモジュールが内蔵されています。
GPDMA は CPU 電力ドメインに属し、STOP 0 および STOP 1 モードの低電力バックグラウンド自律モード（または LPBAM）をサポートします。
LPDMA は SmartRun ドメインに属し、STOP 0、STOP 1 および STOP 2 モードの低電力バックグラウンド自律モード（または LPBAM）をサポートします。
これらの DMA コントローラは、メモリマップ位置、メモリ、またはペリフェラル間のデータ移動を行い、Cortex-M33 コアの負荷を軽減します。
GPDMA と LPDMA は同じ IP の 2 つのインスタンスであり、そのため同じソフトウェアドライバによって制御されます。
モジュールには、ペリフェラルによって生成されたリクエストをチャネルに接続する DMA マルチプレクサが統合されています。
GPDMA および LPDMA は、バッファの連鎖を有効にするために、リンクリストベースのプログラミングをサポートしています。
LPBAM では、これらの DMA コントローラは、転送を実行するために、リクエストを受信したときに一時的にクロックをリクエストできます。
また、ソフトウェアの介入なしで、柔軟性の高いチャネル内およびチャネル間の転送の連鎖もサポートされます。

2

DMA の主な機能• 双方向 AHB マスタポート：LPDMA：1 ポート、GPDMA：2 ポート• 転送元から転送先へのメモリマップデータ転送• ペリフェラルからメモリ• メモリからペリフェラル• メモリ間転送• ペリフェラルからペリフェラル• SLEEP モードおよび STOP モード時の自律的なデータ転送• 同時 DMA チャネル
• 転送のアービトレーションは、4 段階の優先順位方式に基づいている• 1 つは、時間的制約のあるトラフィック用の予約済みの最高優先順位のキュー• 3 つは、加重ラウンドロビン割当てによる低い優先順位のキュー3

LPDMA には固有の 32 ビット AHB マスタポートがありますが、GPDMA には 2 つの独立した 32 ビット AHB ポートがあります。
ペリフェラルからメモリ、メモリからペリフェラル、メモリからメモリ、およびペリフェラルからペリフェラルへの転送を実行できます。
LPDMA および GPDMA は、SLEEP モードおよび STOP モード時の自律転送を可能にする LPBAM をサポートしています。
チャネルは互いに独立しており、同時に動作します。
これらに対し、4 段階の優先順位方式に基づいてアルゴリズムによるアービトレーションが実行されます。
- 1 つは、時間的制約のあるトラフィック専用の予約済みの最高優先順位のキュー- 3 つは、加重ラウンドロビン割当てを実装する低い優先順位のキュー

3

チャネルごとのプログラミング• ステータス• コントロール• アイドル状態• 開始/有効化• イベントフラグ• サスペンドとレジューム

1/2 転送転送完了
誤差• ユーザ設定エラー• リンク転送エラー• データ転送エラー• トリガオーバーラン• サスペンド状態•••• グローバル（マスクされた）割込みステータス• FIFO レベル（GPDMA のみ）• リセット• アボートと再開• イベントフラグクリア• 割込み有効（任意のイベントタイプとの比較）• 静的構成• セキュリティおよび特権属性• 優先順位• リンク転送割当てポート（GPDMA のみ）• 実行モード••完了までの実行（デフォルト）（シングル）リンクステップモード
4

このスライドと次の 2 つのスライドでは、チャネルごとのプログラミング機能について説明しています。
次のようなステータス情報がソフトウェアにも開示されます。
- アイドル状態- イベントフラグ- グローバル（マスクされた）割込みステータス- GPDMA の FIFO レベル
次のような制御情報が含まれます。
- ソフトウェア開始イネーブル- チャネルのサスペンドと再開、チャネルのリセット、およびチャネルのアボートと再開を行う機能- イベントフラグクリア- 割込みマスク
一部の機能は静的に構成され、次のリセットまでロックされる場合があります。これらは：- セキュリティおよび特権属性- リンクリストアイテム（または LLI）にアクセスする際に使用するポート- 実行モード：ソフトウェアの介入なしで連鎖転送を実行する可能性がある完了までの実行モード、または新しい LLI を処理する必要があるたびにソフトウェアで再有効化する必要があるリンクステップモードのどちらか。

4

チャネルごとのプログラミング• リンクリスト、単一チャネル上で DMA サービス（データ転送とも呼ばれる）への連鎖用• 各リンクリストアイテム（LLIn）は、メモリ内の（リンクリスト）データ構造によって定義される• 各 LLIn の実行の構成は、次のとおり
1. （オプションの）リンク転送：（次の）LLIN+1 が DMA ハードウェアによってロードされ、その（リンクリスト）レジスタファイル（LLI0 とも呼ばれる）を更新
2. （オプションの）データ転送：ブロックレベル転送

5

特定のチャネルへの転送の連鎖は、リンクリストを介して実行されます。
各リンクリストアイテムは、リンクリストアイテムまたは LLI と呼ばれ、メモリに割り当てられた構造です。
LLI は、連鎖が発生したときに制御レジスタに転送する値で初期化する必要があります。
各 LLI の実行の構成は、次のとおりです。
- 次の LLI をロードし、それに応じて制御レジスタを更新するオプションのリンク転送- ブロックと呼ばれる粒度を持つオプションのデータ転送

5

チャネルごとのプログラミング•

LLL ごとのプログラミング• アドレス• 転送元と転送先の開始アドレス• 転送元と転送先のアドレッシングモード• バースト間の転送元および転送先のアドレスオフセット（GPDMA ch12 ~ 15 のみ）• データ••••

ブロックレベルを定義する、転送元からのデータバイト数
繰り返しブロック数（GPDMA ch12 ~ 15 のみ）
転送元と転送先のデータ幅とデータ処理
転送元と転送先のバースト長（GPDMA のみ）• 転送元と転送先の割当てポート（GPDMA のみ）• 転送元と転送先のセキュリティ属性• 入出力制御• ペリフェラルリクエストタイプと選択• トリガモードと選択• 転送完了イベントの生成
6

各 LLI に対して、ユーザは次の内容をプログラムする必要があります。
- 転送元と転送先のアドレス、ならびに 2 次元モードでのバースト間のアドレッシングモードとアドレスオフセット。
- データ転送に関連する情報：ブロックサイズ、転送元と転送先のデータ幅、およびデータ処理。GPDMA は、チャネル 12 ~ 15 の繰り返しブロック数とすべてのチャネルのバースト長の追加設定をサポートします。
GPDMA に関しては、転送元および転送先の位置へのアクセスに使用するAHB ポートを選択する必要があります。
チャネル自体がセキュアとしてプログラムされている場合、セキュリティ属性も選択できます。
最後に、DMA コントローラの入力および出力信号を設定する必要があります。
- ペリフェラルリクエストタイプと選択- トリガモードと選択- 転送完了イベントの生成

6

DMA ブロック図GPDMA

DMA リクエスト

転送出力制御チャネルデータパスおよび転送入力制御
アービト
レーション

Channel15
DMA トリガ

LPDMA

Channel1

AHB マスタ
ポート 0

32 ビット AHB
DMA リクエスト

データ転送の生成
リンク転送の生成

Channel0

AHB マスタ
ポート 1

DMA トリガ32 ビット AHBDMA クロック

アービト
レーション

チャネル 3チャネル 2Channel1

データ転送の生成

AHB マスタ
ポート

32 ビット AHB

リンク転送の生成Channel0
DMA クロック

AHB スレーブインタフェース
DMA チャネルレジスタ
DMA チャネルの停止（デバッグモード）

転送出力制御チャネルデータパスおよび転送入力制御

DMA グ
ローバルレジスタ

Channel15
Channel1

割込みの生成DMA チャネ
ル割込み

イベント生成DMA チャネル転送完了

チャネルの状態管理

DMA チャネルの状態（プライベートとセキュリティ）セキュリティと特権の管理

DMA 不正イベント（対セキュリティ）Channel0
クロック管理

割込みの生成DMA チャネ
ル割込み

DMA チャネルレジスタ

イベント生成DMA チャネル転送完了

チャネル 3チャネル 2Channel1

チャネルの状態管理

DMA チャネルの状態（プライベートとセキュリティ）セキュリティと特権の管理

AHB スレーブインタフェース

DMA チャネルの停止（デバッグモード）

DMA グ
ローバルレジスタ

Channel0
クロック管理DMA クロックリクエス
ト32ビット

32ビット

AHBA
H
B

DMA 不正イベント（対セキュリティ）DMA クロックリク
エスト7

GPDMA と LPDMA のブロック図は非常に似ています。
リクエストとトリガは左側で受信されます。これらは、アービトレーションの対象となるチャネルを有効にするために使用されます。
転送出力コントロールは、データ転送と、リンクリストアイテムのロードから成るリンク転送の生成を行います。
DMA コントローラには、グローバルレジスタとチャネルレジスタへのアクセスを有効にする AHB スレーブインタフェースもあります。
DMA コントローラは、割込みリクエストと、DMA チャネル転送完了イベントを発行します。
DMA コントローラによって生成された各転送には、特定の特権とセキュリティ属性のタグが付けられており、それらは完全にプログラム可能です。
セキュリティ違反が発生した場合、DMA コントローラの出力がグローバルTrustZone コントローラに接続されます。
DMA コントローラは、デバイスが RUN、SLEEP、または STOP モードのときに、いつでも RCC へのクロックリクエスト出力信号を生成できます。
コア停止状態のままマイクロコントローラがデバッグモードに移行する場合、任意のチャネルを個別に継続またはサスペンドできます。

7

DMA 固有の実装およびユーザガイドライン
機能

LPDMA

GPDMA

チャネル数416

マスタポート1x（32 ビット）AHB

2x（32 ビット）AHB 通常、ポート #0 はペリフェラルとの間の転送に割り当てる必要があります。
 APB ペリフェラルへの直接ハードウェアデータパスが、AHB マトリックスの外側にあります。
 通常、ポート #1 はメモリとの間の転送に割り当てる必要があります。
 いずれにしても、任意のポートから任意の GPDMA ターゲットにアドレス指定できます。

DMA 転送シングルのみシングルおよびバースト

DMA スケジューラ

ダイレクト転送（読出しとそれに続く書込み）

FIFO ベースのバースト（二重発行）

チャネル FIFO サイズ

該当なし

Ch0 ~ 11：8 バイト（2 ワード） これらのチャネルは、通常、APB/AHB ペリフェラルおよび SRAM との間の転送に割り当てる必要があります。
Ch12 ~ 15：32 バイト（8 ワード） これらのチャネルは、データ要求の高い AHB ペリフェラルおよび SRAM との間の転送、または外部メモリとの間の転送にも使用できます。
 より高速な性能（より高速な連続転送、より低いバス利用）に適用可能な場合は、4ワードバーストに特権を与える必要があります。

チャネルアドレッシングモー
ドリニア（固定、または連続データでインクリメント）

Ch0 ~ 11：リニア
Ch12 ~ 15：2 次元アドレス

最大リクエスト ID

16123

最大トリガ ID3156

この表は、LPDMA と GPDMA コントローラの機能を示し、その違いを強調するとともに、ユーザ用のガイドラインも提供しています。
チャネル数は、LPDMA の場合は 4、GPDMA の場合は 16 です。
GPDMA の 2 つのマスタポートは、次のように使用します。
- ポート 0 は、ペリフェラルとの間の転送に割り当てる必要があります。これは、このポートと APB ペリフェラルの間の直接ハードウェアデータパスが、AHB マトリックスの外側にあるからです。
- ポート 1 は、AHB 相互接続を介して実行される、メモリとの間の転送に割り当てる必要があります。
これは標準的な使用方法です。ユーザは、転送元の位置および転送先の位置へのアクセスに使用するポートを自由に選択できます。
LPDMA はシングルデータ転送のみをサポートし、GPDMA はバースト転送をサポートします。
これらのバースト転送は、転送元および転送先への転送をキューに入れるため、チャネルごとの FIFOを介して実行されます。
FIFO の深さは、チャネル 0 ~ 11 では 8 バイト、チャネル 12 ~ 15 では 32 バイトです。
したがって、チャネル 0 ~ 11 はペリフェラルを含む転送用に、チャネル 12 ~ 15 はメモリ間転送およびデータ要求の高い AHB ペリフェラルを含む転送用に割り当てる必要があります。
アドレッシングモードの点では、LPDMA は、固定またはストライドなしでインクリメントされたリニアアドレスをサポートします。
GPDMA では、より高度なアドレッシングモードをサポートします。すべてのチャネルで固定アドレス、または連続データを使用するインクリメントアドレスのリニアモード、チャネル 12 ~ 15 でのみ 2 次元アドレッシングを使用できます。
リクエストとトリガ入力の数は、LPDMA と GPDMA で同じではありません。LPDMA は SmartRun ドメインに属するペリフェラルを処理するため、入力数は少なくなります。

8© STMicroelectronics - All rights reserved.
ST logo is a trademark or a registered trademark of STMicroelectronics International NV or its affiliates in the EU and/or other countries.
For additional information about ST trademarks, please refer to www.st.com/trademarks.
All other product or service names are the property of their respective owners.

このプレゼンテーション以外に、次のプレゼンテーションを参照できます。
- 電源管理- リセットおよびクロックコントローラ- ULPMark-PeripheralProfile および LPBAM ユースケースの使用- 自律 DMA と低消費電力モード- DMA のサーキュラバッファリングとダブルバッファリング- DMA のレジスタファイル- DMA のエラーレポート- DMA のリンクリスト- DMA の入出力 LLI 制御

9