1

我正在使用嵌入式平台。该设备中的典型软件是 Linux 2.6 + Busybox,因此资源有限。

每次连接 USB 设备时,我都需要运行用户空间应用程序。我需要将 DeviceID 和 ProductID 作为参数传递给这个用户空间应用程序。

我真的不知道我应该遵循哪种策略来实现这一目标:

  • 编写一个 linux 内核模块。
  • 从内核(usb驱动程序)内部做我目前正在这样做,但我认为它不是最好的方法
  • 为 USB 连接设备“轮询”的用户空间应用程序。?

哪一个应该是最好的方法?

感谢您的回答!

4

3 回答 3

2

如果你想留在用户空间,那么你可以使用libudev.

你有一个例子在这里。您可以从中提取产品 ID 和设备 ID。

于 2012-07-17T17:44:40.770 回答
0

据我所知,内核中有一种 USB 热插拔机制。当热插拔事件发生时,可以通知用户。不幸的是,我对细节不是很熟悉。

也许linux-3.3.5/samples/kobject/kset-example.c会给你一些想法。

于 2012-07-17T09:20:18.357 回答
0

尽管提到了像@aisbaa 这样的其他选项,但修改内核是有趣且具有挑战性的一项。建议你修改USB驱动。原因是,您需要将参数发送到用户空间应用程序(产品 ID、设备 ID)。

这些 ID 将在驱动程序中获得。所以用这些 ID 调用用户空间应用程序是我的选择。

对于调用用户空间应用程序,这里提供了很好的解释。

于 2012-07-17T07:25:50.277 回答