多个设备的可加载内核模块(LKM)

时间:2015-09-17 06:27:47

标签: linux embedded linux-device-driver

我有一个简单的可加载内核模块,它通过提供blinkingPeriod,开/关功能等来控制LED ......

设备位于/ sys / led,运行正常。

我为命令行提供了一个输入参数,它接收哪个GPIO连接到哪个GPIO。 现在我想重新使用相同的内核模块,用于额外数量的LED,但是我无法使用insmod为具有不同命令行参数的其他LED加载模块,因为会抛出错误:< / p>

错误:无法插入模块 - 文件存在。

我知道这告诉我,我不能两次加载相同的模块,但尝试为多个设备提供LKM时,最好的方法是什么?

我能想到的唯一解决方案是为每个单独的LED /设备重新编写一个LKM,这些LED /设备看起来效率不高,或者将所有LED打包在一个LKM中并且不具备可扩展性/便携式的。

有没有人对最佳方法有任何意见。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你应该做的是:   - 为模块中的多个LED添加支持   - 停止使用模块参数配置GPIO   - 实现sysfs接口以允许实例化LED。我会使用类似gpiolib的东西。

如果您的平台支持设备树,那么更好的解决方案就是使用设备树。

但是,您的驱动程序可能不需要,您肯定已经想要使用leds-gpio和leds-pwm驱动程序。