首页 > 其他分享 >USB configfs与USB functionfs的区别及关系

USB configfs与USB functionfs的区别及关系

时间:2024-09-05 15:06:17浏览次数:13  
标签:configfs USB 配置 用户 functionfs 端点

configfsfunctionfs 是 Linux 内核中用于配置和管理 USB 设备行为的两种不同的文件系统,它们各自的用途和工作方式有所不同,但在 USB Gadget 子系统中可以结合使用。以下是它们的区别和关系:

1. configfs:

  • 用途: 用于配置和管理 USB 设备的整体功能和配置。

  • 工作原理: configfs 提供了一种用户空间接口,允许用户通过创建目录和文件的方式配置 USB Gadget。用户可以通过挂载 configfs,创建设备描述符、配置描述符、接口和端点等结构,定义设备的 USB 属性。

  • 使用场景: 常用于需要对 USB Gadget 的属性进行灵活配置的场景,例如需要同时支持多种 USB 功能(如 MTP、ADB、RNDIS)时。

  • 配置步骤:

1. 挂载 configfs (mount -t configfs none /sys/kernel/config)

2. 在 usb_gadget 下创建 gadget 设备(如 g1)。

3. 配置设备描述符(如 idVendoridProduct)。

4. 添加 USB 功能(如 function 文件夹)并绑定到配置。

2. functionfs (ffs):

  • 用途: 提供用户空间对 USB 传输的数据读写的接口,使用户空间程序能够处理 USB 传输的数据包。

  • 工作原理: functionfs 是一种文件系统接口,允许用户空间应用程序直接与 USB 端点进行通信。它将 USB 端点抽象为文件,应用程序可以对这些文件进行读写操作来接收和发送数据。

  • 使用场景: 常用于需要用户空间控制 USB 数据流的应用,例如实现自定义 USB 协议、或用户空间需要直接处理数据的情况(如 ADB 和 MTP)。

  • 配置步骤:

1. 挂载 functionfs (mount -t functionfs none /dev/ffs-<name>).

2. 用户空间程序打开端点文件(如 /dev/ffs-mtp/ep1in),进行数据读写操作。

区别和关系:

  • 区别:

- configfs 主要用于配置和管理 USB Gadget 的属性和功能。

- functionfs 主要用于实现用户空间和 USB 端点的数据传输。

  • 关系:

- 两者可以结合使用:通过 configfs 配置 USB 功能,然后用 functionfs 来实现用户空间的数据处理。例如,当使用 ffs 功能时,通过 configfs 创建和配置 gadget,functionfs 为用户空间应用提供接口来处理 USB 数据。

通过 configfsfunctionfs 的组合,可以灵活定义和管理 USB 设备,并实现复杂的数据传输应用。

标签:configfs,USB,配置,用户,functionfs,端点
From: https://www.cnblogs.com/linhaostudy/p/18398454

相关文章

  • 监听USB设备插拔
    ///<summary>///监听USB设备插拔///</summary>publicclassUsbNotification{[DllImport("user32.dll")]publicstaticexternIntPtrRegisterDeviceNotification(IntPtrhRecipient,IntPtrNotificationFilt......
  • PC电源,USB Type-C通用型双向同步升降压控制器支持5V驱动可编程输出输入电流限制
    概述:PC1045是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达45V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1045集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输......
  • USB gadget驱动框架(三)
    gadget驱动框架(三)usb_udc与usb_gadget_driver的绑定usb_udc与usb_gadget_driver,在注册的时候分别被添加到udc_list和gadget_driver_pending_list中,无论这两者先后顺序如何,都将会动态的去识别及匹配到具体设备中,绑定过程如下:源码:drivers/usb/gadget/udc/core.c/*-------------......
  • USB gadget functionfs
    FunctionFS(FunctionFilesystem)是LinuxUSBGadget框架的一部分,专门用于从用户空间实现和控制自定义的USB功能。它提供了一种文件系统接口,使用户能够在用户空间中直接定义USB设备的接口、端点和描述符,并管理USB数据的传输。FunctionFS常用于需要用户空间控制的复杂U......
  • USB gadget configfs
    概述USBLinuxGadget是一种具有UDC(USB设备控制器)的设备,可以连接到USB主机,以扩展其附加功能,如串口或大容量存储能力。一个gadget被它的主机视为一组配置,每个配置都包含一些接口,从gadget的角度来看,这些接口被称为功能,每个功能代表一个串行连接或一个SCSI磁盘。Linux提供了许......
  • Openwrt中挂载NTFS格式USB硬盘无法正常显示中文目录及文件的解决办法
    在试图挂载硬盘使用alist作视频站的时候,我发现Openwrt访问自动挂载上的USB硬盘目录时,只能看得到英文的目录和文件。这就是固件自动挂载不太灵光的地方了自动挂载是Openwrt导航栏-系统-挂载点的[自动挂载磁盘]选项与[挂载已连接的设备]按钮。平常不想动手敲命令的时候固然很方便,但......
  • USB虚拟化与重定向
    USB虚拟化是一个虚拟的系统结构。    虚拟可以出现在不同层次上。各级的虚拟化产生了不同的虚拟化概念。这是许多概念,不同的人有不同的观点。1、连接USB。   USB连接功能是在虚拟机上直接分配USB设备,在虚拟机上应用,实现对USB设备的直接访问和访问。因此,必须先在......
  • 【USB】C#使用HID通信
    https://blog.csdn.net/gzylongxingtianxia/article/details/137151349 最近做了一个USB通信SDK,通过HID跟单片机通信,之前研究了一下Libusb,Cyusb,要么死的太早,要么封装的不好,最后绕来绕去发现还是HID好用,反编译了一个SimpleHid,别说,用起来还是很酸爽的~~~1.设备识别首先......
  • 基于元神操作系统编程写USB扇区
    1.背景本文介绍了“调用元神操作系统API向U盘扇区写数据”的程序实现及测试结果。2.方法(1)调用元神操作系统API读U盘扇区本部分内容已在前面的文章中进行介绍,详细内容请参考“编写程序调用元神操作系统的API”。(2)调用元神操作系统API写U盘扇区本例通过调用系统API来向U......
  • USB LFPS是什么?
    USBLFPS:低功耗状态下的高速数据传输什么是USBLFPS?USBLFPS(Low-PowerSignaling)指的是USB接口在低功耗状态下的一种高速数据传输技术。传统上,USB接口在低功耗模式下,数据传输速率会大幅降低,以节省功耗。而LFPS技术则通过优化信号传输方式,使得USB设备在低功耗状态下仍能保持较高......