下一页 上一页 目录

5. 告诉驱动程序配置信息 ??

5.1 简介

现代设备的驱动程序通常能够自行找出总线资源配置,而无需您告知任何信息。它甚至可以使用 PnP 方法在硬件中设置总线资源。有些驱动程序有多种方法来了解其物理设备的配置。最坏的情况下,您必须将总线资源硬编码到内核(或模块)中并重新编译。

中间情况包括您运行程序向驱动程序提供总线资源信息,或将信息放入配置文件中。在某些情况下,驱动程序可能会在其怀疑设备存在的地址处探测设备(但如果 PnP 方法未启用设备,则它永远找不到 PnP 设备)。然后它可能会尝试测试各种 IRQ 以查看哪个有效。它可能会或可能不会自动执行此操作。

在现代情况下,驱动程序应使用 PnP 方法查找设备以及 BIOS 等设置的总线资源,但实际上不会设置它们。它也可能会查看 /proc 目录中的一些“文件”。

可能需要“手动”告诉驱动程序应使用哪些总线资源。您可以将此类总线资源作为参数传递给内核或可加载模块。如果驱动程序内置于内核中,则可以通过“启动提示符”将参数传递给内核。请参阅 Boot-Prompt-HOWTO,其中描述了一些总线资源和其他参数。一旦您知道要传递给内核的参数,就可以将它们放入引导加载程序配置文件中。例如,将 append="..." 放入 lilo.conf 文件中,然后使用 lilo 命令将此信息放入 lilo 内核加载器中。

如果驱动程序作为模块加载,在许多情况下,模块会找到所需的总线资源,然后在设备中设置它们。在其他情况下(主要针对较旧的 PC),您可能需要将总线资源作为参数提供给模块。模块的参数(包括自动加载的模块)可以在 /etc/modules.conf 中指定。通常有工具用于修改此文件,这些工具取决于发行版。此文件中的注释应有助于了解如何修改它。此外,您放入 /etc/modules 中的任何模块都将与其参数一起加载。

尽管驱动程序如何查找总线资源的方式存在很多不一致性,但最终目标是相同的。如果您在使用驱动程序时遇到问题,您可能需要查看驱动程序文档(检查内核文档树)。以下部分介绍了一些驱动程序的简短示例。

5.2 串行端口驱动程序示例

对于 PCI 串行端口(以及 2.4 内核之后的 ISA PnP 串行端口),串行驱动程序会检测串行端口的类型并使用 PnP 进行配置。遗憾的是,可能有一些 PCI 串行端口尚不支持。

对于使用非常旧的内核和串行驱动程序的标准 ISA 串行端口(不适用于多端口卡),驱动程序会探测两个标准地址的串行端口。它不探测 IRQ,但它只是将“标准”IRQ 分配给前两个串行端口。这可能是错误的。

对于其他任何情况,必须手动修改 setserial 程序的配置文件。有关更多详细信息,请参阅 Serial-HOWTO。您可以使用 setserial 来告知驱动程序 IO 地址。Setserial 通常从启动文件中运行。在较新版本中,有一个 /etc/serial.conf 文件(或 /var/lib/setserial/autoconfig),您只需以正常方式使用 setserial 命令“编辑”该文件,并且您使用 setserial 设置的内容将保存在 serial.conf 配置文件中。当 setserial 命令从启动文件运行时,应查阅 serial.conf 文件。您的发行版可能会或可能不会为您设置此项。

根据您提供的选项,使用 setserial 有两种不同的方式。一种用途是手动告诉驱动程序配置。另一种用途是在给定地址探测并报告此处是否存在串行端口。它也可以探测此地址并尝试检测此端口使用的 IRQ。

即使使用现代内核,如果驱动程序无法检测到串行端口,或者如果您有非常旧的硬件,有时也需要 setserial。


下一页 上一页 目录