——葛洪 分享一下开源项目scrcpy GitHub - Genymobile/scrcpy: Display and control your Android device 它可以用电脑显示和控制您的 Android 设备 通过 USB 或 TCP/IP 连接的 Android 设备(视频和音频),并允许使用计算机的键盘和鼠标控制设备。 scrcpy 2.3.1 <https://github.com/Genymobile/scrcpy> ERROR: Multiple (2) ADB devices: ERROR: --> (usb device RMX3350 ERROR: Select a device via -s (--serial), -d (--select-usb) or -e (--select-tcpip) ERROR ) C7Y6R19923000299 device HLK_AL00 INFO: (usb) JR8XY9EEIJGQQSJV
(1) 控制传输模式,控制传输用于在外设初次连接时对器件进行配置;对外设的状态进行实时检测;对控制命令的传送等;也可以在器件配置完成后被客户软件用于其它目的。 Endpoint 0信道只可以采用控制传送的方式。 银行交互设备,密码键盘 (2) 块传送模式(bulk),块传送用于进行批量的、非实时的数据传输。 采用块传送方式的信道所占用的 USB 带宽,在实时带宽分配中具有最高的优先级 (3) 同步传输模式,同步传输适用于那些要求资料连续地、实时地、以固定的数据传输率产生、传送并消耗的场合,如数字录像机等。 ,但是,我们大部分情况下还需要对usb串口进行一些配置,比如波特率,停止位,数据控制等,不然两边配置不同,收到的数据会乱码。 3.数据传输 到这里,我们已经可以与usb外设进行数据传输了,首先来看怎么向usb设备发送数据。
为什么 USB 传输速度很重要 无论 "Delta Push" 是否被启用,总会有数据传输到设备上。 如果用的是模拟器,数据会通过 TCP/IP 进行传输,但是如果用的是真机则会用到 USB,USB 传输速度越快,等待时间越短,程序迭代速度也就越快。 好消息是 USB 传输速度现在越来越快了: 1996 年时,USB 仅能够提供 12 Mb/s 的传输速度,到了 2019 年 8 月发布 USB 4.0 版本的时候,已经可以达到几个 Gb/s 的速度了 传输速度达到一定程度以后,USB 传输速度和程序迭代速度就会关联起来,手机存储的写入速度可能无法达到 USB 3.2 的 20Gb/s,不过还是比 USB 2.0 要快,所以如果您安装调试一个 50M 但坏消息是,USB 3.0 的设备常常以 USB 2.0 的速度在传输数据。
这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错, TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。 TCP还能提供流量控制。 TCP连接的每一方都有固定大小的缓冲空间。 TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。 TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释由 TCP连接双方的应用层解释。 这意味数据能在两个方向上独立地进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。 T C P的流量控制由连接的每一端通过声明的窗口大小来提供(滑动窗口技术)。 TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据; TCP提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。
TCP 的传输过程与可靠性 1. TCP 的每一端都有固定大小的缓冲空间,用于提供流量控制,TCP 接收端只允许另一端发送接收端缓冲区所能容纳的数据,以防止较慢主机的缓冲区溢出 3.
本文介绍OpenHarmony开源鸿蒙系统的USB控制传输功能实现及相关代码示例,演示设备:触觉智能RK3576开发板Purple Pi OH2演示,相关参数可以查看我的社区主页。 OpenHarmony的USB通信介绍实现OpenHarmony开源鸿蒙设备与外部USB设备之间的连接管理、数据收发及设备信息交互,支持对USB 设备的枚举、配置及数据传输控制,适用于各类USB接口进行设备通信的场景 USB控制传输主要用于主机(Host)和设备(Device)进行设备状态的获取和设置,进行设备属性状态的的控制。根据设备支持的端点类型支持控制传输读和写。 hasRight) { this.log = 'USB设备权限获取失败'; return; } /数据传输模块实现与 USB 设备的双向数据传输,支持批量传输 主机→USB 设备进行数据发送,适用于向 USB 设备发送配置命令、控制参数等场景,需选择 OUT方向端点(端点地址 direction=0),流程包括:解析用户输入的16进制数据、建立设备通信管道、声明目标接口
控制器的名称 3.代码分析 3.1.初始化 usb gadget configfs模块的初始化函数为gadget_cfs_init。 执行流程如下: 判断输入的USB控制器名称,若输出为空或者是none,则解除usb_gadget_driver和底层USB控制器的绑定。 反之调用usb_udc_attach_driver函数进行匹配USB设备控制器。 遍历udc_list链表,查找fe800000.dwc3 USB设备控制器。 调用UDC驱动接口usb_gadget_udc_start使能USB设备控制器。 调用UDC驱动接口usb_udc_connect_control连接USB主机控制器,这样USB主机就能识别并枚举USB设备。
OTG是一种新的USB传输技术,是On-The-Go的缩写,是一项新兴技术,主要应用于不同的设备或移动设备间的联接,进行数据交换。 图片手机上的OTG功能的作用1、作为电源给另一台手机或平板供电需要设备:一根OTG线+一根USB数据线手机A插OTG线,通过USB数据线将另一端与手机或平板B相连,就可以用A给B充电了。 Type-C 标准中的 Bridge 设备而开发的 USB-C DRP 接口 USB PD 通信芯片。 具备切换 Data Role 功能,实现边充电边听歌需求,并针对各大手机品牌的 USB-C 兼容性进行了 特别优化,适合于手机音频,USB2.0数据传输转接器应用场景。 图片从下图我们可以看到,此PD芯片的外部元器件非常简洁,仅需要2颗MOS控制充放电管理,就能实现边充电边OTG的功能,D+D-直接连到所需的功能处IC即可。图片
关于USB显示器跟HDMI之类的显示器有本质区别,我们需要实现的有两个: 在USB上插入一个显示器,怎么让windows系统能识别到显示器 如何让USB显示器显示对应的屏幕内容。
1.RK3399 USB 下图是RK3399 SOC的框图。RK3399包含了2个USB2.0 Host控制器;两个USB3.0 OTG控制器,同时兼容USB2.0。 2.USB3.0 OTG Controller简介 USB3.0 OTG控制器可以作为主机(Host)、设备(Device),或者根据从USB2.0 PHY和DFP/UFP/Data Role Swap ERDY和burst 基于流(Stream-based)的批量端点可以自动控制启动数据移动 在数据缓冲区中使用等时数据的等时端点 灵活的描述符,具有丰富的功能集,以支持缓冲区中断调节,多次传输,同步,控制和分散的缓冲支持 port 拥有xHCI调试能力 USB3.0/USB2.0并发传输,最大达8.48Gbps的带宽 支持标准或开源的xHCI和类驱动程序 (5)USB 3.0 Dual-Role Device (DRD 控制器内部的USB2.0和USB3.0的PHY和MAC是独立的,各自使用自己的硬件。
1.概述 如下图所示,USB控制器可以呈现出两种不同的状态。USB控制器作为Host时,称为USB主机控制器,使用USB主机控制器驱动。 USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框架。 USB设备控制器通过USB线缆连接USB主机控制器,负责USB数据的发送和接收。 usb_gadget_ops是USB设备控制器的硬件操作函数,包含启动USB设备控制器、停止USB设备控制器、vbus电源等功能。ep0表示端点0,驱动注册时会提前分配好,用于响应控制请求。 )(struct usb_gadget *, const struct usb_ctrlrequest *); // 当主机断开时,所有传输停止后调用,可能会在中断中调用,不可睡眠 void
Transmission Control Protocol (TCP) 用于网络通信的传输控制和网络协议套件,包括很多协议,其中最主要的是TCP和IP协议。 IP协议用于处理数据包,TCP则主要用于网络连接的建立及数据的传输,保障数据包的的可靠传输及传输顺序。 作为IP协议的补充,TCP通过提供可靠的,流式传输的连接,协议弥补了IP协议的很多不足。 可靠传输:头信息中的序号字段用于保障数据的传输及接收,在确认数据丢失的情况下,TCP协议会启动数据的重新传输。 网络自适应:TCP会根据网络状况,动态的进行传输控制,以在不影响网络的情况下,达到最大吞吐。 流控制:TCP负责管理数据缓冲区,协调处理网络冲突以避免缓冲区溢出。 头信息长度:4字节的头信息长度 标志位:6位标志位用以标识传输数据的类型及状态,部分标志位可以同时使用 校验数据 流控制:流控制是通过数据序号进行控制的,发送序号及确认序号。
第17章 TCP:传输控制协议 17.1 引言 本章将介绍T C P为应用层提供的服务,以及 T C P首部中的各个字段。随后的几章我们在了解T C P的工作过程中将对这些字段作详细介绍。 第1 8章描述如何建立和终止一个T C P连接,第1 9和第2 0章将了解正常的数据传输过程,包括交互使用(远程登录)和批量数据传送(文件传输)。
检查各种传输类型的参数是否设置正确。 对于控制传输直接返回0,控制传输使用端点0,无法被匹配 对于等时传输,若使用全速模式则最大包长为1023字节。 主机从不发送NAK,等时传输不使用NAK。 STALL(失败) 表示不被支持的控制请求、控制请求失败或端点失败。 设备在收到不支持的控制请求时,将在数据或状态阶段返回STALL。 为了解决STALL,主机会发送另一个设置信息包,开始新的控制传输。USB 2.0规范称这种失败类型为“协议失败”(protocol stall)。 功能失败的控制端点必须正常响应其他请求,以监视和控制失败状态。端点”能够响应请求“是指能够通信且因此不能被设为设备。等时传输不使用STALL。超高速控制端点不使用功能失败。 清除ep0_out端点pending_list上所有USB请求。 设置ep0_ou端点控制传输的阶段为EP0_SETUP_PHASE,准备被主机枚举。
只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。 2.设备树 下面是USB3.0控制器的设备树节点。 // 端点0控制传输的trb // 使用kzalloc函数分配的, 不是dma_alloc_coherent函数 // Get Status和Set Sel等标准请求需要用到该预分配的 ]; // USB主机控制器资源 // 事件buffer,控制器会将传输的事件信息保存到该缓冲区中,由软件统一处理 struct dwc3_event_buffer 控制器事件传输到dwc3_event_buffer后由CPU处理 (4)核心初始化和USB模式初始化,后面详细分析 (5)初始化调试文件,具体如下图所示,用户可以在用户空间获取USB控制器信息和控制USB 控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux内核版本号写入USB控制器寄存器,以便发现某些版本下的bug (2)
TCP报文段结构 TCP即传输控制协议(Transmission Control Protocol ),它是Internet传输层协议,提供面向连接、 可靠、 有序、 字节流 传输服务。 SYN=1:建立连接请求控制段 。 seq=x:表示传输的报文段的第1个数据字节的序列号是x,此序列号代表整个报文段的序号,(sequence number,序号的意思)。 seq=u+1:表示客户传输的数据的序号是u+1。 TCP可靠数据传输 可靠数据传输:保证接收方应用进程从缓冲区读出的字节流与发送方发出的字节流是完全一样的。 TCP实现可靠数据传输服务的工作机制: 1. TCP流量控制 流量控制:协调发送方与接收方的数据发送与接收速度。 在通信过程中,接收方设置报文段的接收窗口字段来将窗口大小通知给发送方。 ? 5.
USB总线以高效、便捷的特性得到广泛的应用,但是USB本身并不是专为工业控制开发的。工业控制具有实时性强,安全要求高,现场干扰大等特点,因此USB需要进行工业设计才能保证工业应用的可靠性。 支持工业供电、菊花链I/O扩展、浪涌和突波保护,适用于各种工业控制应用。 USB-5800工业特性解析 工业USB防误拔锁紧器:USB产品为方便连接,采用了弹片连接方式,但在工业控制场合,这种方式存在误碰,误拔的风险,使用工业USB防误拔锁紧器,对usb控制模块进行螺丝锁紧, USB断线监测,重连自动恢复:USB产品具有热插拔功能,为保证控制系统自动连接后继续正常运行,模块通过DEVICE ID进行模块锁定,防止出现模块恢复连接后产生混乱。 电压隔离; 6、输出保持:在严重电磁干扰条件下仍保持输出状态,以不干扰现场控制。
(__usb_composite_driver) \ module_driver(__usb_composite_driver, usb_composite_probe, \ usb_composite_unregister 调用UDC驱动接口,找到合适的USB设备控制器绑定composite_driver_template。 遍历udc_list链表,查找第一个USB控制器。 USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。 找到USB设备控制器后,UDC数据结构保存composite_driver_template,此时就完成了UDC绑定composite_driver_template。 分配端点0的usb_request、分配USB请求的缓冲区、设置usb_request的回调函数、复位所有端点,并将gadget的端点数量清零。
我一边查官网文档一边写的,虽然有send方法,但不知道receive方法在哪,最终还是用emit。
今天要讲的sctp协议,全称是Stream Control Transmission Protocol,翻译成中文就是流控制传输协议。是由IETF在RFC 4960中提出的。 很明显SCTP协议是对TCP和UDP协议的提升,具体而言SCTP协议既提供了UDP协议的面向消息的特性,同时又具有TCP协议的可靠性、顺序传输和拥塞控制的功能,并且还提供了多宿主和冗余路径的功能,从而提高弹性和可靠性 TCP当然好,我们知道UDP是不可靠的消息传输方式,而TCP是可靠的消息传输方式。 UDP和TCP已经被应用在非常广泛的应用场景中。 TCP和UDP最大的不同是TCP是可靠的,也就是说TCP提供了通过 Internet 可靠地传输数据的方法。 但是TCP为了保证可靠的数据传输,对传输做了一些限制。 当这些数据需要在IP中进行传输的时候,SCTP会将这些数据包打包成为SCTP packets,每个SCTP packet,都包含一个packet header,如果需要的话还可以包含控制块,最后跟着的是数据块