hbird-e-sdk icon indicating copy to clipboard operation
hbird-e-sdk copied to clipboard

E203 无法使能部分中断

Open xiaoerlang0359 opened this issue 3 years ago • 0 comments

详细情况请见risc-v社区 ,最初发现者为卢吉凯。

硬件平台为arty a7,我们给E203添加了一个以太网外设,按照顺序把中断源设置为53号,可是发现外设的确产生了中断信号(边沿),可是plic模块的plic_ext_irq并没有被拉高。

担心是由于添加中断的时候plic模块的修改有问题,我们直接把52号中断(IIC),接到了以太网外设的中断信号上,发现plic模块的plic_ext_irq还是没有被拉高。

我们在对应的c程序中读了一下发现,虽然我们调用了中断使能函数,可是读回来的plic对应中断源的中断使能寄存器还是0。

在卢吉凯的帮助下,发现这里的使能和plic_man.v中的硬件设计不匹配。plic_man中的中断源地址是32位对齐的,而这里的设置却采用8位对齐。

void PLIC_enable_interrupt (plic_instance_t * this_plic, plic_source source){
  unsigned long hart_id = read_csr(mhartid);

  volatile uint8_t * current_ptr = (volatile uint8_t *)(this_plic->base_addr +

                                                        PLIC_ENABLE_OFFSET +

                                                        (hart_id << PLIC_ENABLE_SHIFT_PER_TARGET) +

                                                        (source >> 3));

  uint8_t current = *current_ptr;

  current = current | ( 1 << (source & 0x7));

  *current_ptr = current;

}

xiaoerlang0359 avatar Jul 22 '20 17:07 xiaoerlang0359