この翻訳版ドキュメントのメンテナンスは終了しております。
この文書には、古いコンテンツや商標が含まれている場合があります。
最新情報につきましては、次のリンクから英語版の最新資料をご確認ください。
https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html
Please take note that this document is no longer being maintained. It may contain legacy content and trademarks which may be outdated.
Please refer to English version for latest update at
https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html
cv_54016-1.1
© 2012 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services.
ISO 9001:2008 Registered
この章では、ハード・プロセッサ・システム(HPS)に含まれているダイレクト・メ モリ・アクセス・コントローラ(DMAC)を説明します。 DMAコントローラは、メモ リやペリフェラルおよびシステム内のその他のメモリ・ロケーションの間でデータ を転送するために使用されます。 DMAコントローラは、ARM® Corelink™ DMA Controller(DMA-330)のインスタンスです。
f ARMのDMA-330コントローラについて詳しくは、ARMウェブサイト
(infocenter.arm.com)から入手可能なCoreLink DMA Controller DMA-330 Revision: r1p1 Technical Reference Manualを参照してください。
DMA コントローラの機能
HPSは、マイクロプロセッサ・ユニット(MPU)サブシステムからこの作業をオフ ロードし、メモリ・マップド・ペリフェラルとメモリ間のデータ転送を処理する1 つのDMACを提供します。 DMACはメモリ・ツー・ メモリ、メモリ・ツー・ ペリフェ ラル、およびペリフェラル・ツー・ メモリへの転送をサポートしています。 DMACは サービス要件のさまざまなレベルのための8つの論理チャネルをサポートします。 そ れは、ペリフェラル・ハードウェア・フロー・コントロールのための最大31ペリ フェラル・ハンドシェイク・インタフェースを提供します。
DMAコントローラには命令処理ブロックが含まれているため、DMA転送を制御する プログラム・コードを処理することができます。 また、命令キャッシュにシステム・
メモリからプログラム・コードをフェッチするためにAMBA®(ARM Advanced Microcontroller Bus Architecture ) のAXI™(Advanced eXtensible Interface)マスタ・イン タフェース・ユニットが含まれています。AXIマスタ・インタフェースも同様に DMAデータ転送を実行するために使用されます。 DMA命令の実行エンジンは、命令 キャッシュからプログラム・コードを実行し、それぞれの命令キューを介して、
リードまたはライトAXI命令をスケジュールします。 また、DMA転送中に、読み出 しまたはライト・データを格納するために使用するマルチFIFO(MFIFO)データ・
バッファを内蔵しています。
November 2012 cv_54012-1.2
DMACは、MPUのサブシステムへのイベントの効率的な通信をイネーブルするため に11の割り込み出力を提供します。 ペリフェラル要求インタフェースは、プロセッ サからの介入なしに、メモリ・ツー・ペリフェラルやペリフェラル・ツー・メモリ への転送が発生することをイネーブルするDMA対応ペリフェラルの接続をサポート しています。 HPSがARM DMAのペリフェラル・インタフェース・プロトコルに準拠 していないいくつかのペリフェラル機器をサポートしているので、アダプタはこれ らのペリフェラルがDMACと動作できるようにするために追加されます。 次のペリ フェラル・インタフェース・プロトコルがサポートされています。
■ Synopsysプロトコル
■ Serial peripheral interface (SPI)
■ Universal asynchronous receiver/transmitter (UART)
■ Inter-integrated circuit (I2C)
■ FPGA
■ ARMプロトコル
■ Quad SPI flash controller
■ System trace macrocell (STM™)
■ Boschプロトコル
■ Controller area network (CAN)
デュアル・スレーブ・インタフェースは、DMAコントローラの動作を保護状態と非 保護状態に分割することイネーブルします。 保護トランザクションだけが保護インタ フェースに確実にアクセスできるため、ネットワーク・インタコネクトをコンフィ ギュレーションする必要があります。スレーブ・インタフェースは、ステータス・
レジスタをアクセスすることができます。また、直接DMAコントローラの命令を実 行することもできます。
DMACは以下の特長を備えています。
■ DMAの動作を指定するための柔軟な方法を提供する小さな命令セットです。 この アーキテクチャでは、LLI(Linked-List Item)ベースのDMAコントローラの固定能 力よりも高い柔軟性を提供します。
■ 複数の転送タイプをサポートしています。
■ Memory-to-memory
■ Memory-to-peripheral
■ Peripheral-to-memory
■ Scatter-gather
■ 最大8個のDMAチャネルまでサポートしています。
■ 最大8つの未処理のAXI読み出しトランザクションおよび8つの未処理のAXIライ ト・トランザクションまでサポートしています。
■ ソフトウェアは16未解決の読み出しと16未処理の書き込み命令までスケジュール することがイネーブルされています。
■ MPUのサブシステムに11の割り込みラインをサポートしています。
■ DMAスレッド・停止の場合は1
■ イベントの場合は8
■ MFIFOバッファECC の場合は2
■ 31ペリフェラル要求インタフェースをサポートしています。
■ FPGAの場合は4
■ FPGAまたはCANの場合は4シェア
■ I2Cの場合は8
■ SPI の場合は8
■ クワッドSPI の場合は2
■ System Trace Macrocellの場合は1
■ UART の場合は4
DMA コントローラのブロック図とシステム統合
図 16–1には、 DMACのブロック図、および他のHPSシステムに組み込まれる方法を
示します。
図 16‒1. DMA コントローラの接続
DMA Controller
MFIFO 512x64
Write Instruction Queue Read Instruction Queue
Instruction Execution Engine Instruction Cache
AXI-64 Master Interface Interrupt
Control
CSRs
Secure Slave Interface
Non-Secure Slave Interface
Reset Initialization
Interface
MPU Subsystem Generic Interrupt Controller
System Manager
UART / SPI / I2C Peripheral
Interfaces
STM / Quad SPI Peripheral Interfaces CAN Peripheral
Interfaces
Clock Crossing Synopsis Adapter and
Clock Crossing
Bosch Adapter and
Clock Crossing Peripheral Request
Interface [30:0]
Level 4 Main Bus
Level 3 Interconnect
DMAコントローラは、コントローラ・ロジックだけでなく、すべてのインタフェー スで使用されているl4_main_clkクロックによって駆動されています。 DMAコント ローラは、64ビットのAXIマスタ・インタフェースを持つレベル3(L3)のメイン・
スイッチにアクセスします。
DMAコントローラは、以下のスレーブ・インタフェースを提供しています。
■ 無保護のスレーブ・インタフェース
■ 保護スレーブ・インタフェース
DMAコントローラの機能を制御するレジスタをアクセスするために、これらのス レーブ・インタフェースを使用することができます。 DMAコントローラは、1インタ フェースが Secure状態で動作し、もう一つはNon-secure状態で動作している
TrustZone®セキュア・テクノロジーを実装しています。
DMA コントローラの機能説明
この項では、DMACの主要なインタフェースとコンポーネント、および動作方法につ いて説明します。
概要
DMACはDMA転送を制御するプログラム・コードを処理することが可能になり、命 令処理ブロックが含まれています。 プログラム・コードは、DMACがそのAXIマス タ・インタフェースを使用してアクセスされるシステム・メモリの領域に格納され ています。 内部キャッシュに一時的にDMAC命令を格納します。
DMACは、DMA動作のシングル同時スレッドをサポートすることができる各チャネ ルが8個のDMAチャネルでコンフィギュレーションされています。 さらに、シング ルDMAマネージャ・スレッドが存在し、DMAチャネル・スレッドを初期化するため に使用することができます。 DMACは1クロック・サイクルあたり1命令まで実行し
ます。 それは定期的に各アクティブ・スレッドを実行するため、DMAマネージャ・
スレッド、その後DMAチャネル・スレッドを処理することにより、交互に実行しま
す。 実行するには、次のアクティブなDMAチャネル・スレッドを選択するとき、そ
れはラウンド・ロビン方式を使用しています。
DMACは1~6のバイトで構成される可変長の命令を使用します。 それは各DMA チャネルに独立したプログラム・カウンタ(PC)レジスタを提供しています。 スレッ ドがアドレスから命令を要求すると、キャッシュが検索を実行します。 キャッシュ・
ヒットが発生した場合、キャッシュは直ちに命令を提供しています。 それ以外の場 合、DMACはキャッシュ・ライン・フィルを実行するためのAXIマスタ・インタ フェースを使用しながら、スレッドが停止されます。 命令がキャッシュ・ラインの終 わりにまたがる場合、DMACは命令をフェッチするために複数のキャッシュ・アクセ スを実行します。
1 キャッシュ・ライン・フィルが進行中である場合、DMACはキャッシュにアクセスす る他のスレッドをイネーブルしますが、別のキャッシュ・ミスが発生した場合、最 初のライン・フィルが完了するまで、パイプラインをストールさせます。
DMAチャネル・スレッドがロードまたはストア命令を実行すると、DMACは関連 リードまたはライト・キューに命令を追加します。 DMACはAXIの命令を発行する前 に、命令ストレージ・バッファとして、これらのキューを使用しています。また、
DMACはDMA転送中に読み出されるデータまたは書き込まれるデータを格納するた めに使用するMFIFOデータ・バッファが含まれています。
DMACは外部マイクロプロセッサへのイベントの効率的な通信をイネーブルするため に複数の割り込み出力を提供します。 ペリフェラル要求インタフェースは、マイクロ プロセッサからの介入なしに、メモリ・ツー・ペリフェラルおよびペリフェラル・
ツー・メモリのDMA転送が発生するようにイネーブルするには、DMA対応ペリフェ ラルの接続をサポートしています。
デュアル・スレーブ・インタフェースは、Secure状態とNon-secure状態に分割する DMACの動作をイネーブルします。 スレーブ・インタフェースを使用すると、ステー タス・レジスタにアクセスして、DMAC内の命令を直接実行することができます。
動作状態
図 16–2に、DMAマネージャ・スレッドとDMAチャネル・スレッドのためのオペ レーティング状態間の遷移を示します。
DMACは、スレッドごとに独立したステート・マシンを提供しています。
図 16‒2. スレッドの動作状態
Executing
Cache miss
Updating PC
Waiting for event
At barrier Waiting for
peripheral
Completing Faulting
completing
Faulting Stopped
C
C
C C C C C
C
M Killing
C
C
C
1 図 16–2で 、DMACが以下のことを許可します。
■ 唯一のDMAチャネル・スレッドは図 16–2での灰色に示す状態を使用すること ができます。
■ レター・デザイネータなしの円弧はDMAマネージャとDMAチャネル・スレッ ドの状態遷移を示し、それ以外の使用は、次のように制限されています。
■ C—DMAチャネル・スレッドのみ。
■ M—DMAマネージャ・スレッドのみ。
■ 点線内の状態は、Faulting completing、Faulting、またはKillingに遷移することが できます。
リセットからDMACの終了後、Stopped状態にすべてのDMAチャネル・スレッドを 設定し、DMAマネージャ・スレッドはStopped状態に移行します。
以下の項はステートについて説明しています。
■ 16–6ページの「Stopped」
■ 16–6ページの「Executing」
■ 16–7ページの「Cache miss」
■ 16–7ページの「Updating PC」
■ 16–7ページの「Waiting For Event」
■ 16–7ページの「At Barrier」
■ 16–8ページの「Waiting For Peripheral」
■ 16–8ページの「Faulting Completing」
■ 16–8ページの「Faulting」
■ 16–8ページの「Killing」
■ 16–8ページの「Completing」
Stopped
スレッドは無効なPCを持っており、それが命令をフェッチされていません。 スレッ ドの種類に応じて、次のいずれかの方法でExecuting状態に移行するためにスレッド を引き起こす可能性があります。
■ DMAマネージャ・スレッド—スレーブ・インタフェースを介してDMAGO命令を発 行します。
■ DMAチャネル・スレッド—停止状態にDMAチャネル・スレッドのDMAGOを実行す るためにDMAマネージャ・スレッドをプログラムします。
Executing
スレッドが有効なPCを持っているため、DMACは調停するときにスレッドが含まれ ています。 スレッドは、以下の条件で次のいずれかの状態に変更することができま す。
■ Stopped—DMAマネージャ・スレッドがDMAENDを実行する場合。
■ Cache miss—命令キャッシュがDMAマネージャ・スレッドまたはDMAチャネル・
スレッドのどちらかのために次の命令が含まれていない場合。
■ Updating PC—DMACがキャッシュ内の次のアクセスのアドレスを計算するとき。
■ Waiting for event—スレッドがDMAWFEを実行する場合。
■ At barrier—DMAチャネル・スレッドが次のいずれかの場合。
■ DMARMB、DMAWMB、または DMAFLUSHPを実行する場合。
■ アップデートがアラインメントに影響を与えるコントロール・レジスタを更 新するとき( 16–27ページの「DMAサイクル中のDMAチャネル・コントロー ル・レジスタの更新」)。
■ Waiting for peripheral—DMAチャネルスレッドがDMAWFPを実行する場合。
■ Killing—DMAチャネル・スレッドがDMAKILLを実行する場合。
■ Faulting completing—DMAチャネル・スレッドのいずれかの場合。
■ スレッドが未定義または無効な命令を実行する場合
■ AXIエラーが命令フェッチまたはデータ転送中に発生する場合
■ Faulting—DMAマネージャ・スレッドが次のいずれかの場合。
■ スレッドが未定義または無効な命令を実行する場合
■ AXIエラーが命令フェッチに発生する場合
ウォッチドッグ・タイムアウト中断が発生したときのDMAチャネル・スレッド の場合。
■ Completing—DMAチャネル・スレッドがDMAENDを実行する場合。
Cache miss
スレッドが停止され、DMACはキャッシュ・ライン・フィルを実行しています。
キャッシュ・フィルを終了すると、スレッドはExecuting状態に戻ります。
Updating PC
DMACは、キャッシュ内の次のアクセスのアドレスを計算しています。 PCを計算し た後、スレッドはExecuting状態に戻ります。
Waiting For Event
スレッドが停止され、DMACが対応するイベント番号を使用してDMASEVを実行する ことを待っています。 対応するイベントが発生した後、スレッドはExecuting状態に 戻ります。
At Barrier
DMAチャネル・スレッドが停止され、DMACはAXI上のトランザクションが完了す るまでを待っています。 AXIトランザクションが完了した後、スレッドはExecuting状 態に戻ります。
Waiting For Peripheral
DMAチャネル・スレッドが停止され、DMACは、要求されたデータを提供するため に、ペリフェラルを待っています。 ペリフェラルがデータを提供した後、スレッドは Executing状態に戻ります。
Faulting Completing
DMAチャネル・スレッドは未処理のロードまたはストアのトランザクションが完了 していることをシグナルさせるためにAXIマスタ・インタフェースを待っています。
トランザクションが完了した後、スレッドはFaulting状態に移行します。
Faulting
スレッドが無期限に停止されています。 スレッドのDMAKILLを実行するためにDMAC を指示するDBGCMDレジスタを使用すると、スレッドはStopped状態に移行します。
Killing
DMAチャネル・スレッドは、未処理のロードまたはストアのトランザクションが完 了していることを知らせるためにAXIマスタ・インタフェースを待っています。 トラ ンザクションが完了した後、スレッドはStopped状態に移行します。
Completing
DMAチャネル・スレッドは、未処理のロードまたはストアのトランザクションが完 了していることを知らせるためにAXIマスタ・インタフェースを待っています。 トラ ンザクションが完了した後、スレッドはStopped状態に移行します。
DMAC の初期化
リセットが終了した後、DMACは、その動作状態を初期化するいくつかのメモリ・
マップされたコントロール信号を提供します。 DMACのリセットが終了したら、それ が自動的にコードの実行を開始しないように設定されています。 3メモリ・マップさ れたコントロール信号は、システム・マネージャによって制御されます。
f 詳細は、「Cyclone®Vデバイス・ハンドブック Volume 3」の「 System Manager」の章を
参照してください。
DMA マネージャのセキュリティの状態を設定する方法
boot_manager_ns 信号がDMAマネージャのセキュリティの状態を設定するための唯
一の方法です。
DMACがリセットから終了すると、boot_manager_ns信号の状態を読み出し、DMAマ ネージャのセキュリティを設定します 。
1 設定すると、dma_rst_n信号上の状態遷移がDMACをリセットするまで、各irq[x]の セキュリティ状態は一定のままです。
DMAマネージャのセキュリティの状態は、DMACの動作をどのように影響するにつ いて詳しくは、16–21ページの「Secure状態でのDMAマネージャ・スレッド」およ び 16–22ページの「Non-Secure状態のDMAマネージャ・スレッド」を参照してくだ さい。
割り込み出力のセキュリティの状態を設定する方法
DMACは、各irq[x]を割り当てるようにセキュリティ状態にboot_irq_ns[7:0]信 号を提供しています 。
boot_irq_ns[7:0]信号は、システム・マネージャに接続されています。 リセットか
らDMAを取り出す前に、割り込みビットが安全であるかを制御するために、システ ム・マネージャを介してboot_irq_ns[7:0]信号をプログラムする必要があります。
1 DMACは、リセットから復帰した後これらのビットをサンプルして、次のリセットま でそれらを無視します。
設定すると、dma_rst_n信号上の状態遷移がDMACをリセットするまで、各irq[x]
のセキュリティ状態は一定のままです。
irq[x]信号のセキュリティ状態は、DMACがDMAWFEとDMASEV命令を実行する方法にど のように影響するかについての説明は、16–21ページの「セキュリティの使用」を参 照してください。
ペリフェラル要求インタフェースのセキュリティの状態を設定する方 法
DMACは、セキュリティ状態に各ペリフェラル要求インタフェースを割り当てるよう にboot_periph_ns[31:0]信号を提供します。
boot_periph_ns[31:0]信号は、システム・マネージャに接続されています。 リセッ トからDMAを取り出す前に、ペリフェラル機器インタフェースが安全であるかを制 御するために、システム・マネージャを介してboot_periph_ns[31:0]信号をプログ ラムする必要があります。
1 DMACは、リセットから復帰した後これらのビットをサンプルして、次のリセットま でそれらを無視します。設定すると、dma_rst_n信号上の状態遷移がDMACをリセッ トするまで、各ペリフェラルの要求インタフェースのセキュリティ状態は一定のま まです。
ペリフェラル要求インタフェースのセキュリティ状態は、DMAチャネル・スレッド がDMAWFP、DMALDP、DMASTP、または DMAFLUSHP命令を実行する方法に影響するかに ついての説明は、16–21ページの「セキュリティの使用」を参照してください。
スレーブ・インタフェースを使用した場合
スレーブ・インタフェースは、レベル4(L4)メインバスにDMACを接続し、レジス タにアクセスするためにマイクロプロセッサをイネーブルしてください。 これらのレ ジスタを使用すると、マイクロプロセッサは、以下を実行できます。
■ DMAマネージャ・スレッドのステータスにアクセスします。
■ DMAチャネル・スレッドの状態を与えます。
■ 割り込みをイネーブルまたはクリアします。
■ イベントをイネーブルします。
■ 次のデバッグ・レジスタをプログラムすることにより、実行するDMACの命令を 発行して下さい。
■ DBGCMDレジスタ
■ DBGINST0レジスタ
■ DBGINST1レジスタ
スレーブ・インタフェースを使用して DMAC への命令の発行
DMACが動作している場合、次の限定された命令のサブセットのみ発行することがで きます。
■ DMAGO—指定したDMAチャネルを使用してDMAトランザクションを開始します。
■ DMASEV— 指定したイベント番号を使用して、イベントの発生、または割り込みを
通知します。
■ DMAKILL—スレッドを終了します。
boot_manager_ns信号が DMACが動作するように初期化されたセキュリティの状態に
応じて、適切なスレーブ・インタフェースを使用していることを確認する必要があ
ります。 たとえば、DMACがセキュア状態にある場合、安全なスレーブ・インタ
フェースを使用して命令を発行する必要があります。それ以外の場合、DMACは命令 を無視します。 DMACはNon-secure状態にあるときに、DMAチャネルを起動または再 起動するためのセキュアまたは非セキュアのスレーブ・インタフェースを使用する ことができます。
1 デバッグ命令レジスタまたはDBGCMDレジスタを使用して命令を発行する前に、デ バッグがアイドルであることを確認し、DBGSTATUSレジスタを読み出す必要がありま す。それ以外の場合、DMACは指示を無視します。
命令を処理する前に、DMACは、スレーブ・インタフェースからの指示を受信する と、いくつかのクロック・サイクルを受信することができます。たとえば、パイプ ラインが別の命令を処理する場合です。
1 DMAGOを発行する前に、DMAGOが指定するアドレスから開始して、システム・メモリ
に実行するDMACのに適したプログラムが含まれていることを確認する必要があり ます。
デバッグ命令を備えた DMAGO レジスタの使用
この例では、デバッグ命令レジスタを使用してDMAチャネル・スレッドを開始する ために必要な手順を示しています。
1. DMAチャネル用のプログラムを作成します。
2. システム・メモリの領域にプログラムを格納します。
3. 以下のようにDMAGO命令をプログラムするために、DMACのスレーブ・インタ フェースのいずれかを使用します。
a. デバッグがアイドルのとき(dbgstatusビットが0である場合)を保証する
ためにDBGSTATUSレジスタをポーリングしてください。
b. レジスタDBGINST0に書き込み、次のように入力します。
■ DMAGOのための命令バイト0エンコーディング。
■ DMAGOのための命令バイト1エンコーディング。
■ 0にスレッド・ビットをデバッグします。これは、DMAマネージャ・ス レッドを選択します。
c. DMAGO命令バイト[5:2]のデータでDBGINST1レジスタへのライト 。b ステップ で、システム・メモリに書き込まれるプログラムの最初の命令のアドレスに これらの4バイトを設定する必要があります 。
4. デバッグ命令レジスタはDBGCMDレジスタにゼロを書き込むによって含まれてい る命令を実行するようにDMACを指示します。 DMACはDMAチャネル・スレッド を開始して1にdbgstatusビットを設定します。 DMACは命令の実行を完了した 後、それが0にdbgstatusビットをクリアします。
ペリフェラル要求インタフェース
図 16–3には、ペリフェラル要求インタフェースはペリフェラル要求バスで構成さ れ、DMACは接頭辞を使用するバスを認めることを示しています。
■ dr—ペリフェラル要求バス。
■ da—DMAC確認バス。
ペリフェラル信号は、要求バスに次を示します。
■ 単一の転送を要求します。
■ バースト転送を要求します。
■ フラッシュ要求を確認します。
DMA転送シーケンスの最後の要求を発行すると、ペリフェラルはDMACを信号しま す。
DMACは、確認バスで次を信号することができます。
要求された単一の転送を完了したときに信号します。
図 16‒3. ペリフェラル要求インタフェース上の要求バスと確認バス
DMAC Peripheral
drvalid drtype[1:0]
drlast
daready davalid datype[1:0]
drready Peripheral
request interface
■ 要求されたバースト転送を完了したときに信号します。
■ フラッシュ要求を発行します。
DMACはDMAのチャネルのいずれかにペリフェラル要求インタフェースを割り当て ることができます。 DMAチャネル・スレッドがDMAWFPを実行するときに 、ペリフェ
ラル[4:0]フィールドにプログラムされた値は、そのDMAチャネルに関連付けられ
ているペリフェラルを指定します。 詳細は、16–45ページの「DMAWFP」を参照して ください。
DMACは31ペリフェラル要求ハンドシェイクをサポートしています。 各要求のハン ドシェイクが4の未処理の要求を受信して、特定のペリフェラル・デバイスIDが割 り当てられます。 表 16–1は、ペリフェラル・デバイスIDの割り当てを示していま す。
要求インタフェース番号の4~7は、FPGAファブリックに実装されるCANコント ローラとソフト・ロジック間で多重化されています。 CANコントローラとFPGAのイ ンタフェース間のスイッチングは、システム・マネージャによって制御されます。
f 要求インタフェース番号4~7を制御する方法について詳しくは、「Cyclone Vデバイ ス・ハンドブックVolume 3」の「System Manager」の章を参照してください。
表 16‒1. ペリフェラル要求インタフェースのマッピング
ペリフェラル
要求イン タフェー ス ID
プロトコル ペリフェラル
要求イン タフェー
ス ID
プロトコル
FPGA 0 0 Synopsys SPI Master 0 TX 16 Synopsys
FPGA 1 1 Synopsys SPI Master 0 RX 17 Synopsys
FPGA 2 2 Synopsys SPI Slave 0 TX 18 Synopsys
FPGA 3 3 Synopsys SPI Slave 0 RX 19 Synopsys
FPGA 4 / CAN 0インタ
フェース1 4 Synopsys / Bosch SPI Master 1 TX 20 Synopsys
FPGA 5 / CAN 0インタ
フェース2 5 Synopsys / Bosch SPI Master 1 RX 21 Synopsys
FPGA 6 / CAN 1インタ
フェース1 6 Synopsys / Bosch SPI Slave 1 TX 22 Synopsys
FPGA 7 / CAN 1インタ
フェース2 7 Synopsys / Bosch SPI Slave 1 RX 23 Synopsys
I2C 0 TX 8 Synopsys Quad SPI Flash TX 24 ARM
I2C 0 RX 9 Synopsys Quad SPI Flash RX 25 ARM
I2C 1 TX 10 Synopsys STM 26 ARM
I2C 1 RX 11 Synopsys 予約済み 27 ̶
I2C 2 TX (EMAC) 12 Synopsys UART 0 TX 28 Synopsys
I2C 2 RX (EMAC) 13 Synopsys UART 0 RX 29 Synopsys
I2C 3 TX (EMAC) 14 Synopsys UART 1 TX 30 Synopsys
I2C 3 RX (EMAC) 15 Synopsys UART 1 RX 31 Synopsys
要求受容能力
DMACは、各ペリフェラル要求インタフェースに1つのアクティブ要求を受信するこ とができます。 アクティブな要求は、DMACが要求されたAXIデータ転送を開始して いない場合に発生します。
ペリフェラル・レングスの管理
ペリフェラル要求インタフェースは、DMACが含むデータ転送の量を意識することな く、DMAサイクルに含まれるデータの量を制御するためにペリフェラルをイネーブ ルします。 ペリフェラルには、次のいずれかの方法でDMAサイクルを制御します。
■ シングル転送を選択します。
■ バースト転送を選択します。
■ 現在のシリーズの最後の要求を開始したときにDMACを通知します。
DMACがDMAWFPペリフェラル命令を実行する場合、スレッドの実行を停止し、要求
を送信するまでのペリフェラルを待っています。 ペリフェラルが要求を送信すると、
DMACは以下の信号の状態に応じて要求フラグの状態を設定します。
■ drtype_<x>[1:0]—DMACはrequest_typeフラグの状態を設定します。
■ drtype_<x>[1:0]=b00—request_type<x> = シングル
■ drtype_<x>[1:0]=b01—request_type<x> = バースト
■ drlast_<x>—DMACはrequest_lastフラグの状態を設定します。
■ drlast_<x>=0—request_last<x> = 0
■ drlast_<x>=1—request_last<x> = 1
1 DMACはDMAWFP シングルまたはDMAWFPバースト命令を実行した場合、DMACは以下を 設定します。
■ request_type<x> は、シングルまたはバーストにそれぞれフラグします。
■ request_last<x>は、0にフラグします。
DMALPFEは、nfビットが 0に設定されているために、関連付けられたDMALPEND命令を 強制するアセンブラ・ディレクティブです。 これによって、ループ終了のために、
ループ・カウンタを使用しないプログラム・ループが作成されます。
request_lastフラグが1 に設定すると、DMACは、ループを終了します。
DMACは条件付きでrequest_typeとrequest_lastフラグの状態に応じて、次の手 順を実行します。
■ DMALD、DMAST、DMALPEND
これらの命令がオプションのB|Sサフィックスを使用する場合、 request_typeフ ラグが一致しないと、DMACはDMANOP を実行します。
■ DMALDP<B|S>、DMASTP<B|S>
request_type<x>フラグがB|Sと一致しない場合、DMACはDMANOPを実行します。
■ DMALPEND
nfビットが0のとき、DMACはrequest_lastフラグが設定されている場合、DMANOP を実行します。
DMACがバースト要求を受信したときに、DMACがバースト転送を発行するために必 要な場合、DMALDB、DMALDPB、DMASTB および DMASTPB命令を使用します。 CCRnレジス タでの値は DMACが転送するデータの量を制御します 。
DMACがシングル要求を受信したときに、DMACはシングル転送を発行するために必 要な場合、DMALDS、DMALDPS、DMASTS および DMASTPS 命令を使用します。 DMACは、
CCRnレジスタにsrc_burst_lenとdst_burst_lenフィールドの値を無視して、arlen[3:0]
またはawlen[3:0]バスを0x0に設定します。
DMAC レングスの管理
DMACが転送するデータの総量を制御する場合にはDMAレングス管理と言います。
ペリフェラルは、DMACがペリフェラルに(またはペリフェラルから)のデータを転 送する必要があるとき、DMACを通知するためにペリフェラル要求インタフェースを 使用します。 DMAチャネル・スレッドは、DMACはペリフェラルの要求に応答する方 法を制御します。
次の制約は、DMACレングスの管理に適用されます。
■ ペリフェラルからのすべてのシングル要求のデータの総量は、そのペリフェラル のバースト要求に対するデータの量よりも小さくなければなりません。
1 CCRn レジスタは1つのバースト要求およびシングル要求のために転送され
るデータ量を制御します。転送チャネル nの進行しているときに CCRn レ ジスタを更新しないことを推奨します 。
■ ペリフェラルがバースト要求を送信すると、DMACによってバーストの要求が完 了したと認められるまで、ペリフェラルはシングル要求を送信しないことです。
ペリフェラル要求インタフェースは任意の要求タイプを受信するまでプログラム・
スレッドが実行を停止する必要がある場合、DMAWFPのシングル命令を使用します。 要 求FIFOバッファの先頭のエントリが以下の要求タイプの場合:
■ シングル—DMACは、FIFOバッファからエントリをポップし、プログラムの実行を
継続します。
■ バースト—DMACは、FIFOバッファ内のエントリを残し、プログラムの実行を継続
します。
1 バースト要求エントリは、DMACがDMAWFPバースト命令またはDMAFLUSHP命 令を実行するまで要求FIFOバッファに残っています。
ペリフェラル要求インタフェースはバースト要求を受信するまでプログラム・ス レッドが実行を停止する必要がある場合、DMAWFPバースト命令を使用します。 要求 FIFOバッファの先頭のエントリは、以下の要求タイプの場合:
■ シングル—DMACは、FIFOバッファおよびプログラムの実行からエントリを除去し
ます。
■ バースト—DMACはFIFOバッファからエントリをポップし、プログラムの実行を継
続します。
AXIのリード転送を完了するとき、DMACはペリフェラルに確認応答を送信する必要 がある場合、DMALDP命令を使用します。 同様に、AXIのライト転送を完了すると、
DMACはペリフェラルに確認応答を送信するために必要とするとき、DMASTP命令を 使用します。 DMACはペリフェラル<x>への転送の確認応答を通知するために認める バスを使用します。
1 rvalidとrlast信号がHighの場合、DMACはリード・トランザクションのための確認 応答を送信し、そしてbvalid信号がHigh の場合ライト・トランザクションを送信 します。ライト・データから最終デスティネーションへ転送が進行する時、DMAC は ペリフェラルに確認応答を送信する場合があります。
ペリフェラル要求インタフェースの要求FIFOバッファをリセットするために
DMAFLUSHP命令を使用します。 DMACはDMAFLUSHP実行された後、ペリフェラルにはフ ラッシュ要求を確認するまで、ペリフェラルの要求を無視します。 これは、DMACお よびペリフェラルがお互いに同期させることができます。
制限
DMAペリフェラル要求インタフェースに接続されたペリフェラルは、次のプロトコ ルのいずれかを使用します。
■ ARM
■ Synopsys
■ Bosch
ARMのプロトコルを使用するペリフェラルの場合、DMAとペリフェラルの間で唯一 のロジックは、クロック・クロッシング・ロジックです。 他のプロトコルの場合、ク ロック・クロッシング・ロジックおよびプロトコル・アダプテーション・ロジック は、DMAとペリフェラル間に位置しています。 次の項では、SynopsysまたはBosch のプロトコルを使用してペリフェラルのためのハンドシェイク・ペリフェラル・イ ンタフェースの限界を説明します。
バーストのみ要求
CANコントローラによって使用されるBoschプロトコルは、バースト要求のみサ ポートします。 結果として、いつでもCANコントローラがペリフェラル・バースト 要求を発行するときに、DMAコントローラは、バーストおよびシングルの要求を受 信します。
フラッシュ・サポートなし
BoschまたはSynopsysペリフェラル要求プロトコルを使用するペリフェラルには、
フラッシュ・コマンドがサポートされません。BoschまたはSynopsysプロトコルを サポートしているすべてのペリフェラル・インタフェースにフラッシュを発行する と、ペリフェラルに到達する前にドロップされます。
確認なしタイプ
Boschペリフェラル要求インタフェース・プロトコルの場合、使用可能なアクノリッ
ジはありません。 結果としてどちらのCANコントローラに確認を発行することは、
ペリフェラルに到達する前にドロップされます。
Synopsysペリフェラル要求インタフェース・プロトコルの場合、使用可能なタイプ の認識はありません。 結果として、Synopsysプロトコルを使用しているペリフェラ ルは、バーストとシングル転送に区別することはできません。
イベントと割り込みの使用
DMACは8イベントおよび割り込みをサポートすることができます。 INTENレジスタ は、各イベント割り込みリソースがどちらかのイベントまたは割り込みであるかど うかを制御するために使用されます。
DMACはDMASEV命令を実行すると、指定したイベントの割り込みリソースを変更し
ます。 INTENレジスタは以下のように機能させるには、イベント割り込みリソースを
設定します。
■ Event—DMACは指定されたイベント割り込みリソースのイベントを生成します。
DMACは、同じイベント割り込みリソースのDMAWFE命令を実行すると、イベン トがクリアされます。
■ Interrupt—DMACは<event_num>が指定されたイベント・リソースの数のとき、
irq<event_num>信号をHighに設定します。割り込みをクリアするには、INTCLRレ ジスタに書き込む必要があります。
DMA チャネルを再起動するイベントの使用
イベントを生成するために、INTENレジスタをプログラミングする際、1つまたは複 数のDMAチャネルを再起動するためにDMASEおよびDMAWFE命令を使用できます。
DMAC が DMASEV 前に DMAWFE を実行する シングルDMAチャネルを再起動するには:
1. 最初のDMAチャネルはDMAWFE実行し、そしてイベントが発生するまで待ちなが ら停止します。
2. 他のDMAチャネルは、同じイベント番号を使用してDMASEVを実行します 。 これ は、イベント、最初のDMAチャネルの再起動が発生します。 DMACは、DMASEVを 実行した後の 1クロック・サイクルにイベントをクリアします。
同じイベントを待機する複数のチャネルをプログラムすることができます。 たとえ ば、4つのDMAチャネルがイベント2のためのすべての実行されたDMAWFEを持って いる場合、そして別のDMAチャネルは、イベント2のDMASEVを実行したときに 、 その4つのDMAチャネルは、すべて同時に再起動します。 DMACは、DMASEVを実行 した後の 1クロック・サイクルにイベントをクリアします。
DMAC が DMAWFE 前に DMASEV を実行する
DMACがDMASEV実行された場合、別のチャネルがDMAWFE実行する前に、DMACは
DMAWFE実行されるまで、イベントは保留状態を維持します。DMACがDMAWFEを実行す
る場合、それは、1の aclkクロック・サイクルの実行を停止させて、イベントをク リアした後チャネルのスレッドの実行を継続します。
例えば、DMACがDMASEV を実行し、そして他のスレッドがDMAWFE 6を実行しな かった場合、イベントは保留状態を維持します。 DMACがチャネル4のDMAWFE 6命 令を実行した後、次に、チャネル3 DMAWFE 6命令を実行した場合:
1. 1 aclkクロック用のチャネル4スレッドのDMACの実行を停止します。
2. DMACはイベント6をクリアします。
3. DMACはチャネル4スレッドの実行を再開します。
4. それはイベント6の次の発生を待っている間、チャネル3スレッドのDMACの実 行を停止し、スレッドが停止します。
MPU サブシステムの割り込み
DMACは、MPUのサブシステムへのアクティブHighのレベル・センシティブの割り 込みとして使用するためにirq[x]の信号を提供します。 DMACがDMASEVを実行した 後、割り込みを生成するためにINTENレジスタをプログラムするときに、対応する irq[x]信号がHighに設定されます。
MPUのサブシステムは、INTCLRレジスタに書き込むことによって、割り込みをクリ アすることができます。
1 DMAWFEを実行すると、割り込みをクリアしていません。
DMACはDMALDまたはDMAST命令を完了した時にマイクロプロセッサに通知するた
めのDMASEV命令を使用している場合、DMASEV前にメモリ・バリア命令を挿入するこ
とを推奨します。 それ以外の場合、AXIの転送が完了する前に、DMACは割り込みを 通知することがあります。例 16–1を参照してください。
停止
この項では以下について説明します。
■ 停止のタイプ
■ 停止のソース
■ ウォッチドッグ停止
■ 停止の処理
停止のタイプ
停止が発生した場合、DMACの正確な状態でDMACが停止ハンドラを提供することに 応じて、正確または不正確のいずれかに分類することができます。 停止が以下の場 合:
例 16‒1. メモリ・バリア命令 DMALD
DMAST
# Issue a write memory barrier
# Wait for the AXI write transfer to complete before the DMAC
# can send an interrupt DMAWMB
# The DMAC sends the interrupt DMASEV
■ Precise DMACは中止を作成した命令のアドレスを使用してPCレジスタを更新しま す。
■ Imprecise PCレジスタは停止が発生しない命令のアドレスが含まれる場合がありま
す。
停止のソース
DMACは以下の条件下で正確な停止を通知します。
■ Non-secure状態のDMAチャネルのスレッドには、CCRnレジスタをプログラムしよ うとして、セキュアAXIトランザクションを生成します。
■ Non-secure状態のDMAチャネルのスレッドがセキュアとして設定されているイベ
ントのDMAWFEまたはDMASEVを実行します 。 boot_irq_ns メモリ・マップのコン トロール信号は、イベントのためにセキュリティ状態を初期化します。
1 各イベントについて、INTENレジスタはDMACが割り込みとしてイベントま たは信号を生成することをコントロールします。
■ DMAチャネル・スレッドはDMASTを実行しようとしますが、DMACは最終的にスト アを実行したときに、MFIFOバッファは、ストアを完成させるには不十分なデー タが含まれていることが計算されます。
■ Non-secure状態のDMAチャネルのスレッドがセキュアとして設定されているペリ
フェラルの要求インタフェース用はDMAWFP、DMALDP、DMASTP、または DMAFLUSHP を実行します 。boot_periph_nsは 、メモリ・マップのコントロール信号は、ペ リフェラル要求インタフェースのセキュリティの状態を初期化します。
■ Non-secure状態でのDMAマネージャ・スレッドは、安全のDMAチャネル・スレッ ドを開始しようとするDMAGOを実行します 。
■ DMACは命令フェッチが実行されるときAXIマスタ・インタフェース上のエラー応 答を受信します。
■ スレッドが未定義命令を実行します。
■ スレッドは、DMACの設定に無効であるオペランドを持つ命令を実行します。
1 DMACは正確な停止を通知する場合、停止をトリガする命令は実行されません。 その 代わりに、DMACはDMANOP.を実行します 。
DMACは以下の条件で不正確な停止を通知します。
■ データのロードを実行するときDMACはAXIマスタ・インタフェース上でERROR応 答を受信します。
■ データ・ストアを実行するときDMACはAXIマスタ・インタフェース上でERROR応 答を受信します。
■ DMAチャネル・スレッドはDMALDまたはDMAST実行し、MFIFOバッファが必要な データ量を保持するには小さすぎます。
■ DMAチャネル・スレッドはDMAST実行されますが、スレッドが十分DMALD命令を実 行していません。
■ DMAチャネル・スレッドは、リソースの飢餓でロック・アップし、これは内部の ウォッチドッグ・タイマがタイムアウトになります。
ウォッチドッグ停止
1つ以上のDMAチャネル・プログラムが実行されている場合、DMACがロックアッ プすることができ、MFIFOバッファはDMAプログラムのストレージ要件を満たすた めには小さすぎます。
DMACはDMA転送を完了できない状態で維持することを防ぐためのロジックが含ま れています。
DMACは次のすべての条件が発生したときにロック・アップ検出します。
■ ロードキューが空です。
■ ストアキューが空です。
■ 実行中のすべてのチャネルは、MFIFOバッファに十分な空き領域がないか、また は別のチャネルにロード・ロックを所有しているため、DMALD命令を実行する ことが防止されています。
DMACはロックアップを検出したときに割り込みを通知し、貢献チャネルを中止する こともできます。 DMACの動作は、WDレジスタのwd_irq_onlyビットの状態に依存し ます。
この場合:
■ wd_irq_only=0—DMACは貢献DMAチャネルのすべてを停止して、irq_abort信号 がHighに設定します。
■ wd_irq_only=1—DMACはirq_abort信号がHighに設定します。
詳細は、16–28ページの「DMAチャネル間のリソースの共有」を参照してください。
停止の処理
DMACのアーキテクチャは停止から回復するようにデザインされていません。した がって、停止が発生したときにスレッドを終了するには、マイクロプロセッサなど の外部エージェントを使用する必要があります。
図 16–4 には、停止が発生した後、DMAチャネルおよびDMAマネージャ・スレッド の動作状態を示します。
停止が発生した後、DMACの動作は、スレッド・タイプによって異なります。
■ DMAチャネル・スレッド—スレッドは直ちにFaultingの完了状態に移行します。こ の状態では、DMACは:
■ irq_abort信号をHighに設定します。
■ DMAチャネルための命令の実行を停止します。
■ 停止が正確なであることを提供する停止された命令のアドレスを含むように DMAチャネルにキャッシュ・エントリをすべて無効にし、CPCn レジスタを更 新します。
■ リード・キューおよびライト・キューに残っている手順のためにAXIアクセス を生成していません。
■ 完了するには、現在アクティブなAXIトランザクションを許可します。
図 16‒4. 停止のプロセス
DMA channel thread DMA manager thread
Executing program thread
Has an abort occurred?
Yes No
Active AXI transactions
complete?
No
DMAKILL executed?
Yes No
Executing program thread
Has an abort occurred?
No
Thread moves to the Faulting completing state
Thread moves to the Faulting state
Thread moves to the Stopped state Yes
Yes
1 完全なDMAチャネルのトランザクションの後、スレッドはFaulting状態に移 行します。
■ DMAマネージャ・スレッド—スレッドはすぐにFaulting状態に移行して、DMACは irq_abort信号がHighに設定されます。
外部エージェントは、irq_abort信号のアサーションに応答することができます。
■ DMAマネージャがFaultingかどうかを決定するFSRDレジスタのステータスを読 み込みます。 Faulting状態で、FSRDレジスタは、停止の原因を提供しています。
■ DMAチャネルがエラー発生しているかどうかを決定するためのFSRCレジスタ のステータスを読み込みます。 Faulting状態で、FSRCレジスタは、停止の原因 を提供しています。
Stopped状態に移行するFaulting状態でのレッドをイネーブルするには、外部エー
ジェントが必要です。
■ DMAKILL命令のエンコーディングを使用してDBGINST0レジスタをプログラムし
ます。
■ DBGCMDレジスタに書き込みます。
1 停止されたスレッドがセキュアで保護されている場合、これらを更新する ために安全なスレーブ・インタフェースを使用する必要があります。
Faulting状態のスレッドがDMAKILL実行された後、Stopped状態に移行します。
セキュリティの使用
リセットからDMACを終了するとき、コンフィギュレーション信号の状態のセキュ リティを設定しています。
■ DMAマネージャ・スレッド—DSRレジスタのDNSビットはDMAマネージャ・スレッ ドのセキュリティ状態を返します。
■ イベントと割り込み—CR3レジスタのINSビットは、イベント割り込みリソースの セキュリティ状態を返します。
■ ペリフェラル要求インタフェース—CR4レジスタのPNSビットは、これらのインタ フェースのセキュリティ状態を返します。
さらに、各DMAチャネル・スレッドは、チャネルがStopped状態でない場合に有効 するダイナミック・ノン・セキュア・ビットのCNSが含まれています。
Secure 状態での DMA マネージャ・スレッド
DNSビットが0である場合、DMAマネージャ・スレッドがSecure状態で動作し、安全な 命令フェッチのみ実行します。Secure状態におけるDMAマネージャ・スレッドがプ ロセスするときに、
■ DMAGO—DMACはそのチャネルのCNS ビットに書き込むことで、DMAチャネル・ス
レッドのセキュリティ状態を設定するためには、nsビットの状態を使用していま す。
■ DMAWFE—DMACはイベントが発生するまでスレッドの実行を停止します。イベン
トが発生すると、無関係に対応INSビットのセキュリティ状態にDMACはスレッ ドの実行を継続します。
■ DMASEV—DMACは無関係に対応INSビットのセキュリティ状態のINT_EVENT_RISレ ジスタの対応するビットを設定します。
Non-Secure 状態の DMA マネージャ・スレッド
DNSビットが1の場合、DMAマネージャ・スレッドは、Non-secure状態で動作し、非セ キュア命令フェッチのみ実行します。非セキュア状態におけるDMAマネージャ・ス レッドをプロセスする場合、
■ DMAGO—DMACは、DMAチャネル・スレッドを開始した場合を制御するために、ns
ビットの状態を使用しています。
■ ns = 0—DMACはDMAチャネル・スレッドを起動していません。その代わりに、
DMACは、
■ NOPを実行します。
■ FSRDレジスタを設定します。
■ FTRDレジスタのdmago_errビットを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ ns = 1—DMACはNon-secure状態でのDMAチャネル・スレッドを開始して、CNS ビットが非セキュアであるためのプログラムします。
■ DMAWFE—DMACは、イベントを待つ場合に制御するために、CR3レジスタでの対応
するINSビットのステータスを使用しています。もし、
■ INS = 0—イベントは、Secure 状態です。 DMACは、
■ NOPを実行します。
■ FSRDレジスタを設定します。
■ FTRDレジスタのmgr_evnt_errビットを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ INS = 1—イベントは、Non-secure状態です。 DMACはスレッドの実行を停止し て、イベントが発生するまで待ちます。
■ DMASEV—DMACは、イベント割り込みを作成した場合制御するために、CR3レジス
タで対応するINSビットのステータスを使用しています。もし、
■ INS = 0—イベント割り込みリソースがSecure状態になっています。 DMACは、
■ NOPを実行します。
■ FSRDレジスタを設定します。
■ FTRDレジスタのmgr_evnt_errビットを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ INS = 1—イベント割り込みリソースがNon-secure状態になっています。 DMACは イベント割り込みを作成します。
セキュア状態の DMA チャネル・スレッド
CNSビットが0の場合、DMAチャネル・スレッドがSecure状態で動作するようにプログ ラムされ、安全な命令フェッチのみ実行します。
Secure状態のDMAチャネル・スレッドが以下の命令を処理するとき:
■ DMAWFE—DMACは、イベントが発生するまでスレッドの実行を停止します。 イベン トが発生すると、CR3での対応するINSビットのセキュリティ状態に関係なく DMACはスレッドの実行を継続します。
■ DMASEV—CR3での対応するINSビットのセキュリティ状態に関係なくDMACはス
レッドの実行を継続します。
■ DMAWFP—ペリフェラルはDMA 要求を信号するまではスレッドの実行を停止しま
す。これが発生すると、CR4レジスタでの対応するPNSビットのセキュリティ状 態に関係なくDMACは、スレッドの実行を継続します。
■ DMALDP および DMASTP—DMACは、データ転送がCR4レジスタでの対応するPNSビッ トのセキュリティ状態に関係なく、データ送信が完了したことを通信するペリ フェラルにメッセージを送信します。
■ DMAFLUSHP—DMACは、ペリフェラルの状態をクリアし、CR4レジスタでの対応す
るPNSビットのセキュリティ状態に関係なく、そのレベルのステータスを再送信 するためにペリフェラルにメッセージを送信します。
DMAチャネル・スレッドがSecure状態である場合、DMACは安全かつ非セキュア AXIアクセスを実行することができます。
Non-Secure 非セキュア状態の DMA チャネル・スレッド
CNSビットが1のとき、DMAチャネル・スレッドは、Non-secure状態で動作するように プログラムされ、非セキュア命令フェッチのみ実行します。
Non-secure状態のDMAチャネル・スレッドは、次の命令を処理します。
■ DMAWFE—DMACは、イベントを待つ場合に制御するために、CR3レジスタでの対応
するINSビットのステータスを使用しています。もし、
■ INS = 0—イベントは、Secure状態になっています。DMACは、
■ NOPを実行します。
■ DMAチャネル数に対応するFSRC レジスタに適切なビットを設定します。
■ FTRnレジスタのch_evnt_errを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ INS = 1—イベントは、Non-secure状態になっています。 DMACは、スレッドの実 行を停止して、イベントが発生するまで待ちます。
■ DMASEV—DMACは、イベントを作成した場合制御するために、CR3レジスタでの対
応するINSビットのステータスを使用します。もし、
■ INS = 0—DMAC:イベント割り込みリソースがセキュアな状態になっています。
DMACは、
■ NOPを実行します。
■ DMAチャネル数に対応するFSRC レジスタに適切なビットを設定します。
■ FTRnレジスタのch_evnt_errを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ INS = 1—イベント割り込みリソースがNon-secure状態になっています。 DMACは イベント割り込みを作成します。
■ DMAWFP—DMACは、要求を通知するペリフェラルを待つ場合に制御するために、
CR4レジスタでの対応するPNSビットのステータスを使用します。もし、
■ PNS = 0—ペリフェラルは、Secure状態になっています。 DMACは、
■ NOPを実行します。
■ DMAチャネル数に対応するFSRC レジスタに適切なビットを設定します。
■ FTRnレジスタのch_periph_errを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ PNS = 1—ペリフェラルは、Non-secure状態になっています。 DMACはスレッドの 実行を停止して、要求を通知するまでペリフェラルを待ちます。
■ DMALDP および DMASTP—DMACは、要求を通知するペリフェラルを待つ場合に制御
するために、CR4レジスタでの対応するPNSビットのステータスを使用します。
もし、
■ PNS = 0—ペリフェラルは、Secure状態になっています。 DMACは、
■ NOPを実行します。
■ DMAチャネル数に対応するFSRC レジスタに適切なビットを設定します。
■ FTRnレジスタのch_periph_errビットを設定します。
■ Faulting状態にDMAマネージャを移動します。
■ PNS = 1—ペリフェラルは、Non-secure状態になっています。DMACは、データ 転送が完了したときに通信するペリフェラルへのメッセージを送信します。
■ DMAFLUSHP—DMACは、ペリフェラルへのフラッシュ要求を送信した場合に制御す
るCR4レジスタでの対応するPNSビットのステータスを使用します。もし、
■ PNS = 0—ペリフェラルは、Secure状態になっています。 DMACは、
■ NOPを実行します。
■ DMAチャネル数に対応するFSRC レジスタに適切なビットを設定します。
■ FTRnレジスタのch_periph_errビットを設定します。
■ Faultingの完了状態にDMAマネージャを移動します。
■ PNS = 1—ペリフェラルは、Non-secure状態になっています。 DMACは、ペリフェ ラルの状態をクリアし、そのレベルのステータスを再送信するためにペリ フェラルにメッセージを送信します。
DMAチャネル・スレッドは、Non-secure状態にあり、DMAMOV CCR命令は、セキュア AXIトランザクションを実行するようにチャネルをプログラムしようとする場合、
DMACは、
1. DMANOPを実行します。
2. DMAチャネル番号に対応FSRC レジスタに適切なビットを設定します。
3. FTRnレジスタのch_rdwr_errビットを設定します。
4. Faultingの完了状態にDMAチャネル・スレッドを移動します。