我正在使用嵌入式平台。该设备中的典型软件是 Linux 2.6 + Busybox,因此资源有限。
每次连接 USB 设备时,我都需要运行用户空间应用程序。我需要将 DeviceID 和 ProductID 作为参数传递给这个用户空间应用程序。
我真的不知道我应该遵循哪种策略来实现这一目标:
- 编写一个 linux 内核模块。
- 从内核(usb驱动程序)内部做我目前正在这样做,但我认为它不是最好的方法
- 为 USB 连接设备“轮询”的用户空间应用程序。?
哪一个应该是最好的方法?
感谢您的回答!
我正在使用嵌入式平台。该设备中的典型软件是 Linux 2.6 + Busybox,因此资源有限。
每次连接 USB 设备时,我都需要运行用户空间应用程序。我需要将 DeviceID 和 ProductID 作为参数传递给这个用户空间应用程序。
我真的不知道我应该遵循哪种策略来实现这一目标:
哪一个应该是最好的方法?
感谢您的回答!
如果你想留在用户空间,那么你可以使用libudev.
你有一个例子在这里。您可以从中提取产品 ID 和设备 ID。
据我所知,内核中有一种 USB 热插拔机制。当热插拔事件发生时,可以通知用户。不幸的是,我对细节不是很熟悉。
也许linux-3.3.5/samples/kobject/kset-example.c会给你一些想法。
尽管提到了像@aisbaa 这样的其他选项,但修改内核是有趣且具有挑战性的一项。建议你修改USB驱动。原因是,您需要将参数发送到用户空间应用程序(产品 ID、设备 ID)。
这些 ID 将在驱动程序中获得。所以用这些 ID 调用用户空间应用程序是我的选择。
对于调用用户空间应用程序,这里提供了很好的解释。