XILINX的INTC软核使用

一、有啥用

    INTC是一个软核,可以捕捉PL端外设的多个中断,并输出一个中断至CPU。INTC支持支持级联,能在系统中有非常多的外设而CPU中断接口不足时发挥作用。

二、SDK例程吐槽

    在xilinx的SDK中有相关外设、IP的例程,加快了开发速度。然而不得不吐槽的是INTC的例程不够完善。INTC例程中并未提及GIC的初始化,并且SDK不会自动生成INTC在GIC上的中断号,需要自己通过手册(例如UG1085)获得该中断号,此部分对开发的误导较大,让人误以为不需要设置GIC中断。并且PL串口的中断例程也很糟糕,在接收到特定个数的数据发生中断后,如果再接收到新的数据,那程序会不停地进入中断。

三、怎么用

  1. INTC的中断输出连接到CPU的GIC上,并初始化GIC,使能GIC相应中断号的中断,并将中断函数设置为INTC本体的服务函数XIntc_DeviceInterruptHandler
  2. 将PL外设中断信号连接入INTC,初始化INTC,并将相应INTC的输入接口编号使能中断,设置外设所需的中断服务函数
  3. 初始化外设,设置好外设的中断功能。
  4. 中断发生后GIC会调用相应的INTC中断服务函数,函数内会根据INTC内部寄存器自动识别是哪个外设产生中断,并调用相应的中断函数。
  5. GIC和INTC不需要手动清中断,而外设的可能需要自己在中断服务中清中断
  6. 参考设计,PL(GIC)中断:http://xilinx.eetrend.com/blog/2019/100043419.html
  7. 参考文章,INTC:http://blog.sina.com.cn/s/blog_98740ded0102uyzo.html

猜你喜欢

转载自blog.csdn.net/a1254484594/article/details/108063641