Linux kernel 如何从Linux USB客户端与USB主机通信

Linux kernel 如何从Linux USB客户端与USB主机通信,linux-kernel,linux-device-driver,embedded-linux,Linux Kernel,Linux Device Driver,Embedded Linux,主机部分将是一个由c#编写的PC程序,其中我将使用LibUSBdotnet进行通信。 我的问题是如何让Linux端接收和响应。我真的不知道从哪里开始。 每当我尝试搜索它时,所有结果都显示“linux如何与连接到它的设备通信”。 或者,设备是主机还是客户端并不重要,因为它们使用相同的管道/总线? 我可以在“/dev/usb***”中使用一些东西吗 我看过“libusb”,我相信它是libusbdotnet的linux表亲。 我能用这个图书馆吗?如果有人能告诉我正确的方向,我将非常感激。AFAIK

主机部分将是一个由c#编写的PC程序,其中我将使用LibUSBdotnet进行通信。 我的问题是如何让Linux端接收和响应。我真的不知道从哪里开始。 每当我尝试搜索它时,所有结果都显示“linux如何与连接到它的设备通信”。 或者,设备是主机还是客户端并不重要,因为它们使用相同的管道/总线? 我可以在“/dev/usb***”中使用一些东西吗

我看过“libusb”,我相信它是libusbdotnet的linux表亲。
我能用这个图书馆吗?如果有人能告诉我正确的方向,我将非常感激。

AFAIK libusb是usb主机端的库,而不是usb设备端的库。所以你不能在你的案例中使用它。我的建议与myninjaname所说的一样——首先分析一个Linux usb小工具驱动程序

可能创建一个Linux USB小工具驱动程序;Linux内核中的Gadget Zero驱动程序可能是一个起点。因此我尝试研究usb Gadget,它打开了很多东西。我还看到它有“gadget serial”,并尝试安装它以尝试通过串行进行usb通信。但似乎g_serial不能很好地使用g_mass_存储。这是否意味着,只要我使用g_mass_存储,它就不会与其他驱动程序配合良好?即使我让一个驱动程序基于gadget zero,它们也可能无法协同工作?您可以研究“多功能复合gadget”(multi.c),它在一个UDC上实现多个gadget设备。IIRC,并非所有UDC驱动程序都支持此功能。@myninjaname,好的,我已经安装了g_多模块。现在看来,我必须找到一个合适的复合驱动程序或.inf,这样windows才能正确地检测到它?我还没有使用multi_小工具,所以我无法在这方面帮助您。我最好的建议可能是确保您可以让多个小工具在两个Linux系统之间运行。一旦你知道你的UDC在multi gadget上的功能正确,然后继续让它在Windows上工作。你是否建议将端点功能从g_zero添加到mass_storage?我想在android设备和Windows机器之间进行通信,如果我没有错的话,Windows机器也会一直充当主机。我使用OTG电缆,所以android设备也将作为主机。我正在尝试开发android应用程序,它将在android设备上运行,并向windows机器发送字节。对于这种通信和传输,我想使用
libusb
libusb
对我有用吗?