zynqmp 设备树中断号描述在芯片中的对应

查看ug1085-zynq-ultrascale-trm.pdf 13节 interrupt中可以知道以下内容:

zynqmp 设备树中断号描述在芯片中的对应_第1张图片

zynqmp 设备树中断号描述在芯片中的对应_第2张图片

可以看到实际IPI通道的中断号在芯片中标记的是61~67,PL端到PS端的中端号是group0=121~128  对应PL端中断号0~7

group1=136~143 对应PL端中断号8~15

由于共享和私有中断占有前面32个中断号,所以实际的设备树在描述的时候需要减去32作为中断号的描述:如下:

myipi: myipimod@0 {
        compatible = "my_ipi_test";
        interrupt-parent = <&gic>;
        interrupts = <0 34 4>;  //对应芯片上的中断号 = 34+32 = 66 = ipi Ch2,0代表spi模式中的暖,4为高电平触发。
        xlnx,ipi-id = <0>;
        xlnx,ipi-remotedid = <2>;
};

mygpib: gpibmod@80015000 {
        compatible = "my_gpib_test";
        #address-cells = <2>;  //表示设备的reg地址有两个字长(32位)数值组成,由其父节点决定
        #size-cells = <2>;   //表示设备的reg地址的长度(决定设备的地址范围)由两个字长(32位)数值决定,(即两个数值高32位低32位组成一个长度、地址)
        reg = <0x0 0x80015000 0x0 0x200>  //格式为
由上述的xxx-cells决定填充多少组address lenth ,reg可以表述当前设备的寄存器地址或者是设备的基地址开始和范围等,实际上的reg地址由驱动程序决定,如果是寄存器地址,在platform_get_resource得到resource句柄的资源后,使用ioremap(io映射使用)映射到虚拟地址,然后使用虚拟地址可以访问读写寄存器数值。如果是设备地址也可以使用将得到的resource*句柄的资源使用devm_ioremap_resource()得到映射的虚拟地址范围空间,使用这个虚拟地址指针可以操作地址或是范围内的寄存器等。 //当前这个reg得到的地址范围是0x0000000080015000 ~ 0x0000000080015200 interrupt-parent = <&gic>; //中断父节点 interrupts = <0 93 1>; //指示这个设备使用的是PL断的第4号中断号: 93+32 = 125 在上图可以找到对应的中断号 };

查看系统注册的中断号如下:使用cat /proc/interrupts

参考网址:

        zynq linux多个中断注册,zynq linux 中断号如何对应_勇客的博客-CSDN博客

【分享】扩展MPSoC中断 - HankFu - 博客园 (cnblogs.com)

你可能感兴趣的:(fpga开发,linux,zynqmp,中断号)