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

Update ch9 2device-driver-0.rst #236

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/chapter9/2device-driver-0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
驱动程序概述
----------------------------------------

很难为驱动程序提供一个精确的定义。基本而言,驱动程序是一种软件组件,是操作系统与机外设之间的接口,可让操作系统和设备彼此通信。从操作系统架构上看,驱动程序与I/O设备靠的更近,离应用程序更远,这使得驱动程序需要站在协助所有进程的全局角度来处理各种I/O操作。这也就意味着在驱动程序的设计实现中,尽量不要与单个进程建立直接的联系,而是在全局角度对I/O设备进行统一处理。
很难为驱动程序提供一个精确的定义。基本而言,驱动程序是一种软件组件,是操作系统与外设之间的接口,可让操作系统和设备彼此通信。从操作系统架构上看,驱动程序与I/O设备靠的更近,离应用程序更远,这使得驱动程序需要站在协助所有进程的全局角度来处理各种I/O操作。这也就意味着在驱动程序的设计实现中,尽量不要与单个进程建立直接的联系,而是在全局角度对I/O设备进行统一处理。

上面只是介绍了CPU和I/O设备之间的交互手段。如果从操作系统角度来看,我们还需要对特定设备编写驱动程序。它一般需包括如下一些操作:

Expand Down Expand Up @@ -253,7 +253,7 @@
平台级中断控制器
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在之前的操作系统中,已经涉及到中断处理,但还没有处理外设(时钟中断时RISC-V 处理器产生的)产生的中断。如果要让操作系统处理外设中断,就需要对中断控制器进行初始化设置。在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`` 位,对中断信号是否接收进行控制。
在之前的操作系统中,已经涉及到中断处理,但还没有处理外设(时钟中断是 RISC-V 处理器产生的)产生的中断。如果要让操作系统处理外设中断,就需要对中断控制器进行初始化设置。在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`` 位,对中断信号是否接收进行控制。

.. note::

Expand Down
Loading