🔍 搜索帖子 / 资讯 / 芯片型号…
论坛/开源蜂鸟E203/arty a7 调试蜂鸟E203 的demogpio程序 重复两次进入中断
arty a7 调试蜂鸟E203 的demogpio程序 重复两次进入中断
开源蜂鸟E203 作者 柳京伯 发布于 2020-05-17 09:55(2337 天前) 9242 浏览

大家好,有个问题想请教一下:

    如题,硬件平台为arty a7,用prebuilt的system.mcs文件,在芯来的IDE中调试demogpio程序,可是发现,每次用button1进入中断后,都是连续进入两次。昨天看公众号,有提到访问device乱序的问题。尝试加了fence的内嵌汇编:

  __asm__ __volatile__(
		"fence"
		  :
		  :
		  :"memory"
  );

可是还是会连续进入两次。有人遇到同样的问题吗?望解答。

全部回复 6
威
威尔罗格1959 天前 · 1 楼
回复 卢吉凯:

这应该是个bug,原因出在PLIC硬件模块,修改方式如下。

找到sirv_plic_man.v文件,定位到行

icb_claim_irq [i] = icb_claim_irq[i] | ((icb_rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

将其中icb_rsp_rdata改成rsp_rdata,也就是这行改成

icb_claim_irq [i] = icb_claim_irq[i] | ((rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

问题解决。

改了解决不了问题呀,请问具体怎么解决这个问题呢

X
XQQ19892000 天前 · 2 楼
回复 柳京伯:

牛逼,这段时间看了一下plic_man的源码,的确是这样的,当icb_rsp_rdata==i的时候cmd通道的握手已经结束了,所以只有第二次进入中断的时候,才能让icb_rsp_rdata和icb_cmd_rd_hsked同时出现

请问你改了之后解决了吗

X
XQQ19892000 天前 · 3 楼
回复 卢吉凯:

这应该是个bug,原因出在PLIC硬件模块,修改方式如下。

找到sirv_plic_man.v文件,定位到行

icb_claim_irq [i] = icb_claim_irq[i] | ((icb_rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

将其中icb_rsp_rdata改成rsp_rdata,也就是这行改成

icb_claim_irq [i] = icb_claim_irq[i] | ((rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

问题解决。

改了还是会进两次中断啊,怎么办

柳京伯
柳京伯2206 天前 · 4 楼
回复 卢吉凯:

这应该是个bug,原因出在PLIC硬件模块,修改方式如下。

找到sirv_plic_man.v文件,定位到行

icb_claim_irq [i] = icb_claim_irq[i] | ((icb_rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

将其中icb_rsp_rdata改成rsp_rdata,也就是这行改成

icb_claim_irq [i] = icb_claim_irq[i] | ((rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

问题解决。

牛逼,这段时间看了一下plic_man的源码,的确是这样的,当icb_rsp_rdata==i的时候cmd通道的握手已经结束了,所以只有第二次进入中断的时候,才能让icb_rsp_rdata和icb_cmd_rd_hsked同时出现

卢吉凯
卢吉凯2290 天前 · 5 楼

这应该是个bug,原因出在PLIC硬件模块,修改方式如下。

找到sirv_plic_man.v文件,定位到行

icb_claim_irq [i] = icb_claim_irq[i] | ((icb_rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

将其中icb_rsp_rdata改成rsp_rdata,也就是这行改成

icb_claim_irq [i] = icb_claim_irq[i] | ((rsp_rdata == i) & icb_cmd_sel_clam & icb_cmd_rd_hsked);

问题解决。

领主文
领主文2336 天前 · 6 楼

看公众号好像会专门出一期讲fence的,要不等那篇文章出来了再试一下?

💡 请 登录 后参与讨论(微信扫码即登录/注册)