我有一个简单的可加载内核模块,它通过提供blinkingPeriod,开/关功能等来控制LED ......
设备位于/ sys / led,运行正常。
我为命令行提供了一个输入参数,它接收哪个GPIO连接到哪个GPIO。 现在我想重新使用相同的内核模块,用于额外数量的LED,但是我无法使用insmod为具有不同命令行参数的其他LED加载模块,因为会抛出错误:< / p>
错误:无法插入模块 - 文件存在。
我知道这告诉我,我不能两次加载相同的模块,但尝试为多个设备提供LKM时,最好的方法是什么?
我能想到的唯一解决方案是为每个单独的LED /设备重新编写一个LKM,这些LED /设备看起来效率不高,或者将所有LED打包在一个LKM中并且不具备可扩展性/便携式的。
有没有人对最佳方法有任何意见。 提前谢谢。
答案 0 :(得分:1)
你应该做的是: - 为模块中的多个LED添加支持 - 停止使用模块参数配置GPIO - 实现sysfs接口以允许实例化LED。我会使用类似gpiolib的东西。
如果您的平台支持设备树,那么更好的解决方案就是使用设备树。
但是,您的驱动程序可能不需要,您肯定已经想要使用leds-gpio和leds-pwm驱动程序。