前言: 昨个帮同事忙, 应下了一个Android 与PC端通信的Demo,遂今早上折腾了一会,也算是写出来了,而且发现了一个比较严重的问题:参考资料都是12年,13年的,很多的Sample 都是不能用的...---- Android Code 首先是清单文件中的权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE
协议 6.1 USB基本规范 USB在逻辑上被分为三层:信号层、协议层、数据传输层。...0x4B 0x5A 0x1E 接收器无错的接收数据包 接收设备忙不能接收数据 设备出错通信不上 专用包 (special) 前同步(PRE) 0x2C 主机发送的前同步字。...,用于传输与时效相关的信息,并且在数据中保存时间戳的信息 中断传输(interrput transfers):周期性,低频率,允许有限延迟的通信 大容量数据传输(bulk transfers):...非周期性,大容量突发数据的通信,数据可以占用任意带宽,并容忍延迟 6.6 USB枚举过程 当一个USB设备插入主机后,会有以下活动: 供电 复位 获取device descriptor 复位(可选...的协议类型、端点的包数据的最大长度等,每个USB设备只有一个设备描述符。
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 1....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...主机从总线上的某个USB设备接收一个数据包的过程。...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。...3.1.2 数据阶段 根据数据阶段的数据传输的方向,控制传输又可分为3种类型: 控制读取(读取USB描述符) 控制写入(配置USB设备) 无数据控制 数据传输阶段:用来传输主机与设备之间的数据
USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。 2....包(Packet) 包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。数据在 USB总线上的传输以包为单位,包只能在帧内传输。...主机从总线上的某个USB设备接收一个数据包的过程。...输出(OUT)事务处理 输出事务处理:表示USB主机把一个数据包输出到总线上的某个USB设备接收的过程。...4.1.2 数据阶段 根据数据阶段的数据传输的方向,控制传输又可分为3种类型: 控制读取(读取USB描述符) 控制写入(配置USB设备) 无数据控制 数据传输阶段:用来传输主机与设备之间的数据。
USB3.0 PHY简介 首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。...要实现USB通信大致需要两部分:Controller和PHY两部分,Controller大多为数字逻辑实现(逻辑控制主要分为:MAC、CSR以及FIFO,MAC部分主要按照USB协议进行数据的打包和分解...大致的通信方式如下图所示: PHY部分负责最底层的信号转换,作用类似于网口的PHY,这里如果大家需要了解具体的工作可以查看usb specification,因为和本文关系不大,所以不过多介绍了。...举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY的方式,那么我的接口基本使用ULPI接口(降低pin的数量); USB3316 芯片逻辑框图 (来源:芯片数据手册.../601Q 芯片逻辑框图 (来源:芯片数据手册) 上图中可以看到FPGA和controller通信方式为FIFO或者SPI等接口,SPI主要时用在2.0/1.1时代,典型代表(MAX3421E)。
,可以先输入uname -r命令查看。...2.3 查看系统是否安装usbmon 模块 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /sys/module/usbmon...2.4 查看usbmon可以识别到的USB总线编号 root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /sys/kernel...2.6 监控指定总线上通信的数据 为了只看这个想要的设备数据,可以过滤一下。 后面的 "1:010" ,1表示总线编号。 010表示设备编号。 通过lsusb命令可以看到。...cat /sys/kernel/debug/usb/usbmon/1u | grep "1:010" 输入: cat /sys/kernel/debug/usb/usbmon/3u 读取总线上全部数据
好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程...我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信。...2.打开设备 接下来,我们需要打开刚刚搜索到的usb设备,我们可以将平板与usb外设之间的连接想象成一个通道,只有把通道的门打开后,两边才能进行通信。...3.数据传输 到这里,我们已经可以与usb外设进行数据传输了,首先来看怎么向usb设备发送数据。...转串口通信的基本流程,有些地方写的不是很全面,比如接收usb外设数据的方法应该还有别的,不足之处欢迎指正。
试过很多官方驱动,都不太好,每个驱动都测试了5G, 3.3、不同驱动的对比测试 测试位置:距离路由器隔一堵墙的房间那头, USB3.0无线网卡稳定在130Mbps的下载速度 测网速:www.speedtest.cn...查看连接速度cmd命令: netsh wlan sh i 驱动版本 连接速度 说明 21.10.1 300M以下 店家推荐的,最早的驱动,网速还可以,但是200M带宽好像也偶尔跑不满,连接速度相对稳定
(3)缺省态 USB在被配置之前,通过地址0与主机进行通信。例如: ?...(4)地址态 经过了配置,USB设备复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态;例如: ?...USB的包(宏观上来说)有四种:令牌包、数据包、握手包、特殊包。包是USB传输数据的基本单位。每种类型的包都会有不同的域来构成。...USB的域是USB传输中最小的单位,域主要分为7类,分别是:同步域(SYNC)、标识域(PID)、地址域(ADDR)、端点域(ENDP)、帧起始域(SOF)、数据域(DATA)、CRC校验域(CRC)。...枚举将是整个USB学习的重中之重,枚举就是主机从设备读取各种描述符信息,这样主机就可以根据这些信息加载合适的的驱动程序,从而知道是什么类型的设备,如何进行通信等等。
USB是一种主从通信机制,所有互相连接在一起的设备中只有一个主机,其余的都是从机。从机不能主动发起通信,主机轮流对各从机进行访问。...USB协议比较复杂,这是因为USB的硬件接口线比较少,要完成很多的功能就只能把协议做的复杂。...USB协议里面有个描述符,分为好多个子类(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符、设备限定符描述符)。这些描述符其实就是一个个数据结构,对应程序里的几个结构体。...表征USB的状态,在主机询问时,将自身的状态汇报给主机。比如: 主机:性别? 从机:男 主机:身高? 从机:180 ...... 从机回答的这些自身属性的就是那些描述符中的数据。...不考虑USB具体的协议的话,数据传输并不复杂,就是主机轮询各个从机数据,传输按照功能等分了四种,分别是控制传输,中断传输,同步传输,批量传输。不同的USB设备使用各种传输进行数据收发。
本文告诉大家如何在 dot net core 使用 usb 首先需要打开 Nuget 安装 CoreCompat.LibUsbDotNet ,这是一个usb连接的库。 ?...var ec = writer.Write(sejDqhaquwy, 2000, out var transferLength); 从代码可以看到 Write 有很多个重载,上面使用的重载是 数据...transferLength) == ErrorCode.Success) { Console.WriteLine("写入成功"); } 读取数据可以使用下面代码...sejDqhaquwy, 2000, out transferLength) == ErrorCode.Success) { } 读取也有很多个重载,这里使用的是 读取数据存放的数组...串口通信 如果需要在 dotnet core 引用 System.IO.Ports 可以在程序包管理器输入下面代码 Install-Package System.IO.Ports -Source https
FPGA和USB3.0通信-联合测试(二) 本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA...FX3应用中后半部分测试已经完成暨FX3和PC之间的通信: 接下来就是通过FX3这个“桥梁”实现FPGA与PC之间的通信。...同时也可以在ILA窗口读取到相应的数据,结合发送数据可以查看一下我们设计的时序对不对。...StreamOUT 实例、Streamer 中查看数据吞吐量等测试 《AN65974 - Designing with the EZ-USB® FX3™ Slave FIFO Interface》这个文件夹下...上面的测试就不一一展示了,具体可以查看上面的官方文档,每一个步骤都有详细的说明和图示说明。
FPGA和USB3.0通信-硬件的测试 本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA的设计...设备管理器的VID/PID 2、基于内部DMA的loopback传输测试 何为LoopBack,通俗点就是FX3接收到什么数据就发送什么数据(类似串口回环)。...在上诉过程中,FX3内部ARM核(ARM9)是不参与数据本身传输的,固件配置好后,内部通过DMA进行数据的搬运。 在上一节基础上测试FX3的硬件。...3、FX3数据吞吐量测试 编译固件 本次使用的是SDK目录下: ❝C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples...FPGA和USB3.0通信-USB3.0协议介绍 FPGA和USB3.0通信-USB3.0 PHY介绍 FPGA和USB3.0通信-FX3硬件设计简谈 FPGA和USB3.0通信-SDK的安装
事实上通过wireshark,我们可以捕获到usb设备发送给我们主机的数据,这样就可以进一步研究了。...如下图: 上图是连接在我电脑上的USB设备列表,通过lsusb查看命令。 例如说,我有一个无线鼠标Logitech。它是属于HID设备。...这个设备正常的运行,并且通过lsusb这个命令查看所有usb设备,现在大家能找出哪一条是这个鼠标吗??...Bus 003 Device 010代表usb设备正常连接,这点需要记下来。 准备 我们用root权限运行Wireshark捕获USB数据流。但是通常来说我们不建议这么做。...通过这些,我们可以了解到usb设备与主机之间的通信过程和工作原理,也许我们就可以把这些知识用到逆向工程中,得到一些东西。好了,就到这里!!!
atbus是我按之前的思路写得服务器消息通信中间件,目标是简化服务器通信的流程,能够自动选择最优路线,自动的断线重连和通信通道维护。能够跨平台并且高效。...虽然现在忘记了那些个框架的名字,我以前接触过的一些用于游戏的通信中间件,QPS在10w-20w/s之间已经算是比较高的了。...而且这个中间件主要是面向游戏服务器的通信,而在一个游戏服务器进程中,一般不会有这么高的请求频次。而且游戏服务器一般是逻辑比较复杂,CPU和内存比较容易成为瓶颈。...这个设计详见:关于BUS通信系统的一些思考(二) 或 https://github.com/atframework/libatbus/tree/master/doc 对于网络通道的大数据包,读性能仍然是差不多...现在如果某个连接有数据正在发送,则需要先把要发送的数据保存下来,直接返回成功,然后发送完毕后对保存的数据做合包,然后再一起发送。
FPGA和USB3.0通信-UVC摄像机 本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA的设计...PS:关于上面的一些术语,像RAW数据、RGB、YUV等可以查看《ISP(图像信号处理)算法概述、工作原理、架构、处理流程》。...UVC传输的USB接口,就是传输的YUV422非压缩颜色格式数据,所以我们最后传输的就是YUV422数据。...内有中文版详细说明,篇幅有限请自行查看。...请注意,执行读操作时,没有任何具体信号表示已从USB获取了短数据包。空标志必须由外部主设备监控,以确定读 取完所有数据的时间。
提前罗列出来: USB 系统是一个 Host 对应多个设备,要传输数据首先要通知设备: 发出 IN 令牌包:表示想读数据,里面含有设备地址 发出 OUT 令牌包:表示想写数据,里面含有设备地址 数据阶段...2.3 包格式 USB 总线上传输的数据以包为单位。USB 包里含有哪些内容("域")?...有哪些 USB 包?...当检测到对方使用的数据包类型不对时,USB 系统认为发生了错误。...安装"usbprotocolsuite"后,可以在文档目录里找打很多示程序(后缀名为usb): 使用"usbprotocolsuite"打开这些文件,即可体验 USB 数据传输:
不管怎样,为了简便开发,通信选择串口通信。...pip insatll pyserial 查找可用端口 硬件连接:stm32使用ch340g的串口输出,接入到树莓派的USB口上。 通过如下代码查找端口,通过拔插观察实际端口。...一般来说,是一个ttyUSB的标号 python3 -m serial.tools.list_ports 最简测试代码 进入python3环境后,该代码实现了读取数据(这里stm32端一直在发送数据,接收到数据表示正常...) 发送数据通过dev.write即可,但是需要发送编码数据如:b'\xd5\xbd\xbd\xa2STM32\xbf\xaa\xb7\xa2\xb0\xe5(什么什么的) import serial...这里开了两个线程,进行数据测试。
FPGA和USB3.0通信-UVC摄像机 本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA的设计
近日, 来自澳大利亚阿德莱德大学的研究人员演示了通过USB小工具来监控旁边插入的USB设备的数据流动。 这个间谍小工具可以拦截相邻端口的电信号,来把敏感信息泄露给攻击者。...串扰: 串扰(英文:crosstalk),又称串音干扰,是电子学和通信学的专业术语。 串扰在电子学上是指两条信号线之间的耦合现象。...“在我们的项目中,我们演示了可以从USB集线器上的相邻端口监控USB数据线的电压起伏。” “我们的研究表明,如果在USB hub上的相邻端口上插上恶意设备或被篡改的设备,那么敏感信息可能会泄露。...在攻击场景下,恶意的USB设备插入被攻击设备的相邻端口,攻击者可以监控被攻击设备的数据流动,收集这些信息并将这些信息发送回自己的服务器。在恶意设备相邻端口传输的任何未被加密的数据都会被收集到。...串扰泄露可以收集到相邻端口的任何未加密的数据。 研究人员将一个现成的USB台灯进行改装,用它来记录相邻USB键盘的每一次键击,并通过蓝牙将数据发送回另一台计算机。
领取专属 10元无门槛券
手把手带您无忧上云