3

我用串行设备驱动程序静态编译了linux内核,即obj-y。

现在我正在开发一个简单的串行驱动程序,我想对其进行测试,但是由于内核启动时会加载模块,因此 IO 端口区域(0x3f8 及以上)已注册到串行模块。我需要删除(注销)它,以便我可以将它分配给我的驱动程序。

那么,有没有办法删除静态链接的设备驱动程序?或者我应该重新编译整个内核:/

4

1 回答 1

4

您应该重新编译整个内核并使该驱动程序成为obj-m.

加载后(由 自动完成modprobe或使用手动完成insmod),您可以删除它(使用rmmod),修改代码,再次编译并再次加载。

当然,如果在驱动程序运行过程中出现了一些没有正确处理的严重错误,整个内核将处于不稳定状态,您将不得不重新启动(直到您修复了导致此问题的原因)。

于 2013-11-01T14:17:40.277 回答