AR# 54128

Zynq 割り込みコントローラー (GIC) での入れ子タイプの割り込みのサポート

説明

Zynq 割り込みコントローラー (GIC) で入れ子タイプの割り込みはサポートされますか。

ソリューション

入れ子タイプの割り込みは、2013.4/14.7 バージョンでの Zynq SoC の GIC 割り込みコントローラーでサポートされています。このバージョンを使用している場合は、手順 3 に進んでください。

これより以前のバージョンを使用していて入れ子タイプの割り込み機能を追加したい場合は、このアンサーの最後に添付されている ZIP ファイルをローカルの EDK インストール ディレクトリで解凍してください。

54128.zip から standalone_v3_10_a を次のディレクトリにコピーします。

<XILINX_EDK>\sw\libs\bsp

54128.zip から scugic_v1_04_a を次のディレクトリにコピーします。
<XILINX_EDK>\sw\XilinxProcessorIPLib\drivers

そして、次の手順を実行します。

  1. BSP を作成します。

    BSP (Board Support Package) を作成します。

    SDK で [File] → [New] → [Board Support Package] をクリックして、ドロップダウン メニューから [standalone] を選択します。

    アプリケーションの設定に合わせて BSP をコンフィギュレーションし、ps7_scugic_0 ドライバーのバージョンが 1.04.a に設定されていることを確認します。
  2. 新規作成した BSP に既存のアプリケーションをリンクします。

    既存のアプリケーションをリンクするには、そのアプリケーションを右クリックし、[Properties] -> [Project References] をクリックします。古い BSP をオフにし、入れ子タイプの割り込みが使用できるように新しく作成した BSP を追加します。

  3. 入れ子タイプの割り込み機能をアプリケーションに追加します。

    アプリケーションで入れ子タイプの割り込みを使用できるようにするには、XilExceptionInit が呼び出される前に GIC の初期化中に次のファンクションを追加します。
    XScuGic_CPUWriteReg(IntcInstancePtr、XSCGIC_BIN_PT_OFFSET、0x03);

    割り込みハンドラーで、現在の割り込みのソースを消去し、次のファンクションを使用して入れ子タイプの割り込みを有効にします。
    Xil_EnableNestInterrupts();

    このマクロを呼び出した後、入れ子タイプの割り込みは使用可能になります。しかし、処理中の既存の割り込みよりも優先順位の高いグループの割り込みのみが対象となります。

    次のヘッダー ファイルを含める必要があります。
    #include ''xil_exception.h''

    同様に、割り込みハンドラーを終了する前に入れ子タイプの割り込みを無効にする必要があります。
    Xil_DisableNestedInterrupts();

注記 : このアンサーに nested_interrupt_demo.c というファイルがありますが、これは入れ子タイプの割り込みを確認するために使用します。これをテストするには、Zynq SoC プロセッサ サブシステムに 2 つのタイマーを使用した単純な zc702 を作成します。

SDK にエクスポートし、上記の手順に従います。空のアプリケーションを作成し、nested_interrupt_demo.c をインポートします。

添付ファイル

関連添付ファイル

タイトル サイズ ファイルタイプ
AR54128.zip 492 KB ZIP
AR# 54128
日付 01/15/2014
ステータス アクティブ
種類 一般
デバイス
ツール 詳細 概略