正如本小节中框图所示,USB Gadget 驱动,包括 USB 设备控制器(UDC) 驱动 和 Gadget 功能(function)驱动 两大部分。其中 USB 设备控制器(UDC) 驱动 负责 USB 设备控制器(UDC) 和 主机侧 USB 控制器(UHC) 之间的数据传输;而 Gadget 功能驱动(function) 负责实现功能协议(如 UDC 等)。USB 设备控制器(UDC) ...
编写gadget的关键是在于了解udc、gadget、composite三者之间的联系和架构层次,在实际应用中gadget是不需要我们去编写的,需要我们自己去编写的是composite层,以及地对udc层的修改,下面开始详细介绍着三者。 1、composite英文意思是复合的意思,估计是编写usb gadget层设备驱动都整合到一起,通过统一的函数usb_composite_register...
usb gadget configfs重新实现了复合设备层,使用者可以在用户空间配置和组合内核的function,灵活的构成USB复合设备,极大了提高了工作效率。 2.使用方法 下面的脚本通过usb gadget configfs配置uac2.0。在使用之前,内核需要开启UAC2.0相关配置。uac2.0的参数在/sys/kernel/config/usb_gadget/g1/configs/c.1/uac2.0文件...
usb_gadget/g1/configs/c.1/strings/0x409 # remove the configurations rmdir /sys/kernel/config/usb_gadget/g1/configs/c.1 # Remove functions (function modules are not unloaded, though) rmdir /sys/kernel/config/usb_gadget/g1/functions/uac2.0 # Remove strings directories in the gadget rmdir /...
USB设备控制器(UDC)驱动的框图如下图所示,由三部分组成。第一部分是UDC驱动核心层,在drivers/usb/gadget/udc/core.c文件中实现,该层是一个兼容层,将USB Function驱动和具体的USB gadget驱动隔离开,抽象了统一的接口和数据结构,向USB Function驱动提供了统一且稳定的接口,同时完成USB Function驱动和USB gadget驱动的...
大大小小开发了四个与gadget相关的驱动,字符驱动、g_multi、g_ether、g_zero,在这里把自己对gadget的开发中自己的感悟记录之。 想要了解gadget,必须了解其框架,知道composite、gadget、udc三者之间的联系,知道usb描述符的作用。 一个usb device有一个设备描述符。
Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication Device Class)驱动(f_acm.c、f_ecm、f_serial.c等)、USB音频设备类驱动(f_uac1.c、f_uac2.c、u_audio.c)、大容量存储设备驱动(f_mass_storage.c)、USB视频设备类驱动(f_uvc.c)等。
USB Gadget是分层的软件结构,本文分析的是2.6.32.2版本的Gadget软件结构,这个软件结构与以前版本的变化很大。USB Gadget软件结构总共分为三层: 一. UDC层 这一层是与硬件相关层。相关文件s3c2410_udc.c s3c2410_udc.h。s3c2410设备控制器作为一个linux设备在这一层是作为platform设备而注册到linux设备模型中的。相关数...
经过各种注册函数,Gadget功能驱动层,USB设备层与UDC底层结合在了一起形成了一个完整的USB设备。而这个设备已经准备好了接受主机的枚举。在介绍USB设备枚举之前。先熟悉一下各层通信所用的数据结构,在USB主机端编写USB设备驱动程序,最重要的结构就是URB了,我们只需要将各种URB提交给USB核心,核心就会自动给我们的数据...
Opasiak如何利用USB Gadget框架实现自定义的USB设备,这个视频很棒,有这方面的需要的可以好好看看, 视频播放量 2358、弹幕量 1、点赞数 24、投硬币枚数 6、收藏人数 65、转发人数 11, 视频作者 嵌入式客栈, 作者简介 ,相关视频:原来路由器背面的USB接口功能这么强大?不