販売終了のお知らせ

SUZAKU シリーズ販売終了のお知らせ > 詳細情報


Howto : EDK9.1iの割り込みハンドラの登録について

該当製品:
SZ310-SIL
SZ410-SIL

EDK9.1iからSoftware Platform SettingsのInterrupt Handlersの設定が削除されました。このため、スターターキットガイドの11章に記載されている「割り込みハンドラの登録」ができません。

対処方法

対処方法は二通りあります。「方法1 静的に割り込みハンドラを登録」は、暫定的な対策です。Xilinx推奨の方法は「方法2 動的に割り込みハンドラを登録」になります。

方法1 静的に割り込みハンドラを登録

MSSファイルを修正し、静的に割り込みハンドラを登録します。
  1. sz***-add_slot-********\xps_proj.mssを開く
  2. opb_sil00にint_handlerを追記し保存
    
    BEGIN DRIVER
     PARAMETER DRIVER_NAME = opb_sil00
       ・
       ・
     PARAMETER int_handler = timer_interrupt_handler, int_port = IP2INTC_Irpt  # 追記
       ・
       ・
    END
    

方法2 動的に割り込みハンドラを登録

割り込み初期化時に動的に割り込みハンドラを登録します。

  1. sz***-add_slot-********\code\interrupt.cを開く
  2. 関数 interrupt_init()に、XIntc_RegisterHandlerを追記し保存
    
    int interrupt_init(void)
    {
       ・
       ・
        /*enable interrupt */
        XIntc_RegisterHandler(XPAR_SYSTEM_INTC_BASEADDR,XPAR_SYSTEM_INTC_OPB_SIL00_0_IP2INTC_IRPT_INTR,
          (XInterruptHandler)timer_interrupt_handler, (void *)0);                         // 追記
       ・
       ・
    }
    
  3. sz***-add_slot-********\drivers\opb_sil00_v*_**_*\opb_sil00.cを開く
  4. 関数 OPB_SIL00_Intr_DefaultHandler()の、xil_printfを削除し保存
    
    void OPB_SIL00_Intr_DefaultHandler(void * baseaddr_p)
    {
       ・
       ・
      // xil_printf("IP Interrupt! Status register (ISR) value : 0x%08x \n\r", IntrStatus);  // 削除
       ・
       ・
    }
    

    これは、自動生成されるデフォルトハンドラで使用しているxil_printf()が、stdioを使用しない環境では生成されないために、リンクエラーが発生することを避けるためです。

補足

Xilinx アンサー データベースに情報が掲載されております。あわせてご参照ください。

カテゴリ: