Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rCore-Tutorial-Book-v3/chapter9/2device-driver-0 #196

Open
utterances-bot opened this issue Oct 15, 2023 · 4 comments
Open

rCore-Tutorial-Book-v3/chapter9/2device-driver-0 #196

utterances-bot opened this issue Oct 15, 2023 · 4 comments
Labels
comments An area where readers can discuss related topics after every article.

Comments

@utterances-bot
Copy link

外设平台 - rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档

https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter9/2device-driver-0.html

Copy link

下面是一些与 PLIC 相关的寄存器

有个错别字

@wyfcyx wyfcyx added the comments An area where readers can discuss related topics after every article. label Oct 15, 2023
Copy link

lispking commented Nov 6, 2023

Claim         0x0c20_0004    按优先级顺序返回下一个中断
Complete      0x0c20_0004    写操作表示完成对特定中断的处理

这两个地址是有一个写错了么?

Copy link

在RISC-V中,与外设连接的I/O控制器的一个重要组成是平台级中断控制器(Platform-Level Interrupt Controller,PLIC),它的一端汇聚了各种外设的中断信号,另一端连接到CPU的外部中断引脚上。当一个外部设备发出中断请求时,PLIC 会将其转发给 RISC-V CPU, CPU 会执行对应的中断处理程序来响应中断。通过RISC-V的 mie 寄存器中的 meie 位,可以控制这个引脚是否接收外部中断信号。当然,通过RISC-V中M Mode的中断委托机制,也可以在RISC-V的S Mode下,通过 sie 寄存器中的 seie 位,对中断信号是否接收进行控制。

这一段的最后有两个比较粗心的错误:应该是mstatus寄存器中的meie位,而不是mie寄存器,mie本身是mstatus的另一个位,控制全局中断是否开启;同理,最后sie寄存器也应改为sstatus寄存器。

Copy link

@chestNutLsj 这段话并没有问题。MIE寄存器提供MEIE、MTIE和MSIE三个标志位分别用于控制M-mode级别外部中断、时钟中断和软中断是否有效。这段话所说的外部中断就是由MIE寄存器的MEIE位控制的。mstatus寄存器中也没有MEIE位,其中的MIE位是用来控制所有中断(包括外部中断、时钟中断和软中断)是否有效的。具体可查看RISC-V特权级规范(20211203)3.1.6节和3.1.9节。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comments An area where readers can discuss related topics after every article.
Projects
None yet
Development

No branches or pull requests

5 participants