Plic映射器

PLIC映射器定义了PLIC(平台级中断控制器)的寄存器生成和访问。

PlicMapper.apply

(bus: BusSlaveFactory, mapping: PlicMapping)(gateways : Seq[PlicGateway], targets : Seq[PlicTarget])

PlicMapper的参数:

  • bus:连接此控制器的总线

  • mapping:一个映射配置(见上文)

  • gateways:用于生成总线访问控制的PlicGateway(中断源)序列

  • targets:生成总线访问控制的PlicTarget序列(如:多核)

它遵循riscv提供的接口:https://github.com/riscv/riscv-plic-spec/blob/master/riscv-plic.adoc

截至目前,有两种内存映射可用:

PlicMapping.sifive

遵循SiFive的PLIC映射(例如 E31核心复合手册 ),基本上是一个成熟的PLIC

PlicMapping.light

此映射生成更轻量级的PLIC,但代价是缺少一些可选特性:

  • 不读取中断优先级

  • 不读取中断的挂起位(必须使用声明(claim)/完成(complete)机制)

  • 不读取目标的阈值

剩下的寄存器&逻辑会被生成.