我已经通过Jtag,tftpboot将Linux引导到我的ZYNQ 7000(AVNET)板上。接下来,使其从QSPI引导。
这个项目的目的是通过DMA在PS和PL之间传输数据。我已经用VIVADO完成了设计,并使用Petalinux将Linux Boot 到板上。现在我想写一个测试代码,看看数据传输功能是否工作。当我运行我的代码时,它挂起“寻找中断”。因此,我想检查我的中断是否工作。所以我在我的板终端中尝试cat/proc/interrupts命令,我得到了30到38个中断数,如下所示(下面的例子仅为30)
30:0 0 GIC-0 46 level f8003000.dma.controller
我的系统用户.dtsi文件如下:
/include/ "system-conf.dtsi"
/ {
chosen {
bootargs = "earlycon clk_ignore_unused uio_pdrv_genirq.of_id=generic-uio rootwait quiet loglevel=0";
stdout-path = "serial0:115200n8";
};
};
&axi_dma_0 {
compatible = "generic-uio";
interrupt-parent = <0x1>;
interrupts = <0 29 4 0 30 4>;
};
&qspi {
#address-cells = <1>;
#size-cells = <0>;
flash0: flash@0 {
compatible = "n25q512a","micron,m25p80","jedec,spi-nor";
spi-max-frequency = <50000000>;
reg = <0x0>;
#address-cells = <1>;
#size-cells = <1>;
};
};
字符串
问题是,从cat /proc/interrupts的输出中,我能判断出我的中断正在工作吗?
编辑:当有数据可用于uio的读命令时,我如何找到假设生成的中断号?
1条答案
按热度按时间ijxebb2r1#
我有一个ZYNQ(7020)板,有相同的 Boot 模式。如果你想识别spi或flash的工作状态,如下所示:
1.在spi-nor.c中添加nor flash支持内核已支持n25 q512 a,请查看https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/mtd/spi-nor/spi-nor.c?h=v4.19.297。第1109行
1.内核初始化nor flash(n25 q512 a)
当内核启动时,你会看到nor flash initialize log:
字符串
1.读/写数据到n25 q512 a内核mtd层将创建一个或闪存设备/dev/mtd 0/dev/mtdblock 0从或闪存读取:cat /dev/mtd 0或flashcp xxxx /dev/mtd 0
write:你的nor flash只有一个分区,不要把/flashcp写到/dev/mtd 0,因为uboot镜像存储在位置0。
在读/dev/mtd 0之后,你会发现中断增加了,参见日志:
型