AxiTimer是PL中定制的timer属于arm的外设部分,那么axitimer计时产生的定时器中断是如何中断arm的呢?
在Vivado SDK下基于µC/OS "Hello World"工程中已经添加了Concat模块将定时器的中断输出连接到了zynq的 IRQ_F2P中断源上。也就是axitimer是通过PL到PS的中断使arm中断的。下面的AxiTimer_config代码也说明了AXItimer使用中断源61,,正式f2p中断。
这也给我了一个提示,可以将外部设备的数据完成需要处理的中断映射到f2p中断。以前接触过的PL DMA在数据传输完毕后,产生的中断就是使用f2p中断。
下面是AXITimer_Init()函数关于中断映射的过程函数,并且使能中断。此时中断callback函数还是空函数,相当于中断不会执行任何操作。
最后通过AXITimer_CallbackSet(Timer0, 0, Timer0ISR);将callback函数与中断服务函数联系起来。
上面的中断处理与xilin standalone driver基本是相同的,内部的使用的函数是一致的,如下
UCOS_IntVectSet(62, 0, DEF_BIT_00, Timer1ISR, &Timer1);
UCOS_IntSrcEn(62);
所以教程中的第二个axitimer的例子就不再做了,基本是一样的。