Linux kernel 如何处理lowRISC芯片上的以太网中断?

Linux kernel 如何处理lowRISC芯片上的以太网中断?,linux-kernel,interrupt-handling,riscv,Linux Kernel,Interrupt Handling,Riscv,我最近正在开发lowRISC,我想为它添加以太网支持。我已经添加了以太网IP,并将其连接到AXI总线和以太网PHY,并且我将以太网中断添加到中断线,就像uart和spi一样 现在我正在linux内核中编写一个驱动程序来支持我的以太网。但是我没有找到uart和spi中断的句柄函数,只有两个中断,分别称为IRQ_软件和IRQ_定时器(在文件arch/riscv/include/asm/IRQ.h中) lowRISC芯片如何处理uart和spi中断?我应该如何处理lowRISC芯片上的以太网中断?您的

我最近正在开发
lowRISC
,我想为它添加
以太网支持。我已经添加了
以太网IP
,并将其连接到
AXI总线
以太网PHY
,并且我将
以太网中断
添加到
中断线
,就像
uart
spi
一样

现在我正在
linux内核中编写一个驱动程序来支持我的以太网。但是我没有找到uart和spi中断的句柄函数,只有两个中断,分别称为
IRQ_软件
IRQ_定时器
(在文件
arch/riscv/include/asm/IRQ.h
中)


lowRISC芯片如何处理
uart
spi
中断?我应该如何处理lowRISC芯片上的以太网中断?

您的lowRISC版本是什么?您的主板是什么?应该由加载程序传递给内核,它存储在内核附近(或者它已经在使用devicetree?)。中断不在源代码中,它们是在引导过程中定义的(由引导日志和
dmesg
打印,也可以是
cat/proc/Interrupts
)。什么是“以太网IP”,是来自Altera还是Xilinx,哪一个,哪一个版本。供应商是否有此IP的驱动程序?我使用的是“debug-v0.3”lowRISC,我的板是“Nexys 4 DDR”。以太网IP是Xilinx AXI ethernetlite的IP核心,linux内核为其提供了驱动程序。我按照中的说明将IP核添加到lowRISC的“AXI IO网络”。现在我正在为内核添加驱动程序,我发现我的
boot.bin
无法正确加载linux内核。即使我在lowRISC的github上使用原始代码(没有任何修改),也会出现此问题:-(Wang,关于“lowRISC芯片如何处理uart和spi中断”-有一个有趣的提交,提到uart irq:“连接uart中断”-wsong83于2016年7月6日提交;irq向量在chip_top.sv:
//中断;分配中断={62'b0,spi_irq,uart_irq}
与Rocket的
.io\u中断连接。Xilinx AXI ethernetlite IP core()的linux驱动程序在哪里,它是
drivers/net/ethernet/Xilinx/Xilinx\u emaclite.c
()?您的linux内核版本是什么,是4.6吗?xilinx_emaclite.c驱动程序基于devicetree,您是否为riscv linux实现了devicetree(可能没有)?据我所知,该项目尚未启动/完成。在lowRISC release debug-v0.3中,UART的中断由BBL(berkeley bootloader)处理。内核使用sbi调用进行控制台访问,无论控制台是由UART实现的还是其他与内核无关的内容。也就是说,内核不会因来自的中断而公开UART。对基于SPI的闪存的内核支持使用轮询,因此中断线不被使用(尽管已连接)。很抱歉,在这方面没有太大帮助。可以引发中断,但实现不是标准的。