随笔分类 - USB / USB gadget
摘要:usb hal实现 1. uevent_event usb插拔的时候,内核会上传usb相关的uevent事件;接收并处理uevent事件 static void uevent_event(uint32_t /*epevents*/, struct data *payload) { char msg[
阅读全文
摘要:NCM介绍 1 功能 USB NCM,属于USB-IF定义的CDC(Communication Device Class)下的一个子类:Network Control Model,用于Host和Device之间交换以太网帧。这些以太网帧可以传输在通信网络上传输的IPv4或IPv6数据报。NCM主要用
阅读全文
摘要:本节主要介绍udc驱动枚举过程,需结合udc驱动、composite.c、function等一同分析整个过程。 udc驱动中断处理函数 当host检测到DP上拉,则认为有新的device插入,此时host将发起进入枚举流程,整个枚举流程大部分是在中断函数中处理,协议对时间有相关的要求,因此整个枚举流
阅读全文
摘要:本节主要分析虚拟串口的tty设备的注册、创建/dev/ttyGSx设备节点、tty相关接口的实现。 tty的申请与注册 源码:drivers/usb/gadget/function/u_serial.c static const struct tty_operations gs_tty_ops =
阅读全文
摘要:usb_composite_driver的创建于注册 源码:drivers/usb/legacy/serial.c //创建usb_composite_driver static struct usb_composite_driver gserial_driver = { .name = "g_se
阅读全文
摘要:configfs 和 functionfs 是 Linux 内核中用于配置和管理 USB 设备行为的两种不同的文件系统,它们各自的用途和工作方式有所不同,但在 USB Gadget 子系统中可以结合使用。以下是它们的区别和关系: 1. configfs: 用途: 用于配置和管理 USB 设备的整体功
阅读全文
摘要:之前在linux移植udc驱动的时候,没有深入的理解整个gadget驱动框架,现在重新再屡屡gadget驱动,以便后期再次学习。本系列的文章以虚拟串口进行分析,相关源码均是基于linux4.19.123。 gadget驱动框架 gadget源码主要在:drivers/usb/gadget,以虚拟串口
阅读全文
摘要:gadget驱动框架(三) usb_udc与usb_gadget_driver的绑定 usb_udc与usb_gadget_driver,在注册的时候分别被添加到udc_list和gadget_driver_pending_list中,无论这两者先后顺序如何,都将会动态的去识别及匹配到具体设备中,绑
阅读全文
摘要:FunctionFS (Function Filesystem) 是 Linux USB Gadget 框架的一部分,专门用于从用户空间实现和控制自定义的 USB 功能。它提供了一种文件系统接口,使用户能够在用户空间中直接定义 USB 设备的接口、端点和描述符,并管理 USB 数据的传输。Funct
阅读全文
摘要:概述 USB Linux Gadget是一种具有UDC (USB设备控制器)的设备,可以连接到USB主机,以扩展其附加功能,如串口或大容量存储能力。 一个gadget被它的主机视为一组配置,每个配置都包含一些接口,从gadget的角度来看,这些接口被称为功能,每个功能代表一个串行连接或一个SCSI磁
阅读全文
摘要:1、前言 在Linux-USB驱动笔记(四)–USB整体框架中有説到Gadget Function驱动,下面我们来具体看一下。 Gadget Function就是指设备的功能,比如作为U盘,需要文件存储的功能,则需要File Storage驱动,这个驱动也称为Function驱动。 2、Gadget
阅读全文
摘要:1.简介 configfs是基于ram的文件系统,与sysfs的功能有所不同。sysfs是基于文件系统的kernel对象视图,虽然某些属性允许用户读写,但对象是在kernel中创建、注册、销毁,由kernel控制其生命周期。而configfs是一个基于文件系统的内核对象管理器(或称为config_i
阅读全文
摘要:1.概述 USB设备控制器(UDC)驱动的框图如下图所示,由三部分组成。第一部分是UDC驱动核心层,在drivers/usb/gadget/udc/core.c文件中实现,该层是一个兼容层,将USB Function驱动和具体的USB gadget驱动隔离开,抽象了统一的接口和数据结构,向USB F
阅读全文
摘要:1.概述 如下图所示,USB控制器可以呈现出两种不同的状态。USB控制器作为Host时,称为USB主机控制器,使用USB主机控制器驱动。USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框
阅读全文
摘要:一. USB CDC 类简介 USB的CDC类是USB通信设备类(CommunicaTIon Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB
阅读全文