无需连接设备即可安装Linux PCI驱动程序

时间:2012-10-03 18:25:42

标签: c linux-device-driver pci

有没有办法在不连接设备的情况下安装Linux设备驱动程序?

我可以完全访问驱动程序代码。我正在使用Linux Kernel 2.6.35。

我试过insmod和modprobe无济于事。我正在开发一个自定义驱动程序(我没有写它),但没有任何文档。

2 个答案:

答案 0 :(得分:2)

Linux中的设备驱动程序(主要是)内核模块。所以是的!您需要做的就是加载内核模块。

将代码编译为内核模块make installmodprobe <modulename>

你的司机的文件应该已经告诉过你了。 ;)

答案 1 :(得分:2)

如果系统中不存在设备实例,则不应安装正确编写的设备驱动程序(热插拔设备可能是例外)。在某些版本的Unix中,驱动程序的 probe()函数会检查设备是否存在。在Linux中,探测功能通常包含在_init()例程中。当没有检测到硬件时,驱动程序不应该自己注册,如果是模块,则返回导致它被卸载的状态。

如果你坚持在内存中使用驱动程序代码,那么不要将其构建为可加载模块,而是选择Linux驱动程序作为内存驻留内核的一部分。通过在menuconfig程序中键入“M”来选择将驱动程序构建为可加载模块。要将驱动程序内置到内核中,请使用空格键选择驱动程序。选择将标有星号*而不是M来表示这种差异。

(此menuconfig对话框的文本来自Kconfig个文件。此配置对话框的产品是.config文件,其中包含Makefile中使用的配置符号控制目标文件的编译。前面假设这个驱动程序已经被合并到Linux内核源代码树中。如果你只有源代码文件,那么你必须决定源代码树在这里的位置然后,您可以手动编辑Makefile以无条件地在相应的子目录中编译驱动程序。或者使用配置变量自定义KconfigMakefile文件司机。)

要保持所有驱动程序代码的驻留,您必须进行一些次要的代码更改。通常,初始化代码和数据放在与“普通”文本和数据分开的文本和数据部分中,一旦内核完成引导,就会释放该内存部分。要防止释放任何驱动程序代码和数据,请删除声明中的__init__exit部分说明符。

当然,您必须构建新的内核二进制文件才能合并此设备驱动程序。在添加驱动程序之前,您应该尝试使用以前版本的.config文件。