gpt4 book ai didi

linux - 用于多个设备的可加载内核模块 (LKM)

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:16 24 4
gpt4 key购买 nike

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

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

我已经为命令行提供了一个输入参数,它接受 LED 连接到哪个 GPIO。现在我想为额外数量的 LED 重用相同的内核模块,但是我无法使用 insmod 为具有不同命令行参数的额外 LED 加载模块,因为会引发错误:

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

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

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

有人对最佳方法有任何意见吗?提前致谢。

最佳答案

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

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

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

关于linux - 用于多个设备的可加载内核模块 (LKM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com