平台级中断控制器(PLIC)是RISC-V系统中管理外部中断的核心组件,负责将中断路由到适当的CPU核心。本文将深入剖析PLIC的工作原理和正确的初始化顺序。
简单理解PLIC是什么
PLIC就是一个中断调度中心,它有四个主要工作:
给中断排优先级:为不同中断源分配优先级
开关控制:决定哪些中断可以接通,哪些暂时不理
阈值配置:为每个CPU/硬件线程设置最低优先级门槛
中断路由:把中断转给合适的CPU核心
PLIC中断处理流程
在深入初始化之前,理解PLIC处理中断的机制至关重要。中断处理分为四个阶段:
1. 网关阶段
外部设备向PLIC发送中断信号,这是外设中断(UART、GPIO、定时器等)进入控制器的入口点。
2. 中断挂起阶段
当PLIC接收到中断信号时,通过在中断挂起寄存器中设置相应位,将对应中断标记为“挂起”状态,表示中断正等待CPU处理。
3. 声明阶段
CPU查询PLIC以获取最高优先级的挂起中断。CPU读取声明/完成寄存器,该寄存器返回最高优先级挂起中断的ID。一旦被声明,中断不再处于挂起状态,进入处理阶段。
4. 完成阶段
CPU完成中断处理后,通过将中断ID写回声明/完成寄存器通知PLIC。这表示中断已完全处理,可以从PLIC内部状态清除。
实际使用:PLIC中断处理流程
正确的PLIC初始化对于可靠的中断处理至关重要。必须按照特定顺序进行设置,以避免竞态条件并确保所有中断正确配置。
第一阶段:中断源优先级配置
首先需