驱动程序的静态加载存在一些问题,导致混乱。为了静态加载驱动程序,我遵循了两种方法 Process 1) 和 Process 2)。早些时候我遵循:
流程一:步骤如下:
- 我构建了名为 demochardrv.ko 的 char 驱动程序。
- 我将驱动程序复制到 /lib/modules/2.6.34.12/kernel/drivers/char/ 中。
- 我在 /etc/modules 中输入了它。
- 重启。
但是这 4 个步骤之前没有工作,我没有在 lsmod 中看到我的驱动程序。
因此,除了上述步骤之外,我还采用了另一种方式: 过程 2:步骤如下:
我在文件“/lib/modules/2.6.34.12/build/drivers/char/Kconfig”中添加了驱动程序详细信息: config DEMOCHARDRV tristate“TEST DEMO DRIVER' default n help TEST STATIC INSTALL DRIVER
我在“/lib/modules/2.6.34.12/build/drivers/char/Makefile”中添加了驱动程序详细信息:obj-$(CONFIG_DEMOCHARDRV) += demochardrv.o
复制 /lib/modules/2.6.34.12/build/drivers/char/ 中的驱动程序文件。
- 编辑 .config 文件并添加 CONFIG_DEMOCHARDRV=y。
- 触发 make menuconfig 并选择(使用 * / M)我的驱动程序。
- 制作、制作模块、制作 modules_install 和制作安装。
- 重启
现在,即使我没有在 menuconfig 中选择它,驱动程序也会在启动时加载。
为了解决流程 2 中的问题,我删除了 /etc/modules 中的条目。但是现在驱动程序根本没有加载。因此,我删除了 Process 2 步骤并再次遵循 Process 1 步骤,驱动程序现在正在启动时加载。现在流程 1 正在工作。但是流程 2 并不是单独工作的,它需要流程 1 的额外步骤。
所以我很困惑哪个过程是正确的。任何人都可以提供一些输入吗?