gadget驱动框架(一)

gadget驱动框架(一)

之前在linux移植udc驱动的时候,没有深入的理解整个gadget驱动框架,现在重新再屡屡gadget驱动,以便后期再次学习。本系列的文章以虚拟串口进行分析,相关源码均是基于linux4.19.123。

gadget驱动框架

gadget源码主要在:drivers/usb/gadget,以虚拟串口为例,对源文件做简单说明:
drivers/usb/gadget/function/*.c:实现具体的usb功能,有serial、video、audio等
drivers/usb/gadget/legacy/*.c:注册usb class驱动,往上与function衔接,往下与composite
drivers/usb/gadget/udc/*.c:usb device conctrl,与各IC相关,需各自实现;
drivers/usb/gadget/composite.c:复合设备,与硬件无关,往下与udc驱动衔接

Linux USB Gadget分三层架构,层次关系从上到下:
一层:USB Gadget功能层。BSP/Driver开发者通常是要实现这一层,从而实现一个具体的设备驱动,如Linux在此层实现了serial,mtp,mass_storage等。浏览参考关注此层代码时,会发现“composite”是此层的关键字,此层中关键的数据结构是:struct usb_composite_driver。这一层的驱动文件一般为:drivers/usb/gadget/function/*.c或drivers/usb/gadget/f_serial.c(传统Linux实现的USB转串口)。

二层:USB设备层。这一层是Linux内核开发维护者实现的,与我们没太大关系,不用我们操心,我们只关心其的一些接口就行。浏览参考关注此层时,会发现“gadget”是此层的关键字,此层的关键数据结构是:usb_gadget_driver,usb_composite_dev。这层主要的一个驱动文件为:driver/usb/gadget/composite.c

三层:USB设备控制器驱动层。这一层主要是与CPU、CPU USB控制器有关,与硬件紧密相关,这一层也比较头痛,主要它和USB控制器牵扯在一起,涉及有寄存器、时钟、DMA等等。但是这一层往往是由芯片厂商去实现。我们一般仅需在板级文件中处理好所需要的USB接口即可。这层的关键字就是“UDC”,主要驱动文件命名含“udc”关键字,一般与CPU或芯片厂商有关,如driver/usb/gadget/xxx_udc.c。

gadget驱动架构图

gadget驱动架构

在这里插入图片描述

gadget相关数据结构体关系

在这里插入图片描述

gadget驱动框架文章系列

主要结构体介绍相关文章:
1)gadget之composite
2)gadget之udc
3)gadget之usb_gadget
4)gadget之usb_function
驱动架构分析文章:
1)gadget驱动框架(一):本文章,主要介绍gadget基本框架、配置、系列文章的划分;
2)gadget驱动框架(二):主要介绍usb_gadget_driver、usb_composite_driver、usb_gadget、usb_udc等几个核心结构体的创建及注册。
3)gadget驱动框架(三):主要介绍usb_udc、usb_gadget_driver的绑定过程,及usb_function的匹配过程。
4)gadget驱动框架(四):主要介绍usb_function的注册、创建的过程。
5)gadget驱动框架(五):主要介绍虚拟串口的tty设备的注册、创建/dev/ttyGSx设备节点、tty相关接口的实现。
6)gadget驱动框架(六):主要介绍udc驱动枚举过程。

gadget驱动之serial内核配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
fastboot gadget驱动是一种用于在Android设备上进行快速引导和刷写固件的驱动程序。它允许将设备进入fastboot模式,并与计算机进行通信,以便执行各种操作,如刷写固件、解锁引导加载程序、重启设备等。 在使用fastboot gadget驱动之前,你需要确保已经安装了Android SDK(包含ADB和Fastboot工具)以及相应的驱动程序。然后,你可以通过以下步骤来安装fastboot gadget驱动: 1. 在计算机上下载并安装Android SDK。你可以从Android开发者网站(developer.android.com)上获取这个工具包。 2. 连接你的Android设备到计算机,并确保设备处于开发者模式下。你可以在设备的设置中找到开发者选项,并启用USB调试模式。 3. 打开命令提示符或终端窗口,并导航到Android SDK的安装目录。 4. 使用以下命令检测设备是否成功连接到计算机: ``` adb devices ``` 5. 如果设备已成功连接,你应该能够看到设备的序列号。接下来,将设备重启到fastboot模式。使用以下命令: ``` adb reboot bootloader ``` 6. 设备进入fastboot模式后,使用以下命令来安装fastboot gadget驱动: ``` fastboot flash <driver_image>.img ``` 其中,`<driver_image>`是fastboot gadget驱动的镜像文件名。 7. 安装完成后,可以使用fastboot命令来执行各种操作,如刷写固件、解锁引导加载程序等。 请注意,具体的安装步骤可能会因设备型号和操作系统版本而有所差异。建议在安装之前查阅设备的官方文档或相关论坛,以获取适用于你的设备的准确信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值