当前位置: 首页 > news >正文

网站色调阿里网站备案寄材料

网站色调,阿里网站备案寄材料,海南网站开发,wordpress qq微信登陆地址修改本文由 Linux 内核文档翻译与总结而来#xff0c;个人学习笔记仅供参考。 Gadget 框架 在 USB 协议交互过程中#xff0c;角色定义#xff1a; the device driver is the master (or “client driver”) Linux 内核中称为 HCD(Host Controller Driver)#xff0c;负责与 …本文由 Linux 内核文档翻译与总结而来个人学习笔记仅供参考。 Gadget 框架 在 USB 协议交互过程中角色定义 the device driver is the master (or “client driver”) Linux 内核中称为 HCD(Host Controller Driver)负责与 USB 主机控制器硬件通常是计算机的 USB 控制器进行交互管理 USB 数据传输。 the gadget driver is the slave (or “function driver”) Linux 内核中称为 UDC(USB Device Controller)管理连接到 USB 设备端的硬件处理设备端的数据传输、设备枚举和其他 USB 设备相关的操作。 USB Controller Driver(UDC 驱动) linux/usb/gadget.h 定义的API中对底层 USB 控制器端点硬件抽象成 endpoint (能够接收 IN/OUT 数据流)通过回调与 Gadget Driver 交互。Controller Driver 采用分时复用的方式进而可以对接任意数量的 Gadget Driver 交互 Gadget Driver 对 USB Controller 的硬件抽象以支持 USB Function 开发形式为各种调用接口。Gadget Driver 工作职责如下 响应 setup 请求 由 ep0 负责的相关协议的应答也包含 calss 类别相关功能实现响应 configuration、String 描述符(重新)设定 Configuration 和 Interface 包含对端点的 使能与配置报告 活动事件例如绑定到硬件、挂起/恢复、远程唤醒、断连等管理 所有端点的 IN/OUT 收发 Linux 社区并不鼓励通过这个方式添加如此多的专有驱动。 Upper Level 在 Gadget driver 之上可以连接到 Linux 内核的其他驱动或框架通过绑定的形式与 Dadget 驱动完成数据的收发。可参考 用户空间使用 gadgetfs 或 /dev 下相应节点操作网络子系统如CDC Ethernet Model gadget 驱动其他Input 子系统(HID gadgets)、Sound 子系统(Aduio gadget)、文件系统(PTP gadget)等 Additional Layers 可选的层如内核网络模块栈、用户应用、标准 POSIX 系统调用等。 Gadget API 数据结构 gadget driver 使用struct usb_gadget_driver包含自身信息之外还包含另外三种数据类型。理解这些数据类型和使用方法就算是掌握了API。 usb_gadget_driver dadget信息 //---- linux_5.10/include/linux/usb/gadget.hstruct usb_gadget_driver {...int (*setup)(struct usb_gadget *, const struct usb_ctrlrequest *); usb_gadget枚举信息 struct usb_gadget {...struct usb_udc *udc; usb_ep端点配置 struct usb_ep {...const struct usb_ep_ops *ops; ...struct usb_ep_caps caps; ...u8 address;const struct usb_endpoint_descriptor *desc; usb_request数据收发 struct usb_request {void *buf;unsigned length;linux/usb/ch9.hGadget 驱动使用的在USB ch9 中定义的公共的 USB 数据结构不分 Host 与 Device。 使用中关注 规定使用端点0作为作为各种硬件限定信息的配置与管理如发送类型、地址、包大小、缓存和其他能力集USB message 臃肿(chunky)一个IO请求需要由一个或多个”数据包“组成且边界可被驱动感知USB 协议更像是异步通信协议(如HDLC每帧有 N 个 Byte多个地址Host 第一站Device 其次)超过异步通信协议(如TTY每帧8个 Bit无奇偶检验位无停止位)USB 数据包是有边界的如 一个 USB IN 包数据是 two-byte 一个单元因此不能将两个单字节直接写入一个单元 对象与方法 Gadget 设备 核心 linux/usb/gadget.h 定义了 Gadget 驱动核心对象与方法 可选 核心 API 已足够支撑 Gadget 驱动开发但还另外提供了一些可选工具用以简化常用任务。 drivers/usb/gadget/usbstring.cdrivers/usb/gadget/config.c composite 设备 核心 API 已足够开发 Composite 设备(一个 configuration 中有多个功能)和 多功能设备驱动的开发composite 复合框架将简化这些设备驱动的开发。 框架 composite 设备框架定义了一个设备结构体 struct usb_composite_driver 其内可关联多个struct usb_configuration 实例。每个 configuration 又包含多个 struct usb_function 定义。在 function 中定义了用户可感知的设备角色如Network Link、mass storage device也可包含管理功能如Device Firmware Upgrade。 include/linux/usb/composite.h数据结构定义drivers/usb/gadget/composite.c框架实现 功能 当前只要是使用 DECLARE_USB_FUNCTION_INIT声明的 Gadget 驱动就都是 composite设备可对应查看源码 drivers/usb/gadget/function/f_xxx.c。 Legacy 设备 源码目录 drivers/usb/gadget/legacy/xxx.c。 活动事件 Gadget 驱动执行I/O请求时时不用关注硬件细节要求而当驱动执行 setup/configuration 时就需要关注流程 注册 UDC 驱动(USB Device Controller作为**设备(Slave)**角色的 USB 控制器驱动) 当前作为设备插入 Host 后会处于 attached 初始化状态( USB ch9 中定义)。此时既无功率消耗也法被使用(还不支持枚举)。 因为当前数据线上的上拉未使能所以即使 VBus 正常供电Host 也无法感知到当前设备的存在(Host 通过设备是否上拉数据线探测设备)。 注册 Gadget 驱动 这些更高层级的 Fuction 驱动将调用 bind() 绑定到具体的 gadget 设备( struct usb_gadget 对象) 。有时这些 Function会在识别到 VBUS 后使能数据线上拉。 硬件驱动开始枚举 此时设备可以接受 USB power 和 set_address 请求余下步骤由 gadget driver 接管。如果 dadget driver 在枚举前还未加载忽略其后步骤直接跳转至步骤 7执行 unbind()。 实现 Gadget 驱动中 setup()方法 setup()方法将返回当前设备的描述符、硬件接口和能力集等信息。如果硬件允许甚至可以执行更复杂的设定和配置。 实现 set_configuration 请求的应答 Gadget 驱动需要在setup()方法中实现对主机set_configuration请求的应答(枚举的最后一步)使用所有在 Configuration 中使用的端点 和 默认 settings 中的接口 实现数据收发 实现 Gadget 驱动中 unbind()方法 当 Gadget 驱动卸载时同时卸载 UDC 驱动 注 在设备连接到Hub后会导致Hub的D或D-电平变化Hub根据变化的引脚分辨接进来的是全速设备还是低速设备 低速设备内部的D-有1.5K的上拉电阻 全速设备内部的D有1.5K的上拉电阻 高速设备一开始也是作为全速设备被识别的高速模式时D的上拉电阻是断开的 UDC 驱动 UDC(USB Device Controller)即USB从机(设备)控制器内核文档也称为 Peripheral Controller Drivers。内核中第一个支持的硬件的是 NetChip 2280 控制器(基于PCI 的支持 USB 2.0 调整模式)。其他的控制器基于 gadget 框架开发见驱动源码文件 linux_5.10/drivers/usb/gadget/udc/xxx_udc.c。 虚拟UDC 方便硬件控制器未准备好(缺失或功能异常)时的软件调试内核实例了一个虚拟的 UDC 驱动。它像 net2280、pxa25x 和 sa11x0 等硬件控制器一样指代多个端点和速率模式也能够模拟 控制传输、批量传输 和 中断传输。这也就方便了开发支持在 Gadget 驱动 除 gadget_Zero驱动(主要用于UDC功能验证)之外内核还有示例了多个常用的 gadget 驱动。 CDC 类 CDC(Communications Device Class)是太网模型的两个强制选项之一也是电缆调制解调器交互操作性的标准之一。在USB主机看来使用此代码的gadget 就像是以个太网适配器。 CDC类实现源码文件位于drivers/usb/gadget/function/f_xxx.c其下包含 USB CDC serial 类 ACMUSB CDC Ethernet 类ECM、EEM、RNDIS简单辨析如下 注暂且把 微软的 RNDIS 驱动也纳入CDC Ethernet 类因为 RNDIS 更适合运行在轻量化的 USB 控制器设备中。RNDIS 为设备接入 Windows 系统使用提供了便捷。 MSC 类 MSC(Mass Storage class)指常用的存储设备如U盘、CD-ROM等。大容量存储类设备驱动使用一种不同于 MS-Windows 和 MacOS 的交互方式 USB 设备端驱动使用一个具体的文件或块设备作为其后端存储介质USB 主机端主机遵循 BBB, CB 或 CBI 版本的 MSC 类规格要求使用 SCSI 命令访问后端不认介质 MSC 类实现源码文件包含 drivers/usb/gadget/function/f_mass_storage.c被主机视为 磁盘、CD-ROM 等存储设备访问drivers/usb/gadget/function/f_loopback.c主要用于应用回环测试 OTG 功能 USB OTG(USB On-The-GO)指代可以进制双角色切换机制的 USB 控制器 作为 Host时使用标准 Linux-USB 主机侧驱动栈作为 Device时使用 Gadget 框架 见下图可以看到Host Controllere、 Device Controller、OTG Bus Monitor 三个重要组成 在不同角色下系统都应尽量复用顶层已申请的、硬件无关的顶层控制器驱动(Host usb_busDevice usb_gadget)内存池保证功能正常的最小修改保证对非 OTG 产品的影响。可以抽象出以下几个控制特性 is_otgGadget 驱动检查这个标记以确认是否需要在其 configurations 中添加 OTG 描述符b_hnp_enable Gadget 驱动如果需要支持两种新的 OTG 协议 HNP 通过用户接口(如两个 LED 灯)指示当前设备被 Host 挂起SRP 可由用户发起(就像远程唤醒)如按下相关按键 白名单如同主机侧驱动必须支持 OTG 目标外设名单用以声明支持的 OTG 控制器即 OTG 白名单。修改文件 otg_whitelist.h。 需知 每个 USB Function 都会在 config_groups 中定义期望用户配置的内容可配置参考对应 Function 的实现文件drivers/usb/gadget/f_*.c主要阅读 USB 规范章节9 和 内核 gadget.rst 文档以免忽略掉关键信息如端点自动配置否则需要同时参考头文件与示例源码(如 Gadget Zere) 参考 内核文档 linux_5.10/Documentation/usb/gadget_configfs.rst11_Gadget驱动程序框架
http://www.hkea.cn/news/14375358/

相关文章:

  • 重庆专业做淘宝网站四级作文模板万能
  • 网站建站网站299266co找公司做网站要注意什么问题
  • 百度站内搜索提升关键词排名做网站免费模板怎么上传到空间
  • 怎么建网站免费的网站建设对于学校的重要性
  • 云平台网站建设工业信息部网站备案
  • 文创产品设计网站推荐天津企业如何建网站
  • 丰台成都网站建设cps网站建设
  • 艺客网站首页当今网站开发技术的现状
  • 网站建设品牌策wordpress做个游戏
  • 网站图片360度旋转怎么做的wordpress商品导出淘宝
  • 武进网站建设信息网站视频大全
  • 打不开住房和城乡建设部网站wordpress 站内搜索
  • 天津手机网站制作网站建设教程金旭亮
  • 丽水市住房和城建建设局网站网站工作和网站建设管理工作
  • 网站建设与规划试卷做网站怎么把导航每个页面都有
  • 那个网站都有做莱的图片win7优化大师官方网站
  • php企业网站建设小米路由器做网站
  • 蜘蛛云建站网站微信网站建设新闻
  • 如何建设vr网站网站怎么可以被收录
  • 投教网站建设百度搜索热度查询
  • 网站建设合作流程图芜湖做网站设计的公司
  • 给别人做网站要问什么问题哪个网站可以做体育主播
  • 个人免费注册公司网站网站icp证明
  • 农业做的好的网站wordpress附件上传云
  • 网页设计与网站建设项目教程什么是网站维护费
  • 更改网站伪静态深圳市住房和建设局地址
  • 目前网站开发怎么兼顾手机岳阳网站网站建设
  • 医院网站如何建立商城网站建设精英
  • 公司网站标题优化免费网络爬虫网站
  • 网站开发的语言有什么做网站难吗 挣钱吗