U54 内核 hart 通过将其从声明中收到的中断 ID 写入 claim_complete 寄存器(表 115)来表示它已完成执行中断处理程序。 PLIC 不检查完成 ID 是否与该目标的最后一个声明 ID 相同。 如果完成 ID 与当前为目标启用的中断源不匹配,则完成将被静默忽略。 PLIC 无法将新中断转发给已声明中断但尚未完成中断处理程序的...
上图展示了 PLIC 的架构图,PLIC 可以转发单个中断源到到多个 CPU 核心。在进入 PLIC 处理函数后,CPU 将会读取 claim 寄存器获取中断号。成功读取后 PLIC 将会自动清除 PLIC pending 寄存器中的 pending 位,宣称这个中断已经被服务。除此之外,若 pending 位没有被设置时去读取 claim 寄存器也是合法的。举例来说,...
3、用户中断处理 voidaxiInterrupt(){uint32_tclaim;//While there is pending interruptswhile(claim = plic_claim(BSP_PLIC, BSP_PLIC_CPU_0)){switch(claim){#ifdefSYSTEM_AXI_A_BMBcaseSYSTEM_PLIC_SYSTEM_AXI_A_INTERRUPT:bsp_print("Entered AXI Interrupt Routine, Passed!");break;#endifdefault: cras...
定位claim寄存器值地址为 handler->hart_base + CONTEXT_CLAIM; 其中#define CONTEXT_CLAIM0x04 #define CONTEXT_PER_HART0x1000 其中hartbase按如下计算 handler->hart_base= priv->regs+CONTEXT_BASE+i*CONTEXT_PER_HART; 其中regs是设备树中传递过来的plic基地址,上上面的布局对应。 这里的i来源于 nr_contexts ...
中断使能寄存器(Enable Registers):每个hart都有一组中断使能寄存器,用于使能或禁用特定中断源。 阈值寄存器(Threshold Registers):每个hart都有一个阈值寄存器,用于设置中断的优先级阈值。 中断请求和完成寄存器(Claim/Complete Registers):用于请求和完成中断处理 未完...
对于每个中断目标而言,如果收到了中断通知,且决定对该中断进行响应,则需要向PLIC发送中断响成(Interrupt Claim)消息。PLIC定义的中断响应机制如下: ●PLIC实现一个存储器地址映射的可读寄存器,中断目标可以通过对此寄存器进行读操作,达到中断响应的目的。作为反馈(Claim Response),此读操作将返回一个ID,表示当前仲裁出的...
C.3.3 PLIC中断源之优先级(Priority) 334 C.3.4 PLIC中断源之中断使能(Enable) 334 C.4 PLIC中断处理机制 335 C.4.1 PLIC中断通知机制(Notification) 335 C.4.2 PLIC中断响应机制(Claim) 335 C.4.3 PLIC中断完成机制(Completion) 336 C.4.4 PLIC中断完整流程 336 C.5 PLIC寄存器总结 337 C.6 总结与比较...
以下代码,是riscv plic处理一个外部中断的handler程序。在handler程序中 首先写irq_generator组件的clear寄存器,将中断源给清除掉 然后写plic的complete寄存器,通知plic,该中断处理完毕 plic_irq_mmode: li a1, PLIC_M_CLAIM // a0 save the interrupt id ...
int devintr() { // 读取scause确定trap是来自外部设备的中断 uint64 scause = r_scause(); if((scause & 0x8000000000000000L) && (scause & 0xff) == 9){ // irq代表哪一个设备的中断 int irq = plic_claim(); // 如果是UART0_IRQ,调用uartintr if(irq == UART0_IRQ){ uartintr(); ...
C.3.2 PLIC中断源之编号(ID) 334 C.3.3 PLIC中断源之优先级(Priority) 334 C.3.4 PLIC中断源之中断使能(Enable) 334 C.4 PLIC中断处理机制 335 C.4.1 PLIC中断通知机制(Notification) 335 C.4.2 PLIC中断响应机制(Claim) 335 C.4.3 PLIC中断完成机制(Completion) 336 ...